0001-configure-static-linking-Fix-SSL-checks.patch 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. From bd59be8e4e339870a1400f6866a7b73ca11f6460 Mon Sep 17 00:00:00 2001
  2. From: Giulio Benetti <giulio.benetti@micronovasrl.com>
  3. Date: Wed, 12 Sep 2018 20:16:39 +0200
  4. Subject: [PATCH 1/3] configure, static linking: Fix SSL checks
  5. During checking of DTLS_method, the stub program is linked only with -ssl
  6. libssl.a lacks some function from -lcrypto:
  7. RAND_*()
  8. ERR_*()
  9. BUF_MEM_*()
  10. etc.
  11. and -lz:
  12. - inflate()
  13. - deflate()
  14. Append -lcrypto and -lz to LIBS variable when checking DTLS_method.
  15. See also https://sourceforge.net/p/net-snmp/patches/1374/.
  16. Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
  17. [bvanassche: Edited subject / rewrote this patch]
  18. ---
  19. configure | 52 ++++++++++++++++++++++++++++++++++---
  20. configure.d/config_os_libs2 | 14 +++++++---
  21. 2 files changed, 58 insertions(+), 8 deletions(-)
  22. diff --git a/configure b/configure
  23. index 6504a8e58..1116cecaa 100755
  24. --- a/configure
  25. +++ b/configure
  26. @@ -23228,16 +23228,60 @@ fi
  27. { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_md5" >&5
  28. $as_echo "$ac_cv_lib_crypto_EVP_md5" >&6; }
  29. if test "x$ac_cv_lib_crypto_EVP_md5" = xyes; then :
  30. - CRYPTO="crypto"
  31. + CRYPTO="crypto"; LIBCRYPTO="-lcrypto"
  32. +else
  33. +
  34. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_md5 in -lcrypto" >&5
  35. +$as_echo_n "checking for EVP_md5 in -lcrypto... " >&6; }
  36. +if ${ac_cv_lib_crypto_EVP_md5+:} false; then :
  37. + $as_echo_n "(cached) " >&6
  38. +else
  39. + ac_check_lib_save_LIBS=$LIBS
  40. +LIBS="-lcrypto -lz $LIBS"
  41. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  42. +/* end confdefs.h. */
  43. +
  44. +/* Override any GCC internal prototype to avoid an error.
  45. + Use char because int might match the return type of a GCC
  46. + builtin and then its argument prototype would still apply. */
  47. +#ifdef __cplusplus
  48. +extern "C"
  49. +#endif
  50. +char EVP_md5 ();
  51. +int
  52. +main ()
  53. +{
  54. +return EVP_md5 ();
  55. + ;
  56. + return 0;
  57. +}
  58. +_ACEOF
  59. +if ac_fn_c_try_link "$LINENO"; then :
  60. + ac_cv_lib_crypto_EVP_md5=yes
  61. +else
  62. + ac_cv_lib_crypto_EVP_md5=no
  63. +fi
  64. +rm -f core conftest.err conftest.$ac_objext \
  65. + conftest$ac_exeext conftest.$ac_ext
  66. +LIBS=$ac_check_lib_save_LIBS
  67. +fi
  68. +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_md5" >&5
  69. +$as_echo "$ac_cv_lib_crypto_EVP_md5" >&6; }
  70. +if test "x$ac_cv_lib_crypto_EVP_md5" = xyes; then :
  71. + CRYPTO="crypto"; LIBCRYPTO="-lcrypto -lz"
  72. fi
  73. - fi
  74. +
  75. +fi
  76. +
  77. + else
  78. + LIBCRYPTO="-l${CRYPTO}"
  79. + fi
  80. if test x$CRYPTO != x; then
  81. $as_echo "#define HAVE_LIBCRYPTO 1" >>confdefs.h
  82. - LIBCRYPTO="-l${CRYPTO}"
  83. netsnmp_save_LIBS="$LIBS"
  84. LIBS="$LIBCRYPTO"
  85. for ac_func in AES_cfb128_encrypt EVP_sha224 EVP_sha384 EVP_MD_CTX_create EVP_MD_CTX_destroy EVP_MD_CTX_new EVP_MD_CTX_free DH_set0_pqg DH_get0_pqg DH_get0_key ASN1_STRING_get0_data X509_NAME_ENTRY_get_object X509_NAME_ENTRY_get_data X509_get_signature_nid
  86. @@ -23291,7 +23335,7 @@ _ACEOF
  87. LIBS="$netsnmp_save_LIBS"
  88. fi
  89. netsnmp_save_LIBS="$LIBS"
  90. - LIBS="-lssl"
  91. + LIBS="-lssl $LIBCRYPTO"
  92. for ac_func in TLS_method TLSv1_method DTLS_method DTLSv1_method SSL_library_init SSL_load_error_strings
  93. do :
  94. as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
  95. diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
  96. index 4a1ad1551..75214cfff 100644
  97. --- a/configure.d/config_os_libs2
  98. +++ b/configure.d/config_os_libs2
  99. @@ -306,13 +306,19 @@ if test "x$tryopenssl" != "xno" -a "x$tryopenssl" != "xinternal"; then
  100. LIBS="$netsnmp_save_LIBS"
  101. if test x$CRYPTO = x; then
  102. - AC_CHECK_LIB([crypto], [EVP_md5], [CRYPTO="crypto"])
  103. - fi
  104. + AC_CHECK_LIB([crypto], [EVP_md5],
  105. + [CRYPTO="crypto"; LIBCRYPTO="-lcrypto"], [
  106. + AC_CHECK_LIB([crypto], [EVP_md5],
  107. + [CRYPTO="crypto"; LIBCRYPTO="-lcrypto -lz"], [],
  108. + [-lz])
  109. + ])
  110. + else
  111. + LIBCRYPTO="-l${CRYPTO}"
  112. + fi
  113. if test x$CRYPTO != x; then
  114. AC_DEFINE(HAVE_LIBCRYPTO, 1,
  115. [Define to 1 if you have the OpenSSL library (-lcrypto or -leay32).])
  116. - LIBCRYPTO="-l${CRYPTO}"
  117. netsnmp_save_LIBS="$LIBS"
  118. LIBS="$LIBCRYPTO"
  119. AC_CHECK_FUNCS([AES_cfb128_encrypt]dnl
  120. @@ -342,7 +348,7 @@ if test "x$tryopenssl" != "xno" -a "x$tryopenssl" != "xinternal"; then
  121. LIBS="$netsnmp_save_LIBS"
  122. fi
  123. netsnmp_save_LIBS="$LIBS"
  124. - LIBS="-lssl"
  125. + LIBS="-lssl $LIBCRYPTO"
  126. AC_CHECK_FUNCS([TLS_method TLSv1_method DTLS_method DTLSv1_method]dnl
  127. [SSL_library_init SSL_load_error_strings])
  128. LIBS="$netsnmp_save_LIBS"
  129. --
  130. 2.17.1