summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2013-04-12 21:17:28 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2013-04-26 17:22:43 -0700
commit8f677eaea05290531d007d1fec2768119926088d (patch)
tree7d246b5b1b24d09470b3664cc1ac37a9eebb4a14
parent1b98fd6a2e8c00a563187849a585e68c7344468b (diff)
signedness bug & integer overflow in _XcursorFileHeaderCreate() [CVE-2013-2003]
When parsing cursor files, a user defined (e.g. through environment variables) cursor file is opened and parsed. The header is read in _XcursorReadFileHeader(), which reads an unsigned int for the number of toc structures in the header, but it was being passed to _XcursorFileHeaderCreate() as a signed int to allocate those structures. If the number was negative, it would pass the bounds check and could overflow the calculation for how much memory to allocate to store the data being read, leading to overflowing the buffer with the data read from the user controlled file. Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--src/file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/file.c b/src/file.c
index efe6d4b..ce9de78 100644
--- a/src/file.c
+++ b/src/file.c
@@ -205,7 +205,7 @@ _XcursorFileHeaderDestroy (XcursorFileHeader *fileHeader)
}
static XcursorFileHeader *
-_XcursorFileHeaderCreate (int ntoc)
+_XcursorFileHeaderCreate (XcursorUInt ntoc)
{
XcursorFileHeader *fileHeader;