diff --git a/scripts/null-check-free.cocci b/scripts/null-check-free.cocci new file mode 100644 index 0000000000000000000000000000000000000000..0aab4224347df33788f0a644c58c18f09ef865da --- /dev/null +++ b/scripts/null-check-free.cocci @@ -0,0 +1,14 @@ +// +// No null check required before calling free() +// + +@@ +expression E; +@@ +( +-if (E) { free(E); } ++free(E); +| +-if (E != NULL) { free(E); } ++free(E); +) diff --git a/src/knot/conf/conf.c b/src/knot/conf/conf.c index d0662eb74b8d440ef2d7146c57a304600d475103..24b1c64c94f9d4c022b8ad84018942532e2e8942 100644 --- a/src/knot/conf/conf.c +++ b/src/knot/conf/conf.c @@ -922,9 +922,7 @@ void conf_free_log(conf_log_t *log) return; } - if (log->file) { - free(log->file); - } + free(log->file); /* Free loglevel mapping. */ node *n = 0, *nxt = 0; diff --git a/src/libknot/dname.c b/src/libknot/dname.c index f1afed8fabf2412f58d8ef6fc615e3686d4437ce..aab5929c35418a85f929b0c10ec1faa4f683a8cf 100644 --- a/src/libknot/dname.c +++ b/src/libknot/dname.c @@ -1113,13 +1113,9 @@ void knot_dname_free(knot_dname_t **dname) return; } - if ((*dname)->name != NULL) { - free((*dname)->name); - } + free((*dname)->name); - if((*dname)->labels != NULL) { - free((*dname)->labels); - } + free((*dname)->labels); // slab_free(*dname); diff --git a/src/libknot/edns.c b/src/libknot/edns.c index 51b7b63feab98dca9bdc335cbe2623ae72607f19..5990f70cce0d0ef39fd5fc01b5197af14a636df4 100644 --- a/src/libknot/edns.c +++ b/src/libknot/edns.c @@ -423,9 +423,7 @@ void knot_edns_free_options(knot_opt_rr_t *opt_rr) /* Free the option data, if any. */ for (int i = 0; i < opt_rr->option_count; i++) { knot_opt_option_t *option = &(opt_rr->options[i]); - if (option->data != NULL) { - free(option->data); - } + free(option->data); } free(opt_rr->options); } diff --git a/src/libknot/nameserver/name-server.c b/src/libknot/nameserver/name-server.c index 54c29772db7a41eceac5dce86816213f5273a570..8197b6c26674b263af124fb2b90aa6ea3c58011a 100644 --- a/src/libknot/nameserver/name-server.c +++ b/src/libknot/nameserver/name-server.c @@ -448,9 +448,7 @@ dbg_ns_exec_verb( ++i; } - if (rrsets != NULL) { - free(rrsets); - } + free(rrsets); break; } case KNOT_RRTYPE_RRSIG: { @@ -2645,9 +2643,7 @@ rrsigs: ++i; } - if (rrsets != NULL) { - free(rrsets); - } + free(rrsets); /*! \todo maybe distinguish some error codes. */ //params->ret = (ret == 0) ? KNOT_EOK : KNOT_ERROR; diff --git a/src/libknot/nsec3.c b/src/libknot/nsec3.c index 65c9923a357ec12a533eb7c1113ddd1df6954773..a239951028e406aa58336d9dd85d7942b5cb91ac 100644 --- a/src/libknot/nsec3.c +++ b/src/libknot/nsec3.c @@ -257,7 +257,5 @@ int knot_nsec3_sha1(const knot_nsec3_params_t *params, void knot_nsec3_params_free(knot_nsec3_params_t *params) { - if (params->salt != NULL) { - free(params->salt); - } + free(params->salt); } diff --git a/src/libknot/sign/key.c b/src/libknot/sign/key.c index 3ddee8a447fd07933cc88e1be1328326d16a19b1..9dd940cdb6928e21b6a6ac11d7f0e1ae71745b99 100644 --- a/src/libknot/sign/key.c +++ b/src/libknot/sign/key.c @@ -200,8 +200,7 @@ static int key_param_string(const void *save_to, char *value) { char **parameter = (char **)save_to; - if (*parameter) - free(*parameter); + free(*parameter); *parameter = strdup(value); return *parameter ? KNOT_EOK : KNOT_ENOMEM; @@ -353,8 +352,7 @@ int knot_load_key_params(const char *filename, knot_key_params_t *key_params) if (result != KNOT_EOK) break; } - if (buffer) - free(buffer); + free(buffer); fclose(fp); free(public_key); @@ -424,12 +422,6 @@ int knot_copy_key_params(const knot_key_params_t *src, knot_key_params_t *dst) return KNOT_EOK; } -static void free_string_if_set(char *string) -{ - if (string) - free(string); -} - /*! * \brief Frees the key parameters. */ @@ -440,25 +432,25 @@ int knot_free_key_params(knot_key_params_t *key_params) if (key_params->name) knot_dname_release(key_params->name); - free_string_if_set(key_params->secret); - - free_string_if_set(key_params->modulus); - free_string_if_set(key_params->public_exponent); - free_string_if_set(key_params->private_exponent); - free_string_if_set(key_params->prime_one); - free_string_if_set(key_params->prime_two); - free_string_if_set(key_params->exponent_one); - free_string_if_set(key_params->exponent_two); - free_string_if_set(key_params->coefficient); - - free_string_if_set(key_params->prime); - free_string_if_set(key_params->generator); - free_string_if_set(key_params->subprime); - free_string_if_set(key_params->base); - free_string_if_set(key_params->private_value); - free_string_if_set(key_params->public_value); - - free_string_if_set(key_params->private_key); + free(key_params->secret); + + free(key_params->modulus); + free(key_params->public_exponent); + free(key_params->private_exponent); + free(key_params->prime_one); + free(key_params->prime_two); + free(key_params->exponent_one); + free(key_params->exponent_two); + free(key_params->coefficient); + + free(key_params->prime); + free(key_params->generator); + free(key_params->subprime); + free(key_params->base); + free(key_params->private_value); + free(key_params->public_value); + + free(key_params->private_key); memset(key_params, '\0', sizeof(knot_key_params_t)); diff --git a/src/libknot/zone/zone-contents.c b/src/libknot/zone/zone-contents.c index 4d6562d01cbf66c35186987e840b80d76dc89597..d125ac029d072a3edca1239605ea28e6e99dc506 100644 --- a/src/libknot/zone/zone-contents.c +++ b/src/libknot/zone/zone-contents.c @@ -643,9 +643,7 @@ dbg_zone_exec_verb( char *n = knot_dname_to_str(name); dbg_zone("Error while encoding hashed name %s to base32.\n", n); free(n); - if (name_b32 != NULL) { - free(name_b32); - } + free(name_b32); return KNOT_ECRYPTO; } diff --git a/src/utils/common/exec.c b/src/utils/common/exec.c index cbc0071d0bd1c1348770b8ae1d2868d0e7f74f7f..c7f28737da9b36ad7c87c3585a2d77fa054790af 100644 --- a/src/utils/common/exec.c +++ b/src/utils/common/exec.c @@ -571,9 +571,7 @@ void free_sign_context(sign_context_t *ctx) knot_dnssec_key_free(&ctx->dnssec_key); } - if (ctx->digest) { - free(ctx->digest); - } + free(ctx->digest); memset(ctx, '\0', sizeof(sign_context_t)); }