From 60ccd8d7a34a3d85b3413cb70c31d6ecfa5ecb01 Mon Sep 17 00:00:00 2001 From: millert Date: Thu, 4 Jan 2018 19:06:16 +0000 Subject: [PATCH] Back out sign compare changes that appear to cause problems on hppa. Requested by deraadt@ --- bin/ksh/Makefile | 5 ++-- bin/ksh/c_ksh.c | 5 ++-- bin/ksh/edit.c | 10 +++---- bin/ksh/emacs.c | 8 ++--- bin/ksh/eval.c | 11 ++++--- bin/ksh/expand.h | 6 ++-- bin/ksh/history.c | 4 +-- bin/ksh/lex.c | 8 ++--- bin/ksh/lex.h | 4 +-- bin/ksh/misc.c | 76 +++++++++++++++++++++++------------------------ bin/ksh/path.c | 4 +-- bin/ksh/tree.c | 20 +++++-------- bin/ksh/var.c | 6 ++-- bin/ksh/vi.c | 4 +-- 14 files changed, 81 insertions(+), 90 deletions(-) diff --git a/bin/ksh/Makefile b/bin/ksh/Makefile index 5f3b8a58ca8..dca3c76b315 100644 --- a/bin/ksh/Makefile +++ b/bin/ksh/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.36 2018/01/01 19:45:56 millert Exp $ +# $OpenBSD: Makefile,v 1.37 2018/01/04 19:06:16 millert Exp $ PROG= ksh SRCS= alloc.c c_ksh.c c_sh.c c_test.c c_ulimit.c edit.c emacs.c eval.c \ @@ -6,8 +6,7 @@ SRCS= alloc.c c_ksh.c c_sh.c c_test.c c_ulimit.c edit.c emacs.c eval.c \ misc.c path.c shf.c syn.c table.c trap.c tree.c tty.c var.c \ version.c vi.c -WARNINGS=yes -DEFS= -DEMACS -DVI +DEFS= -Wall -Wshadow -DEMACS -DVI CFLAGS+=${DEFS} -I. -I${.CURDIR} -I${.CURDIR}/../../lib/libc/gen MAN= ksh.1 sh.1 diff --git a/bin/ksh/c_ksh.c b/bin/ksh/c_ksh.c index 23371bc5d76..174e79ad95d 100644 --- a/bin/ksh/c_ksh.c +++ b/bin/ksh/c_ksh.c @@ -1,4 +1,4 @@ -/* $OpenBSD: c_ksh.c,v 1.53 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: c_ksh.c,v 1.54 2018/01/04 19:06:16 millert Exp $ */ /* * built-in Korn commands: c_* @@ -1194,8 +1194,7 @@ c_kill(char **wp) ki.num_width++; for (i = 0; i < NSIG; i++) { - w = sigtraps[i].name ? - (int)strlen(sigtraps[i].name) : + w = sigtraps[i].name ? strlen(sigtraps[i].name) : ki.num_width; if (w > ki.name_width) ki.name_width = w; diff --git a/bin/ksh/edit.c b/bin/ksh/edit.c index 6ddd6ad54cc..0df2c421885 100644 --- a/bin/ksh/edit.c +++ b/bin/ksh/edit.c @@ -1,4 +1,4 @@ -/* $OpenBSD: edit.c,v 1.59 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: edit.c,v 1.60 2018/01/04 19:06:16 millert Exp $ */ /* * Command line editing - common code @@ -224,13 +224,13 @@ set_editmode(const char *ed) #endif }; char *rcp; - unsigned int ele; + int i; if ((rcp = strrchr(ed, '/'))) ed = ++rcp; - for (ele = 0; ele < NELEM(edit_flags); ele++) - if (strstr(ed, sh_options[(int) edit_flags[ele]].name)) { - change_flag(edit_flags[ele], OF_SPECIAL, 1); + for (i = 0; i < NELEM(edit_flags); i++) + if (strstr(ed, sh_options[(int) edit_flags[i]].name)) { + change_flag(edit_flags[i], OF_SPECIAL, 1); return; } } diff --git a/bin/ksh/emacs.c b/bin/ksh/emacs.c index 855bff9554b..87027c30932 100644 --- a/bin/ksh/emacs.c +++ b/bin/ksh/emacs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: emacs.c,v 1.78 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: emacs.c,v 1.79 2018/01/04 19:06:16 millert Exp $ */ /* * Emacs-like command line editing and history @@ -1249,7 +1249,7 @@ static char * kb_decode(const char *s) { static char l[LINE + 1]; - unsigned int i, at = 0; + int i, at = 0; l[0] = '\0'; for (i = 0; i < strlen(s); i++) { @@ -1292,7 +1292,7 @@ kb_del(struct kb_entry *k) static struct kb_entry * kb_add_string(void *func, void *args, char *str) { - unsigned int i, count; + int i, count; struct kb_entry *k; struct x_ftab *xf = NULL; @@ -1362,7 +1362,7 @@ x_bind(const char *a1, const char *a2, int macro, /* bind -m */ int list) /* bind -l */ { - unsigned int i; + int i; struct kb_entry *k, *kb; char in[LINE + 1]; diff --git a/bin/ksh/eval.c b/bin/ksh/eval.c index 2c5b5429b8b..fddbc082ae8 100644 --- a/bin/ksh/eval.c +++ b/bin/ksh/eval.c @@ -1,4 +1,4 @@ -/* $OpenBSD: eval.c,v 1.55 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: eval.c,v 1.56 2018/01/04 19:06:16 millert Exp $ */ /* * Expansion - quoting, separation, substitution, globbing @@ -1114,11 +1114,10 @@ debunk(char *dp, const char *sp, size_t dlen) char *d, *s; if ((s = strchr(sp, MAGIC))) { - size_t slen = s - sp; - if (slen >= dlen) + if (s - sp >= dlen) return dp; - memcpy(dp, sp, slen); - for (d = dp + slen; *s && (d < dp + dlen); s++) + memcpy(dp, sp, s - sp); + for (d = dp + (s - sp); *s && (d - dp < dlen); s++) if (!ISMAGIC(*s) || !(*++s & 0x80) || !strchr("*+?@! ", *s & 0x7f)) *d++ = *s; @@ -1126,7 +1125,7 @@ debunk(char *dp, const char *sp, size_t dlen) /* extended pattern operators: *+?@! */ if ((*s & 0x7f) != ' ') *d++ = *s & 0x7f; - if (d < dp + dlen) + if (d - dp < dlen) *d++ = '('; } *d = '\0'; diff --git a/bin/ksh/expand.h b/bin/ksh/expand.h index 30d134db3a8..59f5303a49f 100644 --- a/bin/ksh/expand.h +++ b/bin/ksh/expand.h @@ -1,4 +1,4 @@ -/* $OpenBSD: expand.h,v 1.13 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: expand.h,v 1.14 2018/01/04 19:06:16 millert Exp $ */ /* * Expanding strings @@ -46,7 +46,7 @@ typedef char * XStringP; /* check if there are at least n bytes left */ #define XcheckN(xs, xp, n) do { \ - size_t more = ((xp) + (n)) - (xs).end; \ + int more = ((xp) + (n)) - (xs).end; \ if (more > 0) \ xp = Xcheck_grow_(&xs, xp, more); \ } while (0) @@ -68,7 +68,7 @@ typedef char * XStringP; #define Xsavepos(xs, xp) ((xp) - (xs).beg) #define Xrestpos(xs, xp, n) ((xs).beg + (n)) -char * Xcheck_grow_(XString *xsp, char *xp, size_t more); +char * Xcheck_grow_(XString *xsp, char *xp, int more); /* * expandable vector of generic pointers diff --git a/bin/ksh/history.c b/bin/ksh/history.c index b77bf7b9634..80b1042ebb5 100644 --- a/bin/ksh/history.c +++ b/bin/ksh/history.c @@ -1,4 +1,4 @@ -/* $OpenBSD: history.c,v 1.76 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: history.c,v 1.77 2018/01/04 19:06:16 millert Exp $ */ /* * command history @@ -545,7 +545,7 @@ sethistcontrol(const char *str) void sethistsize(int n) { - if (n > 0 && (uint32_t)n != histsize) { + if (n > 0 && n != histsize) { int offset = histptr - history; /* save most recent history */ diff --git a/bin/ksh/lex.c b/bin/ksh/lex.c index 7c1c3d9b6d4..540bedd65fa 100644 --- a/bin/ksh/lex.c +++ b/bin/ksh/lex.c @@ -1,4 +1,4 @@ -/* $OpenBSD: lex.c,v 1.75 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: lex.c,v 1.76 2018/01/04 19:06:16 millert Exp $ */ /* * lexical analysis and source input @@ -98,9 +98,9 @@ YYSTYPE yylval; /* result from yylex */ struct ioword *heres[HERES], **herep; char ident[IDENT+1]; -char **history; /* saved commands */ -char **histptr; /* last history item */ -uint32_t histsize; /* history size */ +char **history; /* saved commands */ +char **histptr; /* last history item */ +int histsize; /* history size */ /* optimized getsc_bn() */ #define getsc() (*source->str != '\0' && *source->str != '\\' \ diff --git a/bin/ksh/lex.h b/bin/ksh/lex.h index 457d7275e91..a620b72684d 100644 --- a/bin/ksh/lex.h +++ b/bin/ksh/lex.h @@ -1,4 +1,4 @@ -/* $OpenBSD: lex.h,v 1.18 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: lex.h,v 1.19 2018/01/04 19:06:16 millert Exp $ */ /* * Source input, lexer and parser @@ -110,7 +110,7 @@ extern char ident[IDENT+1]; extern char **history; /* saved commands */ extern char **histptr; /* last history item */ -extern uint32_t histsize; /* history size */ +extern int histsize; /* history size */ #endif /* HISTORY */ diff --git a/bin/ksh/misc.c b/bin/ksh/misc.c index 283488b77ec..921e1163dc9 100644 --- a/bin/ksh/misc.c +++ b/bin/ksh/misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.62 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: misc.c,v 1.63 2018/01/04 19:06:16 millert Exp $ */ /* * Miscellaneous functions @@ -105,7 +105,7 @@ str_nsave(const char *s, int n, Area *ap) /* called from expand.h:XcheckN() to grow buffer */ char * -Xcheck_grow_(XString *xsp, char *xp, size_t more) +Xcheck_grow_(XString *xsp, char *xp, int more) { char *old_beg = xsp->beg; @@ -181,11 +181,11 @@ const struct option sh_options[] = { int option(const char *n) { - unsigned int ele; + int i; - for (ele = 0; ele < NELEM(sh_options); ele++) - if (sh_options[ele].name && strcmp(sh_options[ele].name, n) == 0) - return ele; + for (i = 0; i < NELEM(sh_options); i++) + if (sh_options[i].name && strcmp(sh_options[i].name, n) == 0) + return i; return -1; } @@ -216,21 +216,20 @@ options_fmt_entry(void *arg, int i, char *buf, int buflen) static void printoptions(int verbose) { - unsigned int ele; + int i; if (verbose) { struct options_info oi; - unsigned int n; - int len; + int n, len; /* verbose version */ shprintf("Current option settings\n"); - for (ele = n = oi.opt_width = 0; ele < NELEM(sh_options); ele++) { - if (sh_options[ele].name) { - len = strlen(sh_options[ele].name); - oi.opts[n].name = sh_options[ele].name; - oi.opts[n++].flag = ele; + for (i = n = oi.opt_width = 0; i < NELEM(sh_options); i++) { + if (sh_options[i].name) { + len = strlen(sh_options[i].name); + oi.opts[n].name = sh_options[i].name; + oi.opts[n++].flag = i; if (len > oi.opt_width) oi.opt_width = len; } @@ -240,11 +239,11 @@ printoptions(int verbose) } else { /* short version ala ksh93 */ shprintf("set"); - for (ele = 0; ele < NELEM(sh_options); ele++) { - if (sh_options[ele].name) + for (i = 0; i < NELEM(sh_options); i++) { + if (sh_options[i].name) shprintf(" %co %s", - Flag(ele) ? '-' : '+', - sh_options[ele].name); + Flag(i) ? '-' : '+', + sh_options[i].name); } shprintf("\n"); } @@ -253,13 +252,13 @@ printoptions(int verbose) char * getoptions(void) { - unsigned int ele; + int i; char m[(int) FNFLAGS + 1]; char *cp = m; - for (ele = 0; ele < NELEM(sh_options); ele++) - if (sh_options[ele].c && Flag(ele)) - *cp++ = sh_options[ele].c; + for (i = 0; i < NELEM(sh_options); i++) + if (sh_options[i].c && Flag(i)) + *cp++ = sh_options[i].c; *cp = 0; return str_save(m, ATEMP); } @@ -334,8 +333,7 @@ parse_args(char **argv, char *opts; char *array = NULL; Getopt go; - int i, optc, sortargs = 0, arrayset = 0; - unsigned int ele; + int i, optc, set, sortargs = 0, arrayset = 0; /* First call? Build option strings... */ if (cmd_opts[0] == '\0') { @@ -347,12 +345,12 @@ parse_args(char **argv, /* see set_opts[] declaration */ strlcpy(set_opts, "A:o;s", sizeof set_opts); q = set_opts + strlen(set_opts); - for (ele = 0; ele < NELEM(sh_options); ele++) { - if (sh_options[ele].c) { - if (sh_options[ele].flags & OF_CMDLINE) - *p++ = sh_options[ele].c; - if (sh_options[ele].flags & OF_SET) - *q++ = sh_options[ele].c; + for (i = 0; i < NELEM(sh_options); i++) { + if (sh_options[i].c) { + if (sh_options[i].flags & OF_CMDLINE) + *p++ = sh_options[i].c; + if (sh_options[i].flags & OF_SET) + *q++ = sh_options[i].c; } } *p = '\0'; @@ -371,7 +369,7 @@ parse_args(char **argv, opts = set_opts; ksh_getopt_reset(&go, GF_ERROR|GF_PLUSOPT); while ((optc = ksh_getopt(argv, &go, opts)) != -1) { - int set = (go.info & GI_PLUS) ? 0 : 1; + set = (go.info & GI_PLUS) ? 0 : 1; switch (optc) { case 'A': arrayset = set ? 1 : -1; @@ -390,14 +388,14 @@ parse_args(char **argv, break; } i = option(go.optarg); - if (i != -1 && set == Flag(i)) + if (i >= 0 && set == Flag(i)) /* Don't check the context if the flag * isn't changing - makes "set -o interactive" * work if you're already interactive. Needed * if the output of "set +o" is to be used. */ ; - else if (i != -1 && (sh_options[i].flags & what)) + else if (i >= 0 && (sh_options[i].flags & what)) change_flag((enum sh_flag) i, what, set); else { bi_errorf("%s: bad option", go.optarg); @@ -414,14 +412,14 @@ parse_args(char **argv, sortargs = 1; break; } - for (ele = 0; ele < NELEM(sh_options); ele++) - if (optc == sh_options[ele].c && - (what & sh_options[ele].flags)) { - change_flag((enum sh_flag) ele, what, + for (i = 0; i < NELEM(sh_options); i++) + if (optc == sh_options[i].c && + (what & sh_options[i].flags)) { + change_flag((enum sh_flag) i, what, set); break; } - if (ele == NELEM(sh_options)) { + if (i == NELEM(sh_options)) { internal_errorf(1, "parse_args: `%c'", optc); return -1; /* not reached */ } @@ -510,7 +508,7 @@ gmatch(const char *s, const char *p, int isfile) * the pattern. If check fails, just to a strcmp(). */ if (!isfile && !has_globbing(p, pe)) { - size_t len = pe - p + 1; + int len = pe - p + 1; char tbuf[64]; char *t = len <= sizeof(tbuf) ? tbuf : alloc(len, ATEMP); diff --git a/bin/ksh/path.c b/bin/ksh/path.c index 7262730e0fa..ff8d26e61d0 100644 --- a/bin/ksh/path.c +++ b/bin/ksh/path.c @@ -1,4 +1,4 @@ -/* $OpenBSD: path.c,v 1.20 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: path.c,v 1.21 2018/01/04 19:06:16 millert Exp $ */ #include @@ -228,7 +228,7 @@ do_phys_path(XString *xsp, char *xp, const char *path) p++; if (!*p) break; - len = (q = strchr(p, '/')) ? (size_t)(q - p) : strlen(p); + len = (q = strchr(p, '/')) ? q - p : strlen(p); if (len == 1 && p[0] == '.') continue; if (len == 2 && p[0] == '.' && p[1] == '.') { diff --git a/bin/ksh/tree.c b/bin/ksh/tree.c index 6daed170ba0..1760f19f5fd 100644 --- a/bin/ksh/tree.c +++ b/bin/ksh/tree.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tree.c,v 1.28 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: tree.c,v 1.29 2018/01/04 19:06:16 millert Exp $ */ /* * command tree climbing @@ -390,15 +390,6 @@ vfptreef(struct shf *shf, int indent, const char *fmt, va_list va) case 'c': tputc(va_arg(va, int), shf); break; - case 'd': /* decimal */ - n = va_arg(va, int); - neg = n < 0; - p = ulton(neg ? -n : n, 10); - if (neg) - *--p = '-'; - while (*p) - tputc(*p++, shf); - break; case 's': p = va_arg(va, char *); while (*p) @@ -408,8 +399,13 @@ vfptreef(struct shf *shf, int indent, const char *fmt, va_list va) p = va_arg(va, char *); tputS(p, shf); break; - case 'u': /* unsigned decimal */ - p = ulton(va_arg(va, unsigned int), 10); + case 'd': case 'u': /* decimal */ + n = (c == 'd') ? va_arg(va, int) : + va_arg(va, unsigned int); + neg = c=='d' && n<0; + p = ulton((neg) ? -n : n, 10); + if (neg) + *--p = '-'; while (*p) tputc(*p++, shf); break; diff --git a/bin/ksh/var.c b/bin/ksh/var.c index 409489a1791..28a8a816f22 100644 --- a/bin/ksh/var.c +++ b/bin/ksh/var.c @@ -1,4 +1,4 @@ -/* $OpenBSD: var.c,v 1.61 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: var.c,v 1.62 2018/01/04 19:06:16 millert Exp $ */ #include @@ -306,7 +306,7 @@ str_val(struct tbl *vp) "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "0123456789abcdefghijklmnopqrstuvwxyz"; unsigned long n; - unsigned int base; + int base; s = strbuf + sizeof(strbuf); if (vp->flag & INT_U) @@ -997,7 +997,7 @@ setspec(struct tbl *vp) break; case V_HISTSIZE: vp->flag &= ~SPECIAL; - sethistsize(intval(vp)); + sethistsize((int) intval(vp)); vp->flag |= SPECIAL; break; case V_HISTFILE: diff --git a/bin/ksh/vi.c b/bin/ksh/vi.c index af1c051e483..da682c87b54 100644 --- a/bin/ksh/vi.c +++ b/bin/ksh/vi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vi.c,v 1.51 2018/01/01 19:45:56 millert Exp $ */ +/* $OpenBSD: vi.c,v 1.52 2018/01/04 19:06:16 millert Exp $ */ /* * vi command editing @@ -238,7 +238,7 @@ x_vi(char *buf, size_t len) x_putc('\r'); x_putc('\n'); x_flush(); - if (c == -1 || len <= (size_t)es->linelen) + if (c == -1 || len <= es->linelen) return -1; if (es->cbuf != buf) -- 2.20.1