aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2001-04-03 22:50:52 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2001-04-03 22:50:52 +0000
commited5a1921810d3ce32cc66fa08f40f6a0f9d7a8fd (patch)
tree28a3e4396e8b8c69b51c793fb16198002272f894
parent0427b6742d1907d9af79fd93ed021717e71e433b (diff)
downloadbusybox-w32-ed5a1921810d3ce32cc66fa08f40f6a0f9d7a8fd.tar.gz
busybox-w32-ed5a1921810d3ce32cc66fa08f40f6a0f9d7a8fd.tar.bz2
busybox-w32-ed5a1921810d3ce32cc66fa08f40f6a0f9d7a8fd.zip
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 git-svn-id: svn://busybox.net/trunk/busybox@2233 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--libbb/trim.c9
1 files changed, 5 insertions, 4 deletions
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 @@
33 33
34void trim(char *s) 34void trim(char *s)
35{ 35{
36 int len;
37
36 /* trim trailing whitespace */ 38 /* trim trailing whitespace */
37 while (isspace(s[strlen(s)-1])) 39 while ( (len=strlen(s)) >= 1 && isspace(s[len-1]))
38 s[strlen(s)-1]='\0'; 40 s[len-1]='\0';
39 41
40 /* trim leading whitespace */ 42 /* trim leading whitespace */
41 memmove(s, &s[strspn(s, " \n\r\t\v")], strlen(s)); 43 memmove(s, &s[strspn(s, " \n\r\t\v")], len);
42
43} 44}
44 45
45/* END CODE */ 46/* END CODE */