From: Eric Andersen Date: Tue, 3 Apr 2001 22:50:52 +0000 (-0000) Subject: if strlen(s) was 0, it would then end up using s[-1] as an array index. Bad, X-Git-Tag: 0_51~55 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=60b2d8d2c8bf9e1bb3f34a3b16b272c2539a6318;p=oweals%2Fbusybox.git if strlen(s) was 0, it would then end up using s[-1] as an array index. Bad, bad, bad. This was crashing the shell on powerpc boxes, though all other archs seem to have a much more forgiving malloc implementations. I finally found this bug using electric-fence on a powerpc box. -Erik --- diff --git a/libbb/trim.c b/libbb/trim.c index 8a9b07a14..be97d4924 100644 --- a/libbb/trim.c +++ b/libbb/trim.c @@ -33,13 +33,14 @@ void trim(char *s) { + int len; + /* trim trailing whitespace */ - while (isspace(s[strlen(s)-1])) - s[strlen(s)-1]='\0'; + while ( (len=strlen(s)) >= 1 && isspace(s[len-1])) + s[len-1]='\0'; /* trim leading whitespace */ - memmove(s, &s[strspn(s, " \n\r\t\v")], strlen(s)); - + memmove(s, &s[strspn(s, " \n\r\t\v")], len); } /* END CODE */