harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "chunrong lai" <chunrong...@gmail.com>
Subject [classlib][imageio] a potential bug in reading PNG file
Date Tue, 10 Apr 2007 09:34:26 GMT
hi, colleagues:

   I met some problem in function canDecodeInput of PNGImageReaderSpi to
guarantee the reading of  a complete file header.  The code snippet with my
modification is given below.

//classlib\modules\imageio\src\main\java\org\apache\harmony\x\imageio\plugins\png\PNGImageReaderSpi
    @Override
    public boolean canDecodeInput(Object source) throws IOException {
        ImageInputStream markable = (ImageInputStream) source;
        markable.mark();

        byte[] signature = new byte[8];
        markable.seek(0);
        //markable.read(signature, 0,
8);                                             //original code
        int nBytes =    markable.read(signature, 0,
8);                          //my new code
        if(nBytes != 8) markable.read(signature, nBytes, 8-nBytes);
//my new code
        markable.reset();

         // PNG signature: 137 80 78 71 13 10 26 10
        return  (signature[0] & 0xFF) == 137 &&
                (signature[1] & 0xFF) == 80 &&
                (signature[2] & 0xFF) == 78 &&
                (signature[3] & 0xFF) == 71 &&
                (signature[4] & 0xFF) == 13 &&
                (signature[5] & 0xFF) == 10 &&
                (signature[6] & 0xFF) == 26 &&
                (signature[7] & 0xFF) == 10;
    }

   The potential bug can happen in javax.imageio.ImageIOTest (in classlib
test).

   The test will fail if the specific image file is checked with JPG format
before PNG format, but the order in my opinion should not really matter
between JPGImageReader and PNGImageReader in the iterator. Would someone
please review this issue and probably fix the bug? Thanks.

-chunrong

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message