]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Call OSSL_STORE_INFO_free on error path
authorMark Andrews <marka@isc.org>
Mon, 30 Jan 2023 13:57:57 +0000 (00:57 +1100)
committerMark Andrews <marka@isc.org>
Tue, 7 Feb 2023 12:29:34 +0000 (12:29 +0000)
lib/dns/openssl_link.c

index 3ec31330daeb29f6e6434631aace2652483d8efd..017e5d6977c5218d3f88ab5ee609680a11d1854a 100644 (file)
@@ -301,19 +301,23 @@ dst__openssl_fromlabel_provider(int key_base_id, const char *engine,
                switch (OSSL_STORE_INFO_get_type(info)) {
                case OSSL_STORE_INFO_PKEY:
                        if (*ppriv != NULL) {
+                               OSSL_STORE_INFO_free(info);
                                DST_RET(DST_R_INVALIDPRIVATEKEY);
                        }
                        *ppriv = OSSL_STORE_INFO_get1_PKEY(info);
                        if (EVP_PKEY_get_base_id(*ppriv) != key_base_id) {
+                               OSSL_STORE_INFO_free(info);
                                DST_RET(DST_R_BADKEYTYPE);
                        }
                        break;
                case OSSL_STORE_INFO_PUBKEY:
                        if (*ppub != NULL) {
+                               OSSL_STORE_INFO_free(info);
                                DST_RET(DST_R_INVALIDPUBLICKEY);
                        }
                        *ppub = OSSL_STORE_INFO_get1_PUBKEY(info);
                        if (EVP_PKEY_get_base_id(*ppub) != key_base_id) {
+                               OSSL_STORE_INFO_free(info);
                                DST_RET(DST_R_BADKEYTYPE);
                        }
                        break;