diff options
Diffstat (limited to 'filter/texttops.c')
-rw-r--r-- | filter/texttops.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/filter/texttops.c b/filter/texttops.c index 59460ce7a..29f5b15c6 100644 --- a/filter/texttops.c +++ b/filter/texttops.c @@ -173,6 +173,14 @@ WriteProlog(const char *title, /* I - Title of job */ SizeColumns = (PageRight - PageLeft) / 72.0 * CharsPerInch; SizeLines = (PageTop - PageBottom) / 72.0 * LinesPerInch; + if (SizeColumns <= 0 || SizeColumns > 32767 || + SizeLines <= 0 || SizeLines > 32767) + { + _cupsLangPrintf(stderr, _("ERROR: Unable to print %dx%d text page!\n"), + SizeColumns, SizeLines); + exit(1); + } + Page = calloc(sizeof(lchar_t *), SizeLines); Page[0] = calloc(sizeof(lchar_t), SizeColumns * SizeLines); for (i = 1; i < SizeLines; i ++) @@ -187,6 +195,13 @@ WriteProlog(const char *title, /* I - Title of job */ else ColumnWidth = SizeColumns; + if (ColumnWidth <= 0) + { + _cupsLangPrintf(stderr, _("ERROR: Unable to print %d text columns!\n"), + PageColumns); + exit(1); + } + /* * Output the DSC header... */ |