SIZE_MAX doesn't exist everywhere, supply an alternative
authorRichard Levitte <levitte@openssl.org>
Wed, 30 Dec 2015 13:56:59 +0000 (14:56 +0100)
committerRichard Levitte <levitte@openssl.org>
Wed, 30 Dec 2015 13:56:59 +0000 (14:56 +0100)
SIZE_MAX is a great macro, and does unfortunately not exist everywhere.
Since we check against half of it, using bitwise shift to calculate the
value of half SIZE_MAX should be safe enough.

Reviewed-by: Tim Hudson <tjh@openssl.org>
ssl/packet_locl.h

index 39fac55..48a5f3d 100644 (file)
@@ -111,8 +111,13 @@ __owur static ossl_inline int PACKET_buf_init(PACKET *pkt, unsigned char *buf,
                                               size_t len)
 {
     /* Sanity check for negative values. */
+#ifdef SIZE_MAX
     if (len > (size_t)(SIZE_MAX / 2))
         return 0;
+#else
+    if (len > ((size_t)2 << (sizeof(size_t) * 8 - 1)))
+        return 0;
+#endif
 
     pkt->curr = buf;
     pkt->remaining = len;