diff options
Diffstat (limited to 'x11-base/xorg-server/files/xorg-xserver-1.4-cve-2008-2360.diff')
-rw-r--r-- | x11-base/xorg-server/files/xorg-xserver-1.4-cve-2008-2360.diff | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/x11-base/xorg-server/files/xorg-xserver-1.4-cve-2008-2360.diff b/x11-base/xorg-server/files/xorg-xserver-1.4-cve-2008-2360.diff new file mode 100644 index 0000000..f14afce --- /dev/null +++ b/x11-base/xorg-server/files/xorg-xserver-1.4-cve-2008-2360.diff @@ -0,0 +1,32 @@ +diff --git a/render/glyph.c b/render/glyph.c +index 583a52b..42ae65d 100644 +--- a/render/glyph.c ++++ b/render/glyph.c +@@ -42,6 +42,12 @@ + #include "picturestr.h" + #include "glyphstr.h" + ++#if HAVE_STDINT_H ++#include <stdint.h> ++#elif !defined(UINT32_MAX) ++#define UINT32_MAX 0xffffffffU ++#endif ++ + /* + * From Knuth -- a good choice for hash/rehash values is p, p-2 where + * p and p-2 are both prime. These tables are sized to have an extra 10% +@@ -626,8 +632,12 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth) + int size; + GlyphPtr glyph; + int i; +- +- size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]); ++ size_t padded_width; ++ ++ padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]); ++ if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height) ++ return 0; ++ size = gi->height * padded_width; + glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec)); + if (!glyph) + return 0; |