[BusyBox] [PATCH] tr Segmentation fault

Hideki IWAMOTO h-iwamoto at kit.hi-ho.ne.jp
Fri Mar 12 18:13:36 UTC 2004


Current `tr' implementation has a problem, if `plain char' is signed.

[current cvs version]

>echo a | _install/usr/bin/tr '\0' '\377'
Segmentation fault (core dumped)

[patched version]

>echo a | _install/usr/bin/tr '\0' '\377' 
a


Index: coreutils/tr.c
===================================================================
RCS file: /var/cvs/busybox/coreutils/tr.c,v
retrieving revision 1.36
diff -u -r1.36 tr.c
--- coreutils/tr.c	22 Jul 2003 22:15:17 -0000	1.36
+++ coreutils/tr.c	12 Mar 2004 17:46:42 -0000
@@ -202,9 +202,9 @@
 			map(input, input_length, output, output_length);
 		}
 		for (i = 0; i < input_length; i++)
-			invec[(int)input[i]] = TRUE;
+			invec[(unsigned char)input[i]] = TRUE;
 		for (i = 0; i < output_length; i++)
-			outvec[(int)output[i]] = TRUE;
+			outvec[(unsigned char)output[i]] = TRUE;
 	}
 	convert();
 	return (0);

----
Hideki IWAMOTO  h-iwamoto at kit.hi-ho.ne.jp




More information about the busybox mailing list