summaryrefslogtreecommitdiff
path: root/usr.bin/vtfontcvt
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2019-06-25 06:13:56 +0000
committerWarner Losh <imp@FreeBSD.org>2019-06-25 06:13:56 +0000
commit912a01b36dfff365606ede479f4db2c29e0db601 (patch)
treed3e5c862acca67dbb20a34ec7838f85fbcbff20e /usr.bin/vtfontcvt
parentf5a95d9a07941650493461c255408f5727d0638b (diff)
downloadsrc-test2-912a01b36dfff365606ede479f4db2c29e0db601.tar.gz
src-test2-912a01b36dfff365606ede479f4db2c29e0db601.zip
Replay r349333 by emaste accidentally reverted by r349352
vtfontcvt: improve .bdf validation Previously if we had a FONTBOUNDINGBOX or DWIDTH entry that had missing or invalid values and and failed sscanf, we would proceeded with partially initialized bounding box / device width variables. Reported by: afl (FONTBOUNDINGBOX) MFC with: r349100 Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=349353
Diffstat (limited to 'usr.bin/vtfontcvt')
-rw-r--r--usr.bin/vtfontcvt/vtfontcvt.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/usr.bin/vtfontcvt/vtfontcvt.c b/usr.bin/vtfontcvt/vtfontcvt.c
index 70ec7cf31812..e34308d5d365 100644
--- a/usr.bin/vtfontcvt/vtfontcvt.c
+++ b/usr.bin/vtfontcvt/vtfontcvt.c
@@ -335,9 +335,11 @@ parse_bdf(FILE *fp, unsigned int map_idx)
break;
}
}
- } else if (strncmp(ln, "FONTBOUNDINGBOX ", 16) == 0 &&
- sscanf(ln + 16, "%d %d %d %d", &fbbw, &fbbh, &fbbox,
- &fbboy) == 4) {
+ } else if (strncmp(ln, "FONTBOUNDINGBOX ", 16) == 0) {
+ if (sscanf(ln + 16, "%d %d %d %d", &fbbw, &fbbh, &fbbox,
+ &fbboy) != 4)
+ errx(1, "invalid FONTBOUNDINGBOX at line %u",
+ linenum);
set_width(fbbw);
set_height(fbbh);
break;
@@ -353,8 +355,9 @@ parse_bdf(FILE *fp, unsigned int map_idx)
linenum++;
ln[length - 1] = '\0';
- if (strncmp(ln, "DWIDTH ", 7) == 0 &&
- sscanf(ln + 7, "%d %d", &dwidth, &dwy) == 2) {
+ if (strncmp(ln, "DWIDTH ", 7) == 0) {
+ if (sscanf(ln + 7, "%d %d", &dwidth, &dwy) != 2)
+ errx(1, "invalid DWIDTH at line %u", linenum);
if (dwy != 0 || (dwidth != fbbw && dwidth * 2 != fbbw))
errx(1, "bitmap with unsupported DWIDTH %d %d at line %u",
dwidth, dwy, linenum);