]> granicus.if.org Git - php/commitdiff
Fix shift UB in sint4korr()
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Jun 2019 12:27:13 +0000 (14:27 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Jun 2019 13:09:00 +0000 (15:09 +0200)
ext/mysqlnd/mysqlnd_portability.h

index 622e31dcd475d0ff64f2309252f09d323e09bb2e..873f49b0cd19657b70f6d3a56f1545b55ac6a232 100644 (file)
@@ -191,10 +191,10 @@ typedef union {
                   (((uint32_t) (zend_uchar) (A)[2]) << 16) |\
                   (((uint32_t) (zend_uchar) (A)[1]) << 8) | \
                   ((uint32_t) (zend_uchar) (A)[0])))
-#define sint4korr(A)  (int32_t) (((int32_t) ((zend_uchar) (A)[0])) +\
-                              (((int32_t) ((zend_uchar) (A)[1]) << 8)) +\
-                              (((int32_t) ((zend_uchar) (A)[2]) << 16)) +\
-                              (((int32_t) ((int16_t) (A)[3]) << 24)))
+#define sint4korr(A)  (int32_t) (((uint32_t) ((A)[0])) +\
+                              (((uint32_t) ((A)[1]) << 8)) +\
+                              (((uint32_t) ((A)[2]) << 16)) +\
+                              (((uint32_t) ((A)[3]) << 24)))
 
 #define sint8korr(A)  (int64_t) uint8korr(A)
 #define uint2korr(A)  (uint16_t) (((uint16_t) ((zend_uchar) (A)[0])) +\