summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/asn1/tasn_enc.c1
-rw-r--r--crypto/o_str.c9
-rw-r--r--crypto/o_str.h1
-rw-r--r--e_os.h3
4 files changed, 14 insertions, 0 deletions
diff --git a/crypto/asn1/tasn_enc.c b/crypto/asn1/tasn_enc.c
index 4ab1ea10f5..60b29ce822 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 da8860491d..2db099333a 100644
--- a/crypto/o_str.c
+++ b/crypto/o_str.c
@@ -94,3 +94,12 @@ int OPENSSL_strcasecmp(const char *str1, const char *str2)
#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 4a70a9e00b..dfc98494c6 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
diff --git a/e_os.h b/e_os.h
index 9bebed131e..e156b63394 100644
--- a/e_os.h
+++ b/e_os.h
@@ -565,6 +565,9 @@ extern HINSTANCE _hInstance;
extern char *sys_errlist[]; extern int sys_nerr;
# define strerror(errnum) \
(((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum])
+ /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */
+#include "o_str.h"
+# define memcmp OPENSSL_memcmp
#endif
#ifndef OPENSSL_EXIT