From e5b8a1a0369901d3d73384cf553619d9351679aa Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Thu, 19 Jun 2014 11:14:35 +0000 Subject: texk/*/, utils/*/: Avoid undefined behaviour when char is signed git-svn-id: svn://tug.org/texlive/trunk@34310 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dvipsk/ChangeLog | 5 +++++ Build/source/texk/dvipsk/afm2tfm.c | 2 +- Build/source/texk/dvipsk/dospecial.c | 4 ++-- Build/source/texk/dvipsk/emspecial.c | 28 ++++++++++++++-------------- Build/source/texk/dvipsk/resident.c | 2 +- Build/source/texk/dvipsk/writet1.c | 4 ++-- 6 files changed, 25 insertions(+), 20 deletions(-) (limited to 'Build/source/texk/dvipsk') diff --git a/Build/source/texk/dvipsk/ChangeLog b/Build/source/texk/dvipsk/ChangeLog index b20cd49c960..f48fa8e99a3 100644 --- a/Build/source/texk/dvipsk/ChangeLog +++ b/Build/source/texk/dvipsk/ChangeLog @@ -1,3 +1,8 @@ +2014-06-19 Peter Breitenlohner + + * afm2tfm.c, dospecial.c, emspecial.c, resident.c, writet1.c: + Avoid undefined behaviour when char is signed. + 2014-06-16 Peter Breitenlohner * {,squeeze/}Makefile.am: Drop the obsolete ACLOCAL_AMFLAGS. diff --git a/Build/source/texk/dvipsk/afm2tfm.c b/Build/source/texk/dvipsk/afm2tfm.c index ec6b219b7d6..e57417b5a09 100644 --- a/Build/source/texk/dvipsk/afm2tfm.c +++ b/Build/source/texk/dvipsk/afm2tfm.c @@ -826,7 +826,7 @@ upmap(void) { /* Compute uppercase mapping, when making a small caps font */ Looks like we should use isupper to me --karl. */ for (Ai=adobechars; Ai; Ai=Ai->next) { p = Ai->adobename; - if (isupper (*p)) { + if (isupper ((unsigned char)*p)) { q = lwr; for (; *p; p++) *q++ = TOLOWER (*p); diff --git a/Build/source/texk/dvipsk/dospecial.c b/Build/source/texk/dvipsk/dospecial.c index 9986ec83daa..b295c643e5d 100644 --- a/Build/source/texk/dvipsk/dospecial.c +++ b/Build/source/texk/dvipsk/dospecial.c @@ -787,7 +787,7 @@ case 'h': if (strncmp(p, "html:", 5)==0) { if (! HPS_FLAG) return; p += 5; - while (isspace(*p)) + while (isspace((unsigned char)*p)) p++; if (*p == '<') { char *sp = p; @@ -802,7 +802,7 @@ case 'h': strncpy(str,sp+1,ii-1); str[ii-1] = 0;len=strlen(str); if(len>6) lower_len=6; else lower_len=len; - for(ii=0;ii= sizeof(emstr)) { fprintf(stderr, "em:graph: special too long, truncating\n"); break; @@ -285,14 +285,14 @@ char *emp; emstr[i] = '\0'; /* now get optional width and height */ emwidth = emheight = -1.0; /* no dimension is <= 0 */ - for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) + for (; *emp && ( isspace((unsigned char)*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emwidth, emunit); /* read width */ emwidth = emunits(emwidth,emunit); /* convert to pixels */ - for (; *emp && (*emp=='.'||isdigit(*emp)||isalpha(*emp)); emp++) + for (; *emp && (*emp=='.'||isdigit((unsigned char)*emp)||isalpha((unsigned char)*emp)); emp++) ; /* skip width dimension */ - for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) + for (; *emp && ( isspace((unsigned char)*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emheight, emunit); /* read height */ diff --git a/Build/source/texk/dvipsk/resident.c b/Build/source/texk/dvipsk/resident.c index 2212fe7b554..a7b496d8cda 100644 --- a/Build/source/texk/dvipsk/resident.c +++ b/Build/source/texk/dvipsk/resident.c @@ -642,7 +642,7 @@ case 'R': lastresortsizes[i] = 32000; #else /* KPATHSEA */ for (p = was_inline + 1; *p; p++) { - if (isblank (*p)) { + if (isblank ((unsigned char)*p)) { *p = ':'; } } diff --git a/Build/source/texk/dvipsk/writet1.c b/Build/source/texk/dvipsk/writet1.c index cf4e32e3fdd..460c477c5f5 100644 --- a/Build/source/texk/dvipsk/writet1.c +++ b/Build/source/texk/dvipsk/writet1.c @@ -479,7 +479,7 @@ static float t1_scan_num(char *p, char **r) pdftex_fail("a number expected: `%s'", t1_line_array); } if (r != NULL) { - for (; isdigit(*p) || *p == '.' || + for (; isdigit((unsigned char)*p) || *p == '.' || *p == 'e' || *p == 'E' || *p == '+' || *p == '-'; p++); *r = p; } @@ -1329,7 +1329,7 @@ static void t1_flush_cs(boolean is_subr) t1_line_ptr = t1_line_array; for (p = start_line; p - start_line < size_pos;) *t1_line_ptr++ = *p++; - while (isdigit(*p)) + while (isdigit((unsigned char)*p)) p++; sprintf(t1_line_ptr, "%u", count); strcat(t1_line_ptr, p); -- cgit v1.2.3