]> granicus.if.org Git - python/commitdiff
1 << 31 is invalid for signed integers, fix it by making 1 unsigned.
authorGregory P. Smith <greg@krypto.org>
Tue, 11 Dec 2012 01:45:54 +0000 (17:45 -0800)
committerGregory P. Smith <greg@krypto.org>
Tue, 11 Dec 2012 01:45:54 +0000 (17:45 -0800)
Found by Clang trunk's Undefined-Behavior Sanitizer.  [more to come]

Modules/_sre.c

index baf5f6a5a9c9508fcee9ce492dfde49c46c55b48..a5a6b1e8024ec51e43d25acb8ade0c14298a9aeb 100644 (file)
@@ -459,7 +459,7 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
             }
             else {
                 /* <CHARSET> <bitmap> (32 bits per code word) */
-                if (ch < 256 && (set[ch >> 5] & (1 << (ch & 31))))
+                if (ch < 256 && (set[ch >> 5] & (1u << (ch & 31))))
                     return ok;
                 set += 8;
             }
@@ -498,7 +498,7 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
                     block = -1;
                 set += 64;
                 if (block >=0 &&
-                    (set[block*8 + ((ch & 255)>>5)] & (1 << (ch & 31))))
+                    (set[block*8 + ((ch & 255)>>5)] & (1u << (ch & 31))))
                     return ok;
                 set += count*8;
             }