"Overload" SunOS 4.x memcmp, which ruins ASN1_OBJECT table lookups.
PR: 1196
Submitted by: Russel Ruby
diff --git a/crypto/asn1/tasn_enc.c b/crypto/asn1/tasn_enc.c
index 4ab1ea1..60b29ce 100644
--- a/crypto/asn1/tasn_enc.c
+++ b/crypto/asn1/tasn_enc.c
@@ -59,6 +59,7 @@
 
 #include <stddef.h>
 #include <string.h>
+#include "cryptlib.h"
 #include <openssl/asn1.h>
 #include <openssl/asn1t.h>
 #include <openssl/objects.h>
diff --git a/crypto/o_str.c b/crypto/o_str.c
index da88604..2db0993 100644
--- a/crypto/o_str.c
+++ b/crypto/o_str.c
@@ -94,3 +94,12 @@
 #endif
 	}
 
+int OPENSSL_memcmp(const void *v1,const void *v2,size_t n)
+	{
+	const unsigned char *c1=v1,*c2=v2;
+	int ret=0;
+
+	while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
+
+	return ret;
+	}
diff --git a/crypto/o_str.h b/crypto/o_str.h
index 4a70a9e..dfc9849 100644
--- a/crypto/o_str.h
+++ b/crypto/o_str.h
@@ -63,5 +63,6 @@
 
 int OPENSSL_strcasecmp(const char *str1, const char *str2);
 int OPENSSL_strncasecmp(const char *str1, const char *str2, size_t n);
+int OPENSSL_memcmp(const void *p1,const void *p2,size_t n);
 
 #endif