From: Dustin L. Howett Date: Tue, 26 May 2026 19:38:40 +0000 (-0500) Subject: Merge pull request #3049 from KongQBin/master X-Git-Tag: v3.8.8~91 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b0b9eff5bbadcea106a7d0bad53c4dc9ba2d8dcc;p=thirdparty%2Flibarchive.git Merge pull request #3049 from KongQBin/master build: fix global state leakage in crypto/library checks (cherry picked from commit 7235ae87141a95911490a1261941b27fd2b93960) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 00b83d2d4..d15fa3877 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -866,11 +866,14 @@ IF(ENABLE_MBEDTLS) LIST(APPEND ADDITIONAL_LIBS ${MBEDCRYPTO_LIBRARY}) INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIRS}) + CMAKE_PUSH_CHECK_STATE() LIST(APPEND CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS}) LA_CHECK_INCLUDE_FILE("mbedtls/aes.h" HAVE_MBEDTLS_AES_H) LA_CHECK_INCLUDE_FILE("mbedtls/md.h" HAVE_MBEDTLS_MD_H) LA_CHECK_INCLUDE_FILE("mbedtls/pkcs5.h" HAVE_MBEDTLS_PKCS5_H) LA_CHECK_INCLUDE_FILE("mbedtls/version.h" HAVE_MBEDTLS_VERSION_H) + CMAKE_POP_CHECK_STATE() + ENDIF(MBEDTLS_FOUND) MARK_AS_ADVANCED(CLEAR MBEDTLS_INCLUDE_DIRS) MARK_AS_ADVANCED(CLEAR MBEDCRYPTO_LIBRARY) @@ -886,6 +889,7 @@ IF(ENABLE_NETTLE) LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES}) INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR}) + CMAKE_PUSH_CHECK_STATE() LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR}) LA_CHECK_INCLUDE_FILE("nettle/aes.h" HAVE_NETTLE_AES_H) LA_CHECK_INCLUDE_FILE("nettle/hmac.h" HAVE_NETTLE_HMAC_H) @@ -894,6 +898,8 @@ IF(ENABLE_NETTLE) LA_CHECK_INCLUDE_FILE("nettle/ripemd160.h" HAVE_NETTLE_RIPEMD160_H) LA_CHECK_INCLUDE_FILE("nettle/sha.h" HAVE_NETTLE_SHA_H) LA_CHECK_INCLUDE_FILE("nettle/version.h" HAVE_NETTLE_VERSION_H) + CMAKE_POP_CHECK_STATE() + ENDIF(NETTLE_FOUND) MARK_AS_ADVANCED(CLEAR NETTLE_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR NETTLE_LIBRARIES) @@ -909,11 +915,15 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") SET(HAVE_LIBCRYPTO 1) INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY}) + + CMAKE_PUSH_CHECK_STATE() SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) LA_CHECK_INCLUDE_FILE("openssl/evp.h" HAVE_OPENSSL_EVP_H) LA_CHECK_INCLUDE_FILE("openssl/opensslv.h" HAVE_OPENSSL_OPENSSLV_H) CHECK_FUNCTION_EXISTS(PKCS5_PBKDF2_HMAC_SHA1 HAVE_PKCS5_PBKDF2_HMAC_SHA1) + CMAKE_POP_CHECK_STATE() + ENDIF(OPENSSL_FOUND) ELSE() SET(OPENSSL_FOUND FALSE) # Override cached value @@ -934,9 +944,13 @@ ENDIF(NOT OPENSSL_FOUND) # libbsd for readpassphrase on Haiku IF("${CMAKE_SYSTEM_NAME}" MATCHES "Haiku") MESSAGE(STATUS "Adding libbsd for Haiku") + + CMAKE_PUSH_CHECK_STATE() SET(CMAKE_REQUIRED_LIBRARIES "bsd") FIND_LIBRARY(LIBBSD_LIBRARY NAMES bsd) LIST(APPEND ADDITIONAL_LIBS ${LIBBSD_LIBRARY}) + CMAKE_POP_CHECK_STATE() + ENDIF("${CMAKE_SYSTEM_NAME}" MATCHES "Haiku") #