Originally Common Vulnerabilities and Exposures assigned an identifier
of CVE-2010-4543 to the following vulnerability:
Heap-based buffer overflow in the read_channel_data function in file-psp.c
in the Paint Shop Pro (PSP) plugin in GIMP 2.6.11 allows remote attackers to
cause a denial of service (application crash) or possibly execute arbitrary
code via a PSP_COMP_RLE (aka RLE compression) image file that begins a long
run count at the end of the image. NOTE: some of these details are obtained
from third party information.
Upstream bug report:
Original patch proposal from Vincent Untz:
And final patch applied by Gimp upstream was:
Later it was recognized by Nils Philippsen this patch to be incomplete
due the following reasoning:
I've looked at this a bit further and found that even Vincent Untz's patch
didn't take into account that the code that did runlength decoding actually
advances by bytespp through the buffer into which it writes, so the runcount
needs to be clamped to "(endq - q) / bytespp"(*) in order that subsequent loops
don't advance past the end of the buffer.
(*): This division is actually safe as bytespp is set by the plugin to one of
several known values, therefore can't be 0.
Proposed patch from Nils Philippsen to address this problem:
diff --git a/plug-ins/common/file-psp.c b/plug-ins/common/file-psp.c
index 7e620fb..9ae5395 100644
@@ -1200,7 +1200,7 @@ read_channel_data (FILE *f,
fread (buf, runcount, 1, f);
/* prevent buffer overflow for bogus data */
- runcount = MIN (runcount, endq - q);
+ runcount = MIN (runcount, (endq - q) / bytespp);
if (bytespp == 1)
The CVE identifier of CVE-2011-1782 has been assigned to this issue.
Created gimp tracking bugs for this issue
Affects: fedora-all [bug 706939]