Changeset: 1fe68d092235 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1fe68d092235
Modified Files:
        MonetDB/src/common/monet_options.mx
        MonetDB/src/gdk/gdk.mx
        MonetDB/src/gdk/gdk_posix.mx
        MonetDB4/src/modules/contrib/txtsim.mx
        MonetDB4/src/modules/plain/monettime.mx
        MonetDB4/src/modules/plain/url.mx
        MonetDB4/src/monet/monet_client.mx
        clients/src/mapilib/Mapi.mx
        pathfinder/runtime/xrpc_client.mx
        sql/src/common/sql_string.mx
Branch: Jun2010
Log Message:

Protect ctype macros against negative values.
isspace and friends are only defined for EOF and values in the range
0...0xFF.


diffs (182 lines):

diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB/src/common/monet_options.mx
--- a/MonetDB/src/common/monet_options.mx       Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB/src/common/monet_options.mx       Fri Jul 23 17:59:23 2010 +0200
@@ -274,7 +274,7 @@
                char *s, *t, *val;
                int quote;
 
-               for (s = buf; *s && isspace((int) (*s)); s++)
+               for (s = buf; *s && isspace((int) (unsigned char) *s); s++)
                        ;
                if (*s == '#')
                        continue;       /* commentary */
@@ -289,12 +289,12 @@
                }
                *val = 0;
 
-               for (t = s; *t && !isspace((int) (*t)); t++)
+               for (t = s; *t && !isspace((int) (unsigned char) *t); t++)
                        ;
                *t = 0;
 
                /* skip any leading blanks in the value part */
-               for (val++; *val && isspace((int) (*val)); val++)
+               for (val++; *val && isspace((int) (unsigned char) *val); val++)
                        ;
 
                /* search to unquoted # */
@@ -311,7 +311,7 @@
                        exit(1);
                }
                /* remove trailing white space */
-               while (isspace((int) (t[-1])))
+               while (isspace((int) (unsigned char) t[-1]))
                        t--;
                *t++ = 0;
 
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB/src/gdk/gdk.mx
--- a/MonetDB/src/gdk/gdk.mx    Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB/src/gdk/gdk.mx    Fri Jul 23 17:59:23 2010 +0200
@@ -417,10 +417,10 @@
 #define MIN(A,B)       ((A)>(B)?(B):(A))
 
 /* defines from ctype with casts that allow passing char values */
-#define GDKisprint(c)  isprint((int) ((unsigned char) (c)))
-#define GDKisspace(c)  isspace((int) ((unsigned char) (c)))
-#define GDKisalnum(c)  isalnum((int) ((unsigned char) (c)))
-#define GDKisgraph(c)  isgraph((int) ((unsigned char) (c)))
+#define GDKisprint(c)  isprint((int) (unsigned char) (c))
+#define GDKisspace(c)  isspace((int) (unsigned char) (c))
+#define GDKisalnum(c)  isalnum((int) (unsigned char) (c))
+#define GDKisgraph(c)  isgraph((int) (unsigned char) (c))
 #define GDKisdigit(c)  (((unsigned char) (c)) >= '0' && ((unsigned char) (c)) 
<= '9')
 #define GDKisxcntrl(c)  (((unsigned char) (c)) >= 128 && ((unsigned char) (c)) 
<= 160)
 #define GDKisspecial(c) (((unsigned char) (c)) >= 161 && ((unsigned char) (c)) 
<= 191)
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB/src/gdk/gdk_posix.mx
--- a/MonetDB/src/gdk/gdk_posix.mx      Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB/src/gdk/gdk_posix.mx      Fri Jul 23 17:59:23 2010 +0200
@@ -1727,7 +1727,7 @@
        if (base)
                return base + 1;
 
-       if (isalpha(file_name[0]) && file_name[1] == ':')
+       if (isalpha((int) (unsigned char) file_name[0]) && file_name[1] == ':')
                return (char *) file_name + 2;
 
        return (char *) file_name;
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB4/src/modules/contrib/txtsim.mx
--- a/MonetDB4/src/modules/contrib/txtsim.mx    Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB4/src/modules/contrib/txtsim.mx    Fri Jul 23 17:59:23 2010 +0200
@@ -275,7 +275,7 @@
 
        /* keep first letter */
        Key[0] = *Name;
-       if (!isupper((int) (Key[0])))
+       if (!isupper((int) (unsigned char) Key[0]))
                Key[0] = toupper(Key[0]);
 
        LastLetter = *Name;
@@ -286,7 +286,7 @@
        /* scan rest of string */
        for (Index = 1; (Index <SoundexLen) &&*Name; Name++) {
                /* use only letters */
-               if (isalpha((int) (*Name))) {
+               if (isalpha((int) (unsigned char) *Name)) {
                        /* ignore duplicate successive chars */
                        if (LastLetter != *Name) {
                                /* new LastLetter */
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB4/src/modules/plain/monettime.mx
--- a/MonetDB4/src/modules/plain/monettime.mx   Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB4/src/modules/plain/monettime.mx   Fri Jul 23 17:59:23 2010 +0200
@@ -1957,7 +1957,8 @@
                                v = v * 10 + (*snew) - '0';
                                snew++;
                        }
-               } else if (isupper((int) (*snew)) || islower((int) (*snew))) {
+               } else if (isupper((int) (unsigned char) *snew) ||
+                          islower((int) (unsigned char) *snew)) {
                        switch (*snew++) {
                        case 'y':
                        case 'Y':
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB4/src/modules/plain/url.mx
--- a/MonetDB4/src/modules/plain/url.mx Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB4/src/modules/plain/url.mx Fri Jul 23 17:59:23 2010 +0200
@@ -660,12 +660,12 @@
 static int
 needEscape(char c)
 {
-    if( isalnum((int)c) )
-        return 0;
-    if( c == '#' || c == '-' || c == '_' || c == '.' || c == '!' || 
-        c == '~' || c == '*' || c == '\'' || c == '(' || c == ')' )
-        return 0;
-    return 1;
+       if (isalnum((int) (unsigned char) c))
+               return 0;
+       if (c == '#' || c == '-' || c == '_' || c == '.' || c == '!' || 
+           c == '~' || c == '*' || c == '\'' || c == '(' || c == ')')
+               return 0;
+       return 1;
 }
 
 /* COMMAND "escape": this function applies the URI escaping rules defined in
diff -r f2c23a2c31bb -r 1fe68d092235 MonetDB4/src/monet/monet_client.mx
--- a/MonetDB4/src/monet/monet_client.mx        Fri Jul 23 16:02:10 2010 +0200
+++ b/MonetDB4/src/monet/monet_client.mx        Fri Jul 23 17:59:23 2010 +0200
@@ -648,7 +648,8 @@
                                 * only handle ASCII, so check for
                                 * non-ASCII-ness separately */
                                if (!incomment &&
-                                   ((*s & ~0x7F) != 0 || !isspace((int) *s)))
+                                   ((*s & ~0x7F) != 0 ||
+                                    !isspace((int) (unsigned char) *s)))
                                        doflush = 0;
                                escaped = 0;
                                *p++ = *s;
diff -r f2c23a2c31bb -r 1fe68d092235 clients/src/mapilib/Mapi.mx
--- a/clients/src/mapilib/Mapi.mx       Fri Jul 23 16:02:10 2010 +0200
+++ b/clients/src/mapilib/Mapi.mx       Fri Jul 23 17:59:23 2010 +0200
@@ -5086,7 +5086,7 @@
                        unsigned int fac = 1000000000;
                        unsigned int nsec = 0;
 
-                       for (n++; isdigit((int) val[n]); n++) {
+                       for (n++; isdigit((int) (unsigned char) val[n]); n++) {
                                fac /= 10;
                                nsec += (val[n] - '0') * fac;
                        }
diff -r f2c23a2c31bb -r 1fe68d092235 pathfinder/runtime/xrpc_client.mx
--- a/pathfinder/runtime/xrpc_client.mx Fri Jul 23 16:02:10 2010 +0200
+++ b/pathfinder/runtime/xrpc_client.mx Fri Jul 23 17:59:23 2010 +0200
@@ -586,7 +586,7 @@
         }
     }
 
-    if (isdigit((int)dst[0])) {
+    if (isdigit((int) (unsigned char) dst[0])) {
         if ((i = inet_addr(dst)) < 0) {
             GDKerror("setup_connection: invalid IP address \"%s\"\n", dst);
             return -1;
@@ -618,8 +618,8 @@
 
     if (ret < 0) {
         GDKerror("setup_connection: failed to setup connection with %s:%d\n", 
dst, p);
-        close(sock);
-        return -1;
+        closesocket(sock);
+        return INVALID_SOCKET;
     }
 
     *port = p;
diff -r f2c23a2c31bb -r 1fe68d092235 sql/src/common/sql_string.mx
--- a/sql/src/common/sql_string.mx      Fri Jul 23 16:02:10 2010 +0200
+++ b/sql/src/common/sql_string.mx      Fri Jul 23 17:59:23 2010 +0200
@@ -118,7 +118,7 @@
 {
        char *res = s;
 
-       for (; *s > 0 && isspace(*s); s++)
+       for (; *s && isspace((int) (unsigned char) *s); s++)
                ;
        for (; *s && *s == '0'; s++)
                ;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to