From: Richard Levitte Date: Wed, 30 Dec 2015 13:56:59 +0000 (+0100) Subject: SIZE_MAX doesn't exist everywhere, supply an alternative X-Git-Tag: OpenSSL_1_1_0-pre2~143 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=36830ecac7a5ff1935e465d6e95f32d72e614a56;p=oweals%2Fopenssl.git SIZE_MAX doesn't exist everywhere, supply an alternative 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 --- diff --git a/ssl/packet_locl.h b/ssl/packet_locl.h index 39fac55bb4..48a5f3d7dc 100644 --- a/ssl/packet_locl.h +++ b/ssl/packet_locl.h @@ -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;