summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/emspecial.c
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-12-13 04:18:45 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-12-13 04:18:45 +0000
commita8c819d907340e1b10f2dc8baf524e05533e951d (patch)
tree4e42286620e3cfa2deb22932f8aa766aae105605 /Build/source/texk/dvipsk/emspecial.c
parent84136f93a664e486caa55b499b29c0c10555d8a4 (diff)
dvipsk: Fix a bug leading to wrong strlen (emstr). Thanks Norbert Klingen.
git-svn-id: svn://tug.org/texlive/trunk@42692 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk/emspecial.c')
-rw-r--r--Build/source/texk/dvipsk/emspecial.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/Build/source/texk/dvipsk/emspecial.c b/Build/source/texk/dvipsk/emspecial.c
index 3210a8a2639..e3d66431c08 100644
--- a/Build/source/texk/dvipsk/emspecial.c
+++ b/Build/source/texk/dvipsk/emspecial.c
@@ -145,6 +145,22 @@ char emunit[30];
char emstr[500];
char *emp;
+/* Initialize emstr[500] because emstr in the code below may not
+ be a right string, leading to wrong strlen(emstr):
+
+ if (strlen(emstr) - 2 >= sizeof(emstr)) {
+ fprintf(stderr, "em:graph: special too long, truncating\n");
+ break;
+ }
+ emstr[i++] = *emp;
+ }
+*/
+ {
+ int k;
+ for (k = 0; k < 500; k++)
+ emstr[k] = '\0';
+ }
+
hvpos();
for (emp = p+3; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */
if (strncmp(emp, "linewidth", 9) == 0) {