Instead of a local hack, implement SIZE_MAX in numbers.h if it's missing

Reviewed-by: Stephen Henson <steve@openssl.org>
diff --git a/include/internal/numbers.h b/include/internal/numbers.h
index 1f79ef7..da06dab 100644
--- a/include/internal/numbers.h
+++ b/include/internal/numbers.h
@@ -105,5 +105,9 @@
 #  define UINT64_MAX __MAXUINT__(uint64_t)
 # endif
 
+# ifndef SIZE_MAX
+#  define SIZE_MAX __MAXUINT__(size_t)
+# endif
+
 #endif
 
diff --git a/ssl/packet_locl.h b/ssl/packet_locl.h
index 48a5f3d..ed7c1ca 100644
--- a/ssl/packet_locl.h
+++ b/ssl/packet_locl.h
@@ -65,6 +65,8 @@
 # include <openssl/crypto.h>
 # include <openssl/e_os2.h>
 
+# include "internal/numbers.h"
+
 # ifdef __cplusplus
 extern "C" {
 # endif
@@ -111,13 +113,8 @@
                                               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;