First published: Thu Nov 26 2009(Updated: )
SuSE reported a buffer overflow in FoFiType1::parse affecting older xpdf versions. Code snippets from fofi/FoFiType1.cc: 133 void FoFiType1::parse() { ... 163 line = getNextLine(line); 164 for (j = 0; j < 300 && line; ++j) { 165 line1 = getNextLine(line); 166 if ((n = line1 - line) > 255) { 167 n = 255; 168 } 169 strncpy(buf, line, n); getNextLine can, however, return NULL: 117 char *FoFiType1::getNextLine(char *line) { 118 while (line < (char *)file + len && *line != '\x0a' && *line != '\x0d') { 119 ++line; 120 } 121 if (line < (char *)file + len && *line == '\x0d') { 122 ++line; 123 } 124 if (line < (char *)file + len && *line == '\x0a') { 125 ++line; 126 } 127 if (line >= (char *)file + len) { 128 return NULL; 129 } Therefore, (line1 - line) is not defined / results in negative value n. That value is later passed to strncpy, causing overflow of buf buffer.
Credit: secalert@redhat.com
Affected Software | Affected Version | How to fix |
---|---|---|
Gnome Gpdf | =2.8.2 | |
Kde Kpdf | =3.3.1 | |
Kde Kdegraphics | =3.3.1 | |
Xpdf Xpdf | =3.0.0 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.