pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/x11/xorg-libs/patches Actually add the patch as well.



details:   https://anonhg.NetBSD.org/pkgsrc/rev/d5cf082c57e9
branches:  trunk
changeset: 517794:d5cf082c57e9
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Wed Aug 23 00:11:08 2006 +0000

description:
Actually add the patch as well.

diffstat:

 x11/xorg-libs/patches/patch-br |  103 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diffs (107 lines):

diff -r 89cac88e0944 -r d5cf082c57e9 x11/xorg-libs/patches/patch-br
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/x11/xorg-libs/patches/patch-br    Wed Aug 23 00:11:08 2006 +0000
@@ -0,0 +1,103 @@
+$NetBSD: patch-br,v 1.1 2006/08/23 00:11:08 joerg Exp $
+
+--- lib/font/bitmap/pcfread.c.orig     2005-07-09 08:36:12.000000000 +0200
++++ lib/font/bitmap/pcfread.c
+@@ -45,6 +45,7 @@ from The Open Group.
+ #endif
+ 
+ #include <stdarg.h>
++#include <stdint.h>
+ 
+ void
+ pcfError(const char* message, ...)
+@@ -133,6 +134,10 @@ pcfReadTOC(FontFilePtr file, int *countp
+       return (PCFTablePtr) NULL;
+     count = pcfGetLSB32(file);
+     if (IS_EOF(file)) return (PCFTablePtr) NULL;
++    if (count < 0 || count > INT32_MAX / sizeof(PCFTableRec)) {
++      pcfError("pcfReadTOC(): invalid file format\n");
++      return NULL;
++    }
+     tables = (PCFTablePtr) xalloc(count * sizeof(PCFTableRec));
+     if (!tables) {
+       pcfError("pcfReadTOC(): Couldn't allocate tables (%d*%d)\n", count, sizeof(PCFTableRec));
+@@ -252,6 +257,10 @@ pcfGetProperties(FontInfoPtr pFontInfo, 
+     if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
+       goto Bail;
+     nprops = pcfGetINT32(file, format);
++    if (nprops <= 0 || nprops > INT32_MAX / sizeof(FontPropRec)) {
++      pcfError("pcfGetProperties(): invalid nprops value (%d)\n", nprops);
++      goto Bail;
++    }
+     if (IS_EOF(file)) goto Bail;
+     props = (FontPropPtr) xalloc(nprops * sizeof(FontPropRec));
+     if (!props) {
+@@ -267,6 +276,13 @@ pcfGetProperties(FontInfoPtr pFontInfo, 
+       props[i].name = pcfGetINT32(file, format);
+       isStringProp[i] = pcfGetINT8(file, format);
+       props[i].value = pcfGetINT32(file, format);
++      if (props[i].name < 0 
++          || (isStringProp[i] != 0 && isStringProp[i] != 1)
++          || (isStringProp[i] && props[i].value < 0)) {
++          pcfError("pcfGetProperties(): invalid file format %d %d %d\n",
++                   props[i].name, isStringProp[i], props[i].value);
++          goto Bail;
++      }
+       if (IS_EOF(file)) goto Bail;
+     }
+     /* pad the property array */
+@@ -282,6 +298,7 @@ pcfGetProperties(FontInfoPtr pFontInfo, 
+     }
+     if (IS_EOF(file)) goto Bail;
+     string_size = pcfGetINT32(file, format);
++    if (string_size < 0) goto Bail;
+     if (IS_EOF(file)) goto Bail;
+     strings = (char *) xalloc(string_size);
+     if (!strings) {
+@@ -422,6 +439,10 @@ pcfReadFont(FontPtr pFont, FontFilePtr f
+     else
+       nmetrics = pcfGetINT16(file, format);
+     if (IS_EOF(file)) goto Bail;
++    if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++      pcfError("pcfReadFont(): invalid file format\n");
++      goto Bail;
++    }
+     metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+     if (!metrics) {
+       pcfError("pcfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
+@@ -447,7 +468,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr f
+     nbitmaps = pcfGetINT32(file, format);
+     if (nbitmaps != nmetrics || IS_EOF(file))
+       goto Bail;
+-
++    /* nmetrics is alreadt ok, so nbitmap also is */
+     offsets = (CARD32 *) xalloc(nbitmaps * sizeof(CARD32));
+     if (!offsets) {
+       pcfError("pcfReadFont(): Couldn't allocate offsets (%d*%d)\n", nbitmaps, sizeof(CARD32));
+@@ -461,6 +482,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr f
+     for (i = 0; i < GLYPHPADOPTIONS; i++) {
+       bitmapSizes[i] = pcfGetINT32(file, format);
+       if (IS_EOF(file)) goto Bail;
++      if (bitmapSizes[i] < 0) goto Bail;
+     }
+     
+     sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)];
+@@ -536,6 +558,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr f
+       if (IS_EOF(file)) goto Bail;
+       if (nink_metrics != nmetrics)
+           goto Bail;
++      /* nmetrics already checked */
+       ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo));
+       if (!ink_metrics) {
+           pcfError("pcfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo));       
+@@ -809,6 +832,10 @@ pmfReadFont(FontPtr pFont, FontFilePtr f
+     else
+       nmetrics = pcfGetINT16(file, format);
+     if (IS_EOF(file)) goto Bail;
++    if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++      pcfError("pmfReadFont(): invalid file format\n");
++      goto Bail;
++    }
+     metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+     if (!metrics) {
+       pcfError("pmfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));



Home | Main Index | Thread Index | Old Index