summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/spc_xtx.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/spc_xtx.c')
-rw-r--r--Build/source/texk/dvipdfm-x/spc_xtx.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/Build/source/texk/dvipdfm-x/spc_xtx.c b/Build/source/texk/dvipdfm-x/spc_xtx.c
index e66889ef81b..33d43d60743 100644
--- a/Build/source/texk/dvipdfm-x/spc_xtx.c
+++ b/Build/source/texk/dvipdfm-x/spc_xtx.c
@@ -1,7 +1,7 @@
/* This is xdvipdfmx, an extended version of dvipdfmx,
an eXtended version of dvipdfm by Mark A. Wicks.
- Copyright (C) 2013-2016 by the dvipdfmx project team.
+ Copyright (C) 2013-2019 by the dvipdfmx project team.
Copyright (c) 2006 SIL International
Originally written by Jonathan Kew
@@ -195,15 +195,17 @@ spc_handler_xtx_backgroundcolor (struct spc_env *spe, struct spc_arg *args)
}
/* FIXME: xdv2pdf's x:fontmapline and x:fontmapfile may have slightly different syntax/semantics */
+#define THEBUFFLENGTH 1024
static int
spc_handler_xtx_fontmapline (struct spc_env *spe, struct spc_arg *ap)
{
fontmap_rec *mrec;
char *map_name, opchr;
int error = 0;
- static char buffer[1024];
+ static char buffer[THEBUFFLENGTH];
const char *p;
char *q;
+ int count;
skip_white(&ap->curptr, ap->endptr);
if (ap->curptr >= ap->endptr) {
@@ -231,8 +233,13 @@ spc_handler_xtx_fontmapline (struct spc_env *spe, struct spc_arg *ap)
default:
p = ap->curptr;
q = buffer;
- while (p < ap->endptr)
+ count = 0;
+ while (p < ap->endptr && count < THEBUFFLENGTH - 1) {
*q++ = *p++;
+ count++;
+ }
+ if (count == THEBUFFLENGTH - 1)
+ spc_warn(spe, "Too long a fontmap line.");
*q = '\0';
mrec = NEW(1, fontmap_rec);
pdf_init_fontmap_record(mrec);