JDK-8064859 : NullPointerException when calling ImageIO.write without having enough permission
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.imageio
  • Affected Version: 7u60
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux
  • CPU: x86_64
  • Submitted: 2014-07-21
  • Updated: 2015-09-25
  • Resolved: 2015-09-25
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Linux drums 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

A DESCRIPTION OF THE PROBLEM :
Writing an image using the ImageIO class while not having enough permissions to do so throws a NullPointerException:
Caused by: java.lang.NullPointerException
        at javax.imageio.ImageIO.write(ImageIO.java:1538)
        at com.atlassian.jira.avatar.AvatarManagerImpl.processImage(AvatarManagerImpl.java:255)
        at com.atlassian.jira.avatar.AvatarManagerImpl.create(AvatarManagerImpl.java:153)
        at com.atlassian.jira.avatar.AvatarPickerHelperImpl.convertTemporaryToReal(AvatarPickerHelperImpl.java:174)
        at sun.reflect.GeneratedMethodAccessor1694.invoke(Unknown Source)

Looking at the source code, the createImageOutputStream function can return a null stream, but nullity is not checked when closing it.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The write method throws a proper exception, that let the user understand there is a security violation.
ACTUAL -
The write method throws a NullPointerException.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
NullPointerException:
Caused by: java.lang.NullPointerException
        at javax.imageio.ImageIO.write(ImageIO.java:1538)
        at com.atlassian.jira.avatar.AvatarManagerImpl.processImage(AvatarManagerImpl.java:255)
        at com.atlassian.jira.avatar.AvatarManagerImpl.create(AvatarManagerImpl.java:153)
        at com.atlassian.jira.avatar.AvatarPickerHelperImpl.convertTemporaryToReal(AvatarPickerHelperImpl.java:174)
        at sun.reflect.GeneratedMethodAccessor1694.invoke(Unknown Source)

REPRODUCIBILITY :
This bug can be reproduced always.


Comments
This one should be a duplicate of an old bug, Andrew will verify
13-11-2014

Is it not possible to make some progress without a test case? As noted in the description, from the code: http://tvp129231.uk.oracle.com:8080/source/xref/jdk7u-dev/jdk/src/share/classes/javax/imageio/ImageIO.java#createImageOutputStream createImageOutputStream can return null and it would then case the exception at line 1538: http://tvp129231.uk.oracle.com:8080/source/xref/jdk7u-dev/jdk/src/share/classes/javax/imageio/ImageIO.java#1538
13-11-2014

No testcase
21-07-2014