]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(look_up_char_class): Take a string length argument.
authorJim Meyering <jim@meyering.net>
Sat, 20 May 1995 12:08:35 +0000 (12:08 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 20 May 1995 12:08:35 +0000 (12:08 +0000)
Use strncmp, not strcmp and verify that string lengths are the same.
(append_char_class): Update caller.
From Andreas Schwab.

src/tr.c

index da4f9deb2f0c08c4dff376f98636a7965f9f010a..55139767439cbe05a8c881f6edd9b1cbf056e682 100644 (file)
--- a/src/tr.c
+++ b/src/tr.c
@@ -560,13 +560,15 @@ unquote (s, len)
    in the global char_class_name array.  Otherwise, return CC_NO_CLASS.  */
 
 static enum Char_class
-look_up_char_class (class_str)
+look_up_char_class (class_str, len)
      unsigned char *class_str;
+     int len;
 {
   unsigned int i;
 
   for (i = 0; i < N_CHAR_CLASSES; i++)
-    if (strcmp ((const char *) class_str, char_class_name[i]) == 0)
+    if (strncmp ((const char *) class_str, char_class_name[i], len) == 0
+       && strlen (char_class_name[i]) == len)
       return (enum Char_class) i;
   return CC_NO_CLASS;
 }
@@ -727,7 +729,7 @@ append_char_class (list, char_class_str, len)
   enum Char_class char_class;
   struct List_element *new;
 
-  char_class = look_up_char_class (char_class_str);
+  char_class = look_up_char_class (char_class_str, len);
   if (char_class == CC_NO_CLASS)
     {
       char *tmp = make_printable_str (char_class_str, len);