Make sure the memory allocation routines check for negative sizes
diff --git a/crypto/mem.c b/crypto/mem.c
index d7d3cda..57f2958 100644
--- a/crypto/mem.c
+++ b/crypto/mem.c
@@ -252,6 +252,8 @@
 	void *ret = NULL;
 	extern unsigned char cleanse_ctr;
 
+	if (num < 0) return NULL;
+
 	allow_customize = 0;
 	if (malloc_debug_func != NULL)
 		{
@@ -291,6 +293,8 @@
 	void *ret = NULL;
 	extern unsigned char cleanse_ctr;
 
+	if (num < 0) return NULL;
+
 	allow_customize = 0;
 	if (malloc_debug_func != NULL)
 		{
@@ -319,6 +323,9 @@
 
 	if (str == NULL)
 		return CRYPTO_malloc(num, file, line);
+
+	if (num < 0) return NULL;
+
 	if (realloc_debug_func != NULL)
 		realloc_debug_func(str, NULL, num, file, line, 0);
 	ret = realloc_ex_func(str,num,file,line);
@@ -338,6 +345,9 @@
 
 	if (str == NULL)
 		return CRYPTO_malloc(num, file, line);
+
+	if (num < 0) return NULL;
+
 	if (realloc_debug_func != NULL)
 		realloc_debug_func(str, NULL, num, file, line, 0);
 	ret=malloc_ex_func(num,file,line);