aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo Buehler <tb@openbsd.org>2023-12-12 08:19:39 +0100
committerTheo Buehler <tb@openbsd.org>2023-12-12 08:19:52 +0100
commitf7bed14f22b70198b4ec56af6d489f69b3df805a (patch)
tree72c325e78e9636222920bf0a0259092d8a5861b7
parent2e88c74329938b5af441736645e795289660aa38 (diff)
parentc54bd8ba318dec4b4fbf4df1d92acbe2c032f3fd (diff)
downloadportable-f7bed14f22b70198b4ec56af6d489f69b3df805a.tar.gz
portable-f7bed14f22b70198b4ec56af6d489f69b3df805a.tar.bz2
portable-f7bed14f22b70198b4ec56af6d489f69b3df805a.zip
Land #961
-rw-r--r--crypto/CMakeLists.txt37
-rw-r--r--include/compat/stdio.h2
-rw-r--r--include/compat/stdlib.h10
-rw-r--r--include/compat/string.h11
-rw-r--r--m4/check-libc.m43
5 files changed, 44 insertions, 19 deletions
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 6056471..8046efe 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -767,13 +767,13 @@ endif()
767 767
768if(NOT HAVE_ASPRINTF) 768if(NOT HAVE_ASPRINTF)
769 set(CRYPTO_SRC ${CRYPTO_SRC} compat/bsd-asprintf.c) 769 set(CRYPTO_SRC ${CRYPTO_SRC} compat/bsd-asprintf.c)
770 set(EXTRA_EXPORT ${EXTRA_EXPORT} asprintf) 770 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_asprintf)
771 set(EXTRA_EXPORT ${EXTRA_EXPORT} vasprintf) 771 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_vasprintf)
772endif() 772endif()
773 773
774if(NOT HAVE_FREEZERO) 774if(NOT HAVE_FREEZERO)
775 set(CRYPTO_SRC ${CRYPTO_SRC} compat/freezero.c) 775 set(CRYPTO_SRC ${CRYPTO_SRC} compat/freezero.c)
776 set(EXTRA_EXPORT ${EXTRA_EXPORT} freezero) 776 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_freezero)
777endif() 777endif()
778 778
779if(NOT HAVE_GETOPT) 779if(NOT HAVE_GETOPT)
@@ -799,46 +799,46 @@ endif()
799 799
800if(NOT HAVE_REALLOCARRAY) 800if(NOT HAVE_REALLOCARRAY)
801 set(CRYPTO_SRC ${CRYPTO_SRC} compat/reallocarray.c) 801 set(CRYPTO_SRC ${CRYPTO_SRC} compat/reallocarray.c)
802 set(EXTRA_EXPORT ${EXTRA_EXPORT} reallocarray) 802 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_reallocarray)
803endif() 803endif()
804 804
805if(NOT HAVE_RECALLOCARRAY) 805if(NOT HAVE_RECALLOCARRAY)
806 set(CRYPTO_SRC ${CRYPTO_SRC} compat/recallocarray.c) 806 set(CRYPTO_SRC ${CRYPTO_SRC} compat/recallocarray.c)
807 set(EXTRA_EXPORT ${EXTRA_EXPORT} recallocarray) 807 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_recallocarray)
808endif() 808endif()
809 809
810if(NOT HAVE_STRCASECMP) 810if(NOT HAVE_STRCASECMP)
811 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strcasecmp.c) 811 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strcasecmp.c)
812 set(EXTRA_EXPORT ${EXTRA_EXPORT} strcasecmp) 812 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strcasecmp)
813endif() 813endif()
814 814
815if(NOT HAVE_STRLCAT) 815if(NOT HAVE_STRLCAT)
816 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcat.c) 816 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcat.c)
817 set(EXTRA_EXPORT ${EXTRA_EXPORT} strlcat) 817 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strlcat)
818endif() 818endif()
819 819
820if(NOT HAVE_STRLCPY) 820if(NOT HAVE_STRLCPY)
821 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcpy.c) 821 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strlcpy.c)
822 set(EXTRA_EXPORT ${EXTRA_EXPORT} strlcpy) 822 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strlcpy)
823endif() 823endif()
824 824
825if(NOT HAVE_STRNDUP) 825if(NOT HAVE_STRNDUP)
826 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strndup.c) 826 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strndup.c)
827 set(EXTRA_EXPORT ${EXTRA_EXPORT} strndup) 827 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strndup)
828 if(NOT HAVE_STRNLEN) 828 if(NOT HAVE_STRNLEN)
829 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strnlen.c) 829 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strnlen.c)
830 set(EXTRA_EXPORT ${EXTRA_EXPORT} strnlen) 830 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strnlen)
831 endif() 831 endif()
832endif() 832endif()
833 833
834if(NOT HAVE_STRSEP) 834if(NOT HAVE_STRSEP)
835 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strsep.c) 835 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strsep.c)
836 set(EXTRA_EXPORT ${EXTRA_EXPORT} strsep) 836 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strsep)
837endif() 837endif()
838 838
839if(NOT HAVE_STRTONUM) 839if(NOT HAVE_STRTONUM)
840 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strtonum.c) 840 set(CRYPTO_SRC ${CRYPTO_SRC} compat/strtonum.c)
841 set(EXTRA_EXPORT ${EXTRA_EXPORT} strtonum) 841 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_strtonum)
842endif() 842endif()
843 843
844if(NOT HAVE_SYSLOG_R) 844if(NOT HAVE_SYSLOG_R)
@@ -857,15 +857,15 @@ if(NOT HAVE_EXPLICIT_BZERO)
857 set(CRYPTO_SRC ${CRYPTO_SRC} compat/explicit_bzero.c) 857 set(CRYPTO_SRC ${CRYPTO_SRC} compat/explicit_bzero.c)
858 set_source_files_properties(compat/explicit_bzero.c PROPERTIES COMPILE_FLAGS -O0) 858 set_source_files_properties(compat/explicit_bzero.c PROPERTIES COMPILE_FLAGS -O0)
859 endif() 859 endif()
860 set(EXTRA_EXPORT ${EXTRA_EXPORT} explicit_bzero) 860 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_explicit_bzero)
861endif() 861endif()
862 862
863if(NOT HAVE_ARC4RANDOM_BUF) 863if(NOT HAVE_ARC4RANDOM_BUF)
864 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random.c) 864 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random.c)
865 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random_uniform.c) 865 set(CRYPTO_SRC ${CRYPTO_SRC} compat/arc4random_uniform.c)
866 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random) 866 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_arc4random)
867 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random_buf) 867 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_arc4random_buf)
868 set(EXTRA_EXPORT ${EXTRA_EXPORT} arc4random_uniform) 868 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_arc4random_uniform)
869 869
870 if(NOT HAVE_GETENTROPY) 870 if(NOT HAVE_GETENTROPY)
871 if(WIN32) 871 if(WIN32)
@@ -891,12 +891,12 @@ endif()
891 891
892if(NOT HAVE_TIMINGSAFE_BCMP) 892if(NOT HAVE_TIMINGSAFE_BCMP)
893 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_bcmp.c) 893 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_bcmp.c)
894 set(EXTRA_EXPORT ${EXTRA_EXPORT} timingsafe_bcmp) 894 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_timingsafe_bcmp)
895endif() 895endif()
896 896
897if(NOT HAVE_TIMINGSAFE_MEMCMP) 897if(NOT HAVE_TIMINGSAFE_MEMCMP)
898 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_memcmp.c) 898 set(CRYPTO_SRC ${CRYPTO_SRC} compat/timingsafe_memcmp.c)
899 set(EXTRA_EXPORT ${EXTRA_EXPORT} timingsafe_memcmp) 899 set(EXTRA_EXPORT ${EXTRA_EXPORT} libressl_timingsafe_memcmp)
900endif() 900endif()
901 901
902if(NOT ENABLE_ASM) 902if(NOT ENABLE_ASM)
@@ -919,6 +919,7 @@ foreach(SYM IN LISTS CRYPTO_UNEXPORT)
919 string(REPLACE "${SYM}\n" "" SYMS ${SYMS}) 919 string(REPLACE "${SYM}\n" "" SYMS ${SYMS})
920endforeach() 920endforeach()
921file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym ${SYMS}) 921file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym ${SYMS})
922# XXX should we still be doing this?
922if(EXTRA_EXPORT) 923if(EXTRA_EXPORT)
923 list(SORT EXTRA_EXPORT) 924 list(SORT EXTRA_EXPORT)
924 foreach(SYM IN LISTS EXTRA_EXPORT) 925 foreach(SYM IN LISTS EXTRA_EXPORT)
diff --git a/include/compat/stdio.h b/include/compat/stdio.h
index d5725c9..4ddd63a 100644
--- a/include/compat/stdio.h
+++ b/include/compat/stdio.h
@@ -20,7 +20,9 @@
20 20
21#ifndef HAVE_ASPRINTF 21#ifndef HAVE_ASPRINTF
22#include <stdarg.h> 22#include <stdarg.h>
23#define vasprintf libressl_vasprintf
23int vasprintf(char **str, const char *fmt, va_list ap); 24int vasprintf(char **str, const char *fmt, va_list ap);
25#define asprintf libressl_asprintf
24int asprintf(char **str, const char *fmt, ...); 26int asprintf(char **str, const char *fmt, ...);
25#endif 27#endif
26 28
diff --git a/include/compat/stdlib.h b/include/compat/stdlib.h
index 2eaea24..76dc07c 100644
--- a/include/compat/stdlib.h
+++ b/include/compat/stdlib.h
@@ -20,26 +20,36 @@
20#include <stdint.h> 20#include <stdint.h>
21 21
22#ifndef HAVE_ARC4RANDOM_BUF 22#ifndef HAVE_ARC4RANDOM_BUF
23#define arc4random libressl_arc4random
23uint32_t arc4random(void); 24uint32_t arc4random(void);
25#define arc4random_buf libressl_arc4random_buf
24void arc4random_buf(void *_buf, size_t n); 26void arc4random_buf(void *_buf, size_t n);
27#define arc4random_uniform libressl_arc4random_uniform
25uint32_t arc4random_uniform(uint32_t upper_bound); 28uint32_t arc4random_uniform(uint32_t upper_bound);
26#endif 29#endif
27 30
28#ifndef HAVE_FREEZERO 31#ifndef HAVE_FREEZERO
32#define freezero libressl_freezero
29void freezero(void *ptr, size_t sz); 33void freezero(void *ptr, size_t sz);
30#endif 34#endif
31 35
32#ifndef HAVE_GETPROGNAME 36#ifndef HAVE_GETPROGNAME
37#define getprogname libressl_getprogname
33const char * getprogname(void); 38const char * getprogname(void);
34#endif 39#endif
35 40
41#ifndef HAVE_REALLOCARRAY
42#define reallocarray libressl_reallocarray
36void *reallocarray(void *, size_t, size_t); 43void *reallocarray(void *, size_t, size_t);
44#endif
37 45
38#ifndef HAVE_RECALLOCARRAY 46#ifndef HAVE_RECALLOCARRAY
47#define recallocarray libressl_recallocarray
39void *recallocarray(void *, size_t, size_t, size_t); 48void *recallocarray(void *, size_t, size_t, size_t);
40#endif 49#endif
41 50
42#ifndef HAVE_STRTONUM 51#ifndef HAVE_STRTONUM
52#define strtonum libressl_strtonum
43long long strtonum(const char *nptr, long long minval, 53long long strtonum(const char *nptr, long long minval,
44 long long maxval, const char **errstr); 54 long long maxval, const char **errstr);
45#endif 55#endif
diff --git a/include/compat/string.h b/include/compat/string.h
index 4bf7519..6a82793 100644
--- a/include/compat/string.h
+++ b/include/compat/string.h
@@ -27,43 +27,54 @@
27#endif 27#endif
28 28
29#ifndef HAVE_STRCASECMP 29#ifndef HAVE_STRCASECMP
30#define strcasecmp libressl_strcasecmp
30int strcasecmp(const char *s1, const char *s2); 31int strcasecmp(const char *s1, const char *s2);
32#define strncasecmp libressl_strncasecmp
31int strncasecmp(const char *s1, const char *s2, size_t len); 33int strncasecmp(const char *s1, const char *s2, size_t len);
32#endif 34#endif
33 35
34#ifndef HAVE_STRLCPY 36#ifndef HAVE_STRLCPY
37#define strlcpy libressl_strlcpy
35size_t strlcpy(char *dst, const char *src, size_t siz); 38size_t strlcpy(char *dst, const char *src, size_t siz);
36#endif 39#endif
37 40
38#ifndef HAVE_STRLCAT 41#ifndef HAVE_STRLCAT
42#define strlcat libressl_strlcat
39size_t strlcat(char *dst, const char *src, size_t siz); 43size_t strlcat(char *dst, const char *src, size_t siz);
40#endif 44#endif
41 45
42#ifndef HAVE_STRNDUP 46#ifndef HAVE_STRNDUP
47#define strndup libressl_strndup
43char * strndup(const char *str, size_t maxlen); 48char * strndup(const char *str, size_t maxlen);
44/* the only user of strnlen is strndup, so only build it if needed */ 49/* the only user of strnlen is strndup, so only build it if needed */
45#ifndef HAVE_STRNLEN 50#ifndef HAVE_STRNLEN
51#define strnlen libressl_strnlen
46size_t strnlen(const char *str, size_t maxlen); 52size_t strnlen(const char *str, size_t maxlen);
47#endif 53#endif
48#endif 54#endif
49 55
50#ifndef HAVE_STRSEP 56#ifndef HAVE_STRSEP
57#define strsep libressl_strsep
51char *strsep(char **stringp, const char *delim); 58char *strsep(char **stringp, const char *delim);
52#endif 59#endif
53 60
54#ifndef HAVE_EXPLICIT_BZERO 61#ifndef HAVE_EXPLICIT_BZERO
62#define explicit_bzero libressl_explicit_bzero
55void explicit_bzero(void *, size_t); 63void explicit_bzero(void *, size_t);
56#endif 64#endif
57 65
58#ifndef HAVE_TIMINGSAFE_BCMP 66#ifndef HAVE_TIMINGSAFE_BCMP
67#define timingsafe_bcmp libressl_timingsafe_bcmp
59int timingsafe_bcmp(const void *b1, const void *b2, size_t n); 68int timingsafe_bcmp(const void *b1, const void *b2, size_t n);
60#endif 69#endif
61 70
62#ifndef HAVE_TIMINGSAFE_MEMCMP 71#ifndef HAVE_TIMINGSAFE_MEMCMP
72#define timingsafe_memcmp libressl_timingsafe_memcmp
63int timingsafe_memcmp(const void *b1, const void *b2, size_t len); 73int timingsafe_memcmp(const void *b1, const void *b2, size_t len);
64#endif 74#endif
65 75
66#ifndef HAVE_MEMMEM 76#ifndef HAVE_MEMMEM
77#define memmem libressl_memmem
67void * memmem(const void *big, size_t big_len, const void *little, 78void * memmem(const void *big, size_t big_len, const void *little,
68 size_t little_len); 79 size_t little_len);
69#endif 80#endif
diff --git a/m4/check-libc.m4 b/m4/check-libc.m4
index dc8d6bd..50fb8e1 100644
--- a/m4/check-libc.m4
+++ b/m4/check-libc.m4
@@ -9,7 +9,7 @@ AC_HEADER_RESOLV
9# Check for general libc functions 9# Check for general libc functions
10AC_CHECK_FUNCS([asprintf freezero memmem]) 10AC_CHECK_FUNCS([asprintf freezero memmem])
11AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray]) 11AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray])
12AC_CHECK_FUNCS([strlcat strlcpy strndup strnlen strsep strtonum]) 12AC_CHECK_FUNCS([strcasecmp strlcat strlcpy strndup strnlen strsep strtonum])
13AC_CHECK_FUNCS([timegm _mkgmtime timespecsub]) 13AC_CHECK_FUNCS([timegm _mkgmtime timespecsub])
14AC_CHECK_FUNCS([getopt getprogname syslog syslog_r]) 14AC_CHECK_FUNCS([getopt getprogname syslog syslog_r])
15AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [ 15AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [
@@ -30,6 +30,7 @@ AM_CONDITIONAL([HAVE_MEMMEM], [test "x$ac_cv_func_memmem" = xyes])
30AM_CONDITIONAL([HAVE_READPASSPHRASE], [test "x$ac_cv_func_readpassphrase" = xyes]) 30AM_CONDITIONAL([HAVE_READPASSPHRASE], [test "x$ac_cv_func_readpassphrase" = xyes])
31AM_CONDITIONAL([HAVE_REALLOCARRAY], [test "x$ac_cv_func_reallocarray" = xyes]) 31AM_CONDITIONAL([HAVE_REALLOCARRAY], [test "x$ac_cv_func_reallocarray" = xyes])
32AM_CONDITIONAL([HAVE_RECALLOCARRAY], [test "x$ac_cv_func_recallocarray" = xyes]) 32AM_CONDITIONAL([HAVE_RECALLOCARRAY], [test "x$ac_cv_func_recallocarray" = xyes])
33AM_CONDITIONAL([HAVE_STRCASECMP], [test "x$ac_cv_func_strcasecmp" = xyes])
33AM_CONDITIONAL([HAVE_STRLCAT], [test "x$ac_cv_func_strlcat" = xyes]) 34AM_CONDITIONAL([HAVE_STRLCAT], [test "x$ac_cv_func_strlcat" = xyes])
34AM_CONDITIONAL([HAVE_STRLCPY], [test "x$ac_cv_func_strlcpy" = xyes]) 35AM_CONDITIONAL([HAVE_STRLCPY], [test "x$ac_cv_func_strlcpy" = xyes])
35AM_CONDITIONAL([HAVE_STRNDUP], [test "x$ac_cv_func_strndup" = xyes]) 36AM_CONDITIONAL([HAVE_STRNDUP], [test "x$ac_cv_func_strndup" = xyes])