diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2018-09-29 02:44:42 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2018-09-29 02:44:42 +0000 |
commit | acf1c3cd5f989ff0e2a3895f35875c918b4c3eb8 (patch) | |
tree | eec649bf9126f527b3b1f5bb128121e8280a49cc /lib | |
parent | 84c6e11810783388e5be22ab80a5dafe523f20db (diff) | |
download | netpbm-mirror-acf1c3cd5f989ff0e2a3895f35875c918b4c3eb8.tar.gz netpbm-mirror-acf1c3cd5f989ff0e2a3895f35875c918b4c3eb8.tar.xz netpbm-mirror-acf1c3cd5f989ff0e2a3895f35875c918b4c3eb8.zip |
Release 10.47.70
git-svn-id: http://svn.code.sf.net/p/netpbm/code/super_stable@3345 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libpbmfont.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/lib/libpbmfont.c b/lib/libpbmfont.c index 2e6e66c1..4ba812cd 100644 --- a/lib/libpbmfont.c +++ b/lib/libpbmfont.c @@ -1297,6 +1297,8 @@ validateEncoding(const char ** const arg, bool badCodepoint; unsigned int codepoint; + if (!arg[1]) + pm_error("Invalid ENCODING statement - no arguments"); if (atoi(arg[1]) >= 0) { codepoint = atoi(arg[1]); gotCodepoint = true; @@ -1327,10 +1329,14 @@ processCharsLine(FILE * const fp, const char ** const arg, struct font * const fontP) { - unsigned int const nCharacters = atoi(arg[1]); - + unsigned int nCharacters; unsigned int nCharsDone; + if (!arg[1]) + pm_error("Invalid CHARS line - no arguments"); + + nCharacters = atoi(arg[1]); + nCharsDone = 0; while (nCharsDone < nCharacters) { @@ -1346,6 +1352,8 @@ processCharsLine(FILE * const fp, /* ignore */ } else if (!streq(arg[0], "STARTCHAR")) pm_error("no STARTCHAR after CHARS in BDF font file"); + else if (!arg[1]) + pm_error("Invalid STARTCHAR - no arguments"); else { const char * const charName = arg[1]; struct glyph * glyphP; @@ -1377,15 +1385,25 @@ processCharsLine(FILE * const fp, const char * arg[32]; expect(fp, "DWIDTH", arg, line); + if (!arg[1]) + pm_error("Invalid DWIDTH statement - no arguments"); glyphP->xadd = atoi(arg[1]); } { const char * arg[32]; expect(fp, "BBX", arg, line); + if (!arg[1]) + pm_error("Invalid BBX statement - no arguments"); glyphP->width = atoi(arg[1]); + if (!arg[2]) + pm_error("Invalid BBX statement - only 1 argument"); glyphP->height = atoi(arg[2]); + if (!arg[3]) + pm_error("Invalid BBX statement - only 2 arguments"); glyphP->x = atoi(arg[3]); + if (!arg[4]) + pm_error("Invalid BBX statement - only 3 arguments"); glyphP->y = atoi(arg[4]); } createBmap(glyphP->width, glyphP->height, fp, charName, @@ -1420,8 +1438,13 @@ processFontLine(FILE * const fp, } else if (streq(arg[0], "SIZE")) { /* ignore */ } else if (streq(arg[0], "STARTPROPERTIES")) { - unsigned int const propCount = atoi(arg[1]); + unsigned int propCount; unsigned int i; + + if (!arg[1]) + pm_error("Invalid STARTPROPERTIES statement - no arguments"); + propCount = atoi(arg[1]); + for (i = 0; i < propCount; ++i) { char line[1024]; const char * arg[32]; @@ -1431,9 +1454,17 @@ processFontLine(FILE * const fp, pm_error("End of file after STARTPROPERTIES in BDF font file"); } } else if (streq(arg[0], "FONTBOUNDINGBOX")) { + if (!arg[1]) + pm_error("Invalid FONTBOUNDINGBOX statement - no arguments"); fontP->maxwidth = atoi(arg[1]); + if (!arg[2]) + pm_error("Invalid FONTBOUNDINGBOX statement - only 1 argument"); fontP->maxheight = atoi(arg[2]); + if (!arg[3]) + pm_error("Invalid FONTBOUNDINGBOX statement - only 2 arguments"); fontP->x = atoi(arg[3]); + if (!arg[4]) + pm_error("Invalid FONTBOUNDINGBOX statement - only 3 arguments"); fontP->y = atoi(arg[4]); } else if (streq(arg[0], "ENDFONT")) { *endOfFontP = true; |