dnsdist/dnsdist-1.7.0-openssl30.patch

38 lines
1.6 KiB
Diff

From d0fe73a0910c52c5ad9a57fbebea260ef22f4be4 Mon Sep 17 00:00:00 2001
From: Remi Gacogne <remi.gacogne@powerdns.com>
Date: Mon, 17 Jan 2022 15:44:01 +0100
Subject: [PATCH] dnsdist-1.7.x: Fix compilation with OpenSSL 3.0.0
---
pdns/credentials.cc | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/pdns/credentials.cc b/pdns/credentials.cc
index b3a09e5c819..d058a948ac1 100644
--- a/pdns/credentials.cc
+++ b/pdns/credentials.cc
@@ -31,6 +31,7 @@
#ifdef HAVE_EVP_PKEY_CTX_SET1_SCRYPT_SALT
#include <openssl/evp.h>
#include <openssl/kdf.h>
+#include <openssl/opensslv.h>
#include <openssl/rand.h>
#endif
@@ -105,8 +106,13 @@ static std::string hashPasswordInternal(const std::string& password, const std::
throw std::runtime_error("Error intializing the scrypt context to hash the supplied password");
}
- // OpenSSL 3.0 changed the string arg to const unsigned char*, other versions use const char *, so cast to const void * to satisfy both
- if (EVP_PKEY_CTX_set1_pbe_pass(pctx.get(), reinterpret_cast<const void*>(password.data()), password.size()) <= 0) {
+ // OpenSSL 3.0 changed the string arg to const unsigned char*, other versions use const char *
+#if OPENSSL_VERSION_MAJOR >= 3
+ auto passwordData = reinterpret_cast<const char*>(password.data());
+#else
+ auto passwordData = reinterpret_cast<const unsigned char*>(password.data());
+#endif
+ if (EVP_PKEY_CTX_set1_pbe_pass(pctx.get(), passwordData, password.size()) <= 0) {
throw std::runtime_error("Error adding the password to the scrypt context to hash the supplied password");
}