* iobuf.c (check_special_filename): Replaced is isdigit by digitp
authorDavid Shaw <dshaw@jabberwocky.com>
Thu, 10 Jul 2003 12:26:42 +0000 (12:26 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Thu, 10 Jul 2003 12:26:42 +0000 (12:26 +0000)
to avoid passing negative values and potential locale problems.
Problem noted by Christian Biere.
* strgutil.c (strlwr,strcasecmp,strncasecmp): Make sure we don't
pass a negative value.
* miscutil.c (scan_isodatestr): Ditto.

util/ChangeLog
util/iobuf.c
util/miscutil.c
util/strgutil.c

index bd83acc..a6c4e7b 100644 (file)
@@ -1,3 +1,12 @@
+2003-07-10  David Shaw  <dshaw@jabberwocky.com> (from Werner on stable branch)
+
+       * iobuf.c (check_special_filename): Replaced is isdigit by digitp
+       to avoid passing negative values and potential locale problems.
+       Problem noted by Christian Biere.
+       * strgutil.c (strlwr,strcasecmp,strncasecmp): Make sure we don't
+       pass a negative value.
+       * miscutil.c (scan_isodatestr): Ditto.
+
 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
 
        * srv.h, srv.c: Include windows.h with MINGW32.
index 4d866c1..2b63d5c 100644 (file)
@@ -1032,7 +1032,7 @@ check_special_filename ( const char *fname )
         int i;
 
         fname += 2;
-        for (i=0; isdigit (fname[i]); i++ )
+        for (i=0; digitp (fname+i); i++ )
             ;
         if ( !fname[i] ) 
             return atoi (fname);
index 42b2b3a..b266d27 100644 (file)
@@ -1,5 +1,5 @@
 /* miscutil.c -  miscellaneous utilities
- *     Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -56,11 +56,11 @@ scan_isodatestr( const char *string )
     if( strlen(string) != 10 || string[4] != '-' || string[7] != '-' )
        return 0;
     for( i=0; i < 4; i++ )
-       if( !isdigit(string[i]) )
+       if( !digitp(string+i) )
            return 0;
-    if( !isdigit(string[5]) || !isdigit(string[6]) )
+    if( !digitp(string+5) || !digitp(string+6) )
        return 0;
-    if( !isdigit(string[8]) || !isdigit(string[9]) )
+    if( !digitp(string+8) || !digitp(string+9) )
        return 0;
     year = atoi(string);
     month = atoi(string+5);
index e793fc1..05524d8 100644 (file)
@@ -1,5 +1,6 @@
 /* strgutil.c -  string utilities
- * Copyright (C) 1994, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ * Copyright (C) 1994, 1998, 1999, 2000, 2001,
+ *               2003 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -825,7 +826,7 @@ strlwr(char *s)
 {
     char *p;
     for(p=s; *p; p++ )
-       *p = tolower(*p);
+       *p = tolower(*(unsigned char *)p);
     return s;
 }
 #endif
@@ -835,7 +836,8 @@ int
 strcasecmp( const char *a, const char *b )
 {
     for( ; *a && *b; a++, b++ ) {
-       if( *a != *b && toupper(*a) != toupper(*b) )
+       if( *a != *b
+            && toupper(*(const byte *)a) != toupper(*(const byte *)b) )
            break;
     }
     return *(const byte*)a - *(const byte*)b;
@@ -847,7 +849,8 @@ int
 strncasecmp( const char *a, const char *b, size_t n )
 {
     for( ; n && *a && *b; a++, b++, n--) {
-       if( *a != *b && toupper(*a) != toupper(*b) )
+       if( *a != *b
+            && toupper(*(const byte *)a) != toupper(*(const byte *)b) )
            break;
     }
     if (!n)