From: Dan Fandrich Date: Wed, 8 Sep 2010 06:38:28 +0000 (-0700) Subject: Avoid side effects in putc(), which may be implemented as a macro X-Git-Tag: 1_18_0~235 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=77d48726917e6493a8a077be93bb07b22fd2c209;p=oweals%2Fbusybox.git Avoid side effects in putc(), which may be implemented as a macro Signed-off-by: Dan Fandrich Signed-off-by: Denys Vlasenko --- diff --git a/coreutils/ls.c b/coreutils/ls.c index cbfcfc7a1..e69f1afd9 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -573,7 +573,8 @@ static unsigned print_name(const char *name) putchar('\\'); len++; } - putchar(*name++); + putchar(*name); + name++; } putchar('"'); return len; diff --git a/coreutils/tee.c b/coreutils/tee.c index 8db9042aa..2e1e367f2 100644 --- a/coreutils/tee.c +++ b/coreutils/tee.c @@ -70,8 +70,8 @@ int tee_main(int argc, char **argv) while ((c = safe_read(STDIN_FILENO, buf, sizeof(buf))) > 0) { fp = files; do - fwrite(buf, 1, c, *fp++); - while (*fp); + fwrite(buf, 1, c, *fp); + while (*++fp); } if (c < 0) { /* Make sure read errors are signaled. */ retval = EXIT_FAILURE; @@ -81,8 +81,8 @@ int tee_main(int argc, char **argv) while ((c = getchar()) != EOF) { fp = files; do - putc(c, *fp++); - while (*fp); + putc(c, *fp); + while (*++fp); } #endif diff --git a/shell/ash.c b/shell/ash.c index 70425b324..f262872ea 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -953,7 +953,8 @@ sharg(union node *arg, FILE *fp) for (p = arg->narg.text; *p; p++) { switch ((unsigned char)*p) { case CTLESC: - putc(*++p, fp); + p++; + putc(*p, fp); break; case CTLVAR: putc('$', fp); @@ -962,8 +963,10 @@ sharg(union node *arg, FILE *fp) if (subtype == VSLENGTH) putc('#', fp); - while (*p != '=') - putc(*p++, fp); + while (*p != '=') { + putc(*p, fp); + p++; + } if (subtype & VSNUL) putc(':', fp);