BasicImageRewriter bad memory allocation arguments
--------------------------------------------------

                 Key: SHINDIG-906
                 URL: https://issues.apache.org/jira/browse/SHINDIG-906
             Project: Shindig
          Issue Type: Bug
          Components: Gadget Rendering Server (Java)
    Affects Versions: trunk
         Environment: Win32, 32bit
            Reporter: Greg Squires


The Basic ImageRewriter relies on Sanselan.getICCProfile, which has limited 
bounds checking. Other metadata functions are also affected.

This function can throw an Exception in ByteSourceArray.java due to a negative 
byte[] allocation size. The length argument has been found to wrap when called 
from IccProfileParser.java.

In 64bit machines, issues related to incorrect metadata, or ICC data can lead 
to incorrect and excess memory allocations, which often fail. These large 
numbers however modulo on 32bit and result in negative signed values.

The shindig test JPEGOptimizerTest behaves differently on 64 bit and 32 bit 
platforms.

Line 45 ByteSourceArray.java:

        public byte[] getBlock(int start, int length) throws IOException
        {
                if (start + length > bytes.length)
                        throw new IOException("Could not read block (block 
start: " + start
                                        + ", block length: " + length + ", data 
length: "
                                        + bytes.length + ").");

                byte result[] = new byte[length];
                System.arraycopy(bytes, start, result, 0, length);
                return result;
        }



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to