]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Appease clang++ 12 asan on MacOS 9925/head
authorOtto Moerbeek <otto@drijf.net>
Fri, 8 Jan 2021 12:51:19 +0000 (13:51 +0100)
committerOtto Moerbeek <otto@drijf.net>
Fri, 8 Jan 2021 13:01:13 +0000 (14:01 +0100)
MacOS clang++ 12 with asan does not like to access a vector of bytes
outside it's begin()..end(), even thouh we assured there is capacity.
So make sure the size is set before groping inside the vector.

pdns/test-dnscrypt_cc.cc

index 79efcf56c9ad021168e0bd0fd48b1e517a56ca43..89658906c44947bf44810799cf1e2e055b1a74a2 100644 (file)
@@ -157,8 +157,8 @@ BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryValid) {
     requiredSize = DNSCryptQuery::s_minUDPLength;
   }
 
-  plainQuery.reserve(requiredSize);
   uint16_t len = plainQuery.size();
+  plainQuery.resize(requiredSize);
   uint16_t encryptedResponseLen = 0;
 
   int res = ctx->encryptQuery((char*) plainQuery.data(), len, plainQuery.capacity(), clientPublicKey, clientPrivateKey, clientNonce, false, &encryptedResponseLen, std::make_shared<DNSCryptCert>(resolverCert));
@@ -245,9 +245,8 @@ BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryValidWithOldKey) {
     requiredSize = DNSCryptQuery::s_minUDPLength;
   }
 
-  plainQuery.reserve(requiredSize);
-
   uint16_t len = plainQuery.size();
+  plainQuery.resize(requiredSize);
   uint16_t encryptedResponseLen = 0;
 
   int res = ctx->encryptQuery((char*) plainQuery.data(), len, plainQuery.capacity(), clientPublicKey, clientPrivateKey, clientNonce, false, &encryptedResponseLen, std::make_shared<DNSCryptCert>(resolverCert));
@@ -308,9 +307,8 @@ BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryInvalidWithWrongKey) {
     requiredSize = DNSCryptQuery::s_minUDPLength;
   }
 
-  plainQuery.reserve(requiredSize);
-
   uint16_t len = plainQuery.size();
+  plainQuery.resize(requiredSize);
   uint16_t encryptedResponseLen = 0;
 
   int res = ctx->encryptQuery((char*) plainQuery.data(), len, plainQuery.capacity(), clientPublicKey, clientPrivateKey, clientNonce, false, &encryptedResponseLen, std::make_shared<DNSCryptCert>(resolverCert));