+++ This bug was initially created as a clone of Bug #166856 +++
What is going on here is that an X client is trying to allocate a pixmap
of size 9GB. Because of
an integer overflow this is not caught and instead a pixmap of size 1GB
is allocated. When the
client then tries to access the pixmap we get a server crash.
This seems exploitable to me: a client could allocate a pixmap of size
4GB + 4byte, causing
the server to allocate just 4 bytes. Then the client could use
XDrawPoint() and XGetImage() to
read and write any location in the X server address space. It could
first use XGetImage to search
for the stack, then use XDrawPoint to rewrite it to return into another
pixmap the client allocated,
thus getting the X server to execute arbitrary code.
This issue was discovered by Luke Hutchison, with the security implications and
patch found by Soeren Sandmann.
Public, removing embargo
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.