diff options
Diffstat (limited to 'src/fontfile')
-rw-r--r-- | src/fontfile/bitsource.c | 2 | ||||
-rw-r--r-- | src/fontfile/bufio.c | 2 | ||||
-rw-r--r-- | src/fontfile/decompress.c | 2 | ||||
-rw-r--r-- | src/fontfile/defaults.c | 2 | ||||
-rw-r--r-- | src/fontfile/dirfile.c | 22 | ||||
-rw-r--r-- | src/fontfile/ffcheck.c | 2 | ||||
-rw-r--r-- | src/fontfile/fileio.c | 2 | ||||
-rw-r--r-- | src/fontfile/filewr.c | 2 | ||||
-rw-r--r-- | src/fontfile/fontdir.c | 15 | ||||
-rw-r--r-- | src/fontfile/fontencc.c | 2 | ||||
-rw-r--r-- | src/fontfile/fontfile.c | 44 | ||||
-rw-r--r-- | src/fontfile/fontscale.c | 2 | ||||
-rw-r--r-- | src/fontfile/gunzip.c | 2 | ||||
-rw-r--r-- | src/fontfile/printerfont.c | 2 | ||||
-rw-r--r-- | src/fontfile/register.c | 2 | ||||
-rw-r--r-- | src/fontfile/renderers.c | 2 |
16 files changed, 80 insertions, 27 deletions
diff --git a/src/fontfile/bitsource.c b/src/fontfile/bitsource.c index 0230535..b487ce4 100644 --- a/src/fontfile/bitsource.c +++ b/src/fontfile/bitsource.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/bitsource.c,v 1.4 2001/12/14 19:56:49 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/bitsource.c,v 1.3 2001/01/17 19:43:29 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/bufio.c b/src/fontfile/bufio.c index 19d61bf..3f6d461 100644 --- a/src/fontfile/bufio.c +++ b/src/fontfile/bufio.c @@ -27,7 +27,7 @@ other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/bufio.c,v 3.10 2002/05/31 18:45:49 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/bufio.c,v 3.9 2001/12/14 19:56:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/decompress.c b/src/fontfile/decompress.c index 187254d..d35f5a6 100644 --- a/src/fontfile/decompress.c +++ b/src/fontfile/decompress.c @@ -45,7 +45,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/decompress.c,v 1.5 2001/12/14 19:56:50 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/decompress.c,v 1.4 2001/01/17 19:43:29 dawes Exp $ */ /* * decompress - cat a compressed file */ diff --git a/src/fontfile/defaults.c b/src/fontfile/defaults.c index 6425d20..fb9dc81 100644 --- a/src/fontfile/defaults.c +++ b/src/fontfile/defaults.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/defaults.c,v 1.8 2001/12/14 19:56:50 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/defaults.c,v 1.7 2001/01/17 19:43:29 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/dirfile.c b/src/fontfile/dirfile.c index bb7c339..688bae1 100644 --- a/src/fontfile/dirfile.c +++ b/src/fontfile/dirfile.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/dirfile.c,v 3.16 2003/04/07 16:23:31 eich Exp $ */ +/* $XFree86: xc/lib/font/fontfile/dirfile.c,v 3.17 2004/02/08 01:52:27 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -68,6 +68,9 @@ FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir) FontDirectoryPtr dir = NullFontDirectory; + if (strlen(directory) + 1 + sizeof(FontDirFile) > sizeof(dir_file)) + return BadFontPath; + #ifdef FONTDIRATTRIB /* Check for font directory attributes */ #ifndef __UNIXOS2__ @@ -159,6 +162,9 @@ FontFileDirectoryChanged(FontDirectoryPtr dir) char dir_file[MAXFONTFILENAMELEN]; struct stat statb; + if (strlen(dir->directory) + sizeof(FontDirFile) > sizeof(dir_file)) + return FALSE; + strcpy (dir_file, dir->directory); strcat (dir_file, FontDirFile); if (stat (dir_file, &statb) == -1) @@ -207,6 +213,8 @@ AddFileNameAliases(FontDirectoryPtr dir) continue; len = strlen (fileName) - renderer->fileSuffixLen; + if (len >= sizeof(copy)) + continue; CopyISOLatin1Lowered (copy, fileName, len); copy[len] = '\0'; name.name = copy; @@ -256,9 +264,13 @@ ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) int status = Successful; struct stat statb; + if (strlen(directory) >= sizeof(alias_file)) + return BadFontPath; dir = *pdir; strcpy(alias_file, directory); if (!isFile) { + if (strlen(directory) + 1 + sizeof(FontAliasFile) > sizeof(alias_file)) + return BadFontPath; if (directory[strlen(directory) - 1] != '/') strcat(alias_file, "/"); strcat(alias_file, FontAliasFile); @@ -291,6 +303,10 @@ ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) status = AllocError; break; case NAME: + if (strlen(lexToken) >= sizeof(alias)) { + status = BadFontPath; + break; + } strcpy(alias, lexToken); token = lexAlias(file, &lexToken); switch (token) { @@ -307,6 +323,10 @@ ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) status = AllocError; break; case NAME: + if (strlen(lexToken) >= sizeof(font_name)) { + status = BadFontPath; + break; + } CopyISOLatin1Lowered(alias, alias, strlen(alias)); CopyISOLatin1Lowered(font_name, lexToken, strlen(lexToken)); if (!FontFileAddFontAlias (dir, alias, font_name)) diff --git a/src/fontfile/ffcheck.c b/src/fontfile/ffcheck.c index 5289b7f..8a97a6e 100644 --- a/src/fontfile/ffcheck.c +++ b/src/fontfile/ffcheck.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/ffcheck.c,v 1.16 2003/05/27 22:26:49 tsi Exp $ */ +/* $XFree86: xc/lib/font/fontfile/ffcheck.c,v 1.15tsi Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/fileio.c b/src/fontfile/fileio.c index 8a7cb03..cdcc853 100644 --- a/src/fontfile/fileio.c +++ b/src/fontfile/fileio.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/fileio.c,v 3.10 2002/05/31 18:45:50 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/fileio.c,v 3.9 2001/12/14 19:56:51 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/filewr.c b/src/fontfile/filewr.c index 8de8f26..5deb1a5 100644 --- a/src/fontfile/filewr.c +++ b/src/fontfile/filewr.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/filewr.c,v 3.7 2002/05/31 18:45:50 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/filewr.c,v 3.6 2001/12/14 19:56:51 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/fontdir.c b/src/fontfile/fontdir.c index 28e58b6..31b3983 100644 --- a/src/fontfile/fontdir.c +++ b/src/fontfile/fontdir.c @@ -1,3 +1,4 @@ +/* $XdotOrg: xc/lib/font/fontfile/fontdir.c,v 1.1.4.3.4.1 2004/03/04 17:47:11 eich Exp $ */ /* $Xorg: fontdir.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ /* @@ -629,6 +630,9 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName) FontScalableExtraPtr extra; FontEntryPtr bitmap = 0, scalable; Bool isscale; +#ifdef FONTDIRATTRIB + Bool scalable_xlfd; +#endif renderer = FontFileMatchRenderer (fileName); if (!renderer) @@ -656,8 +660,15 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName) !(vals.values_supplied & ENHANCEMENT_SPECIFY_MASK); #ifdef FONTDIRATTRIB #define UNSCALED_ATTRIB "unscaled" - /* For scalable fonts, check if the "unscaled" attribute is present */ - if (isscale && dir->attributes && dir->attributes[0] == ':') { + scalable_xlfd = (isscale && + (((vals.values_supplied & PIXELSIZE_MASK) == 0) || + ((vals.values_supplied & POINTSIZE_MASK) == 0))); + /* + * For scalable fonts without a scalable XFLD, check if the "unscaled" + * attribute is present. + */ + if (isscale && !scalable_xlfd && + dir->attributes && dir->attributes[0] == ':') { char *ptr1 = dir->attributes + 1; char *ptr2; int length; diff --git a/src/fontfile/fontencc.c b/src/fontfile/fontencc.c index 2c8bdbd..cc77748 100644 --- a/src/fontfile/fontencc.c +++ b/src/fontfile/fontencc.c @@ -19,7 +19,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/lib/font/fontfile/fontencc.c,v 1.2 2001/08/16 14:33:46 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/fontencc.c,v 1.1 2001/08/13 21:46:47 dawes Exp $ */ /* Binary compatibility code. */ diff --git a/src/fontfile/fontfile.c b/src/fontfile/fontfile.c index 6378c39..cb7bf80 100644 --- a/src/fontfile/fontfile.c +++ b/src/fontfile/fontfile.c @@ -1,3 +1,4 @@ +/* $XdotOrg: xc/lib/font/fontfile/fontfile.c,v 1.1.4.4.2.1 2004/03/04 17:47:11 eich Exp $ */ /* $Xorg: fontfile.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ /* @@ -25,7 +26,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/fontfile.c,v 3.19 2003/11/08 02:02:03 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/fontfile.c,v 3.21 2003/12/02 19:50:40 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -423,11 +424,16 @@ FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, vals.ranges = ranges; vals.nranges = nranges; - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->OpenScalable) (fpe, pFont, + if (strlen(dir->directory) + strlen(scalable->fileName) >= + sizeof(fileName)) { + ret = BadFontName; + } else { + strcpy (fileName, dir->directory); + strcat (fileName, scalable->fileName); + ret = (*scalable->renderer->OpenScalable) (fpe, pFont, flags, entry, fileName, &vals, format, fmask, non_cachable_font); + } /* In case rasterizer does something bad because of charset subsetting... */ @@ -498,6 +504,8 @@ FontFileOpenBitmapNCF (FontPathElementPtr fpe, FontPtr *pFont, bitmap = &entry->u.bitmap; if(!bitmap || !bitmap->renderer->OpenBitmap) return BadFontName; + if (strlen(dir->directory) + strlen(bitmap->fileName) >= sizeof(fileName)) + return BadFontName; strcpy (fileName, dir->directory); strcat (fileName, bitmap->fileName); ret = (*bitmap->renderer->OpenBitmap) @@ -531,6 +539,10 @@ FontFileGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo, dir = (FontDirectoryPtr) fpe->private; bitmap = &entry->u.bitmap; + if (!bitmap || !bitmap->renderer->GetInfoBitmap) + return BadFontName; + if (strlen(dir->directory) + strlen(bitmap->fileName) >= sizeof(fileName)) + return BadFontName; strcpy (fileName, dir->directory); strcat (fileName, bitmap->fileName); ret = (*bitmap->renderer->GetInfoBitmap) (fpe, pFontInfo, entry, fileName); @@ -870,10 +882,15 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe, bc = &entry->u.bc; entry = bc->entry; /* Make a new scaled instance */ - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->GetInfoScalable) + if (strlen(dir->directory) + strlen(scalable->fileName) >= + sizeof(fileName)) { + ret = BadFontName; + } else { + strcpy (fileName, dir->directory); + strcat (fileName, scalable->fileName); + ret = (*scalable->renderer->GetInfoScalable) (fpe, *pFontInfo, entry, tmpName, fileName, &bc->vals); + } break; #endif default: @@ -978,10 +995,15 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe, vals.nranges = nranges; /* Make a new scaled instance */ - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->GetInfoScalable) - (fpe, *pFontInfo, entry, &tmpName, fileName, &vals); + if (strlen(dir->directory) + strlen(scalable->fileName) >= + sizeof(fileName)) { + ret = BadFontName; + } else { + strcpy (fileName, dir->directory); + strcat (fileName, scalable->fileName); + ret = (*scalable->renderer->GetInfoScalable) + (fpe, *pFontInfo, entry, &tmpName, fileName, &vals); + } if (ranges) xfree(ranges); } } diff --git a/src/fontfile/fontscale.c b/src/fontfile/fontscale.c index 8fb63e4..3b7443f 100644 --- a/src/fontfile/fontscale.c +++ b/src/fontfile/fontscale.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/fontscale.c,v 3.10 2001/12/14 19:56:52 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/fontscale.c,v 3.9 2001/08/27 19:49:54 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/gunzip.c b/src/fontfile/gunzip.c index 21894d0..bf737a8 100644 --- a/src/fontfile/gunzip.c +++ b/src/fontfile/gunzip.c @@ -2,7 +2,7 @@ /* lib/font/fontfile/gunzip.c written by Mark Eichin <eichin@kitten.gen.ma.us> September 1996. intended for inclusion in X11 public releases. */ -/* $XFree86: xc/lib/font/fontfile/gunzip.c,v 1.5 2001/01/17 19:43:30 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/gunzip.c,v 1.4 2000/09/19 12:46:08 eich Exp $ */ #include "fontmisc.h" #include <bufio.h> diff --git a/src/fontfile/printerfont.c b/src/fontfile/printerfont.c index 112b1bc..d241d1b 100644 --- a/src/fontfile/printerfont.c +++ b/src/fontfile/printerfont.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/printerfont.c,v 1.6 2003/05/27 22:26:49 tsi Exp $ */ +/* $XFree86: xc/lib/font/fontfile/printerfont.c,v 1.5tsi Exp $ */ /* * Author: Keith Packard, MIT X Consortium diff --git a/src/fontfile/register.c b/src/fontfile/register.c index 385d165..4bc7b8a 100644 --- a/src/fontfile/register.c +++ b/src/fontfile/register.c @@ -25,7 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/lib/font/fontfile/register.c,v 1.15 2001/12/14 19:56:52 dawes Exp $ */ +/* $XFree86: xc/lib/font/fontfile/register.c,v 1.14 2001/01/17 19:43:30 dawes Exp $ */ /* * This is in a separate source file so that small programs diff --git a/src/fontfile/renderers.c b/src/fontfile/renderers.c index 2db871d..7d11d3e 100644 --- a/src/fontfile/renderers.c +++ b/src/fontfile/renderers.c @@ -58,7 +58,7 @@ FontFilePriorityRegisterRenderer (FontRendererPtr renderer, int priority) if (rendererGeneration != serverGeneration) { rendererGeneration = serverGeneration; renderers.number = 0; - if (!renderers.renderers) + if (renderers.renderers) xfree(renderers.renderers); renderers.renderers = NULL; } |