]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/dnssec kr_rrset_validate_with_key(): deduplicate cleanup
authorVladimír Čunát <vladimir.cunat@nic.cz>
Sat, 30 Dec 2023 08:20:56 +0000 (09:20 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 22 Feb 2024 13:01:11 +0000 (14:01 +0100)
(cherry picked from commit f9ba52e6f54bc1db122870df50cb364cb977436e)

lib/dnssec.c

index d6ae3cc673334ec06c7341bdfe79c4e365463a4f..c5363572e7766b0df3184754b34ea63b5a2b2e3f 100644 (file)
@@ -356,9 +356,8 @@ static int kr_rrset_validate_with_key(kr_rrset_validation_ctx_t *vctx,
                        int retv = validate_rrsig_rr(&val_flgs, covered_labels, rdata_j,
                                                        key_alg, keytag, vctx);
                        if (retv == kr_error(EAGAIN)) {
-                               kr_dnssec_key_free(&created_key);
                                vctx->result = retv;
-                               return retv;
+                               goto finish;
                        } else if (retv != 0) {
                                continue;
                        }
@@ -392,15 +391,15 @@ static int kr_rrset_validate_with_key(kr_rrset_validation_ctx_t *vctx,
 
                        trim_ttl(covered, rdata_j, vctx);
 
-                       kr_dnssec_key_free(&created_key);
-                       vctx->result = kr_ok();
                        kr_rank_set(&vctx->rrs->at[i]->rank, KR_RANK_SECURE); /* upgrade from bogus */
-                       return vctx->result;
+                       vctx->result = kr_ok();
+                       goto finish;
                }
        }
        /* No applicable key found, cannot be validated. */
-       kr_dnssec_key_free(&created_key);
        vctx->result = kr_error(ENOENT);
+finish:
+       kr_dnssec_key_free(&created_key);
        return vctx->result;
 }