The struct has been growing members whose malloced memory needs to be freed. Do this with one helper function so that no malloced memory shall be left unfreed. Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> --- builtin/merge.c | 6 +----- builtin/verify-commit.c | 5 +---- gpg-interface.c | 14 ++++++++++++++ gpg-interface.h | 1 + pretty.c | 5 +---- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/builtin/merge.c b/builtin/merge.c index 6a9812a..e50323d 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1282,11 +1282,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix) printf(_("Commit %s has a good GPG signature by %s\n"), hex, signature_check.signer); - free(signature_check.payload); - free(signature_check.gpg_output); - free(signature_check.gpg_status); - free(signature_check.signer); - free(signature_check.key); + signature_check_clear(&signature_check); } } diff --git a/builtin/verify-commit.c b/builtin/verify-commit.c index 69b7c6d..d254fcf 100644 --- a/builtin/verify-commit.c +++ b/builtin/verify-commit.c @@ -32,10 +32,7 @@ static int run_gpg_verify(const unsigned char *sha1, const char *buf, unsigned l if (signature_check.gpg_output) fputs(signature_check.gpg_output, stderr); - free(signature_check.gpg_output); - free(signature_check.gpg_status); - free(signature_check.signer); - free(signature_check.key); + signature_check_clear(&signature_check); return signature_check.result != 'G'; } diff --git a/gpg-interface.c b/gpg-interface.c index 8b0e874..ff07012 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -7,6 +7,20 @@ static char *configured_signing_key; static const char *gpg_program = "gpg"; +void signature_check_clear(struct signature_check *sigc) +{ + free(sigc->payload); + free(sigc->gpg_output); + free(sigc->gpg_status); + free(sigc->signer); + free(sigc->key); + sigc->payload = NULL; + sigc->gpg_output = NULL; + sigc->gpg_status = NULL; + sigc->signer = NULL; + sigc->key = NULL; +} + void set_signing_key(const char *key) { free(configured_signing_key); diff --git a/gpg-interface.h b/gpg-interface.h index d727c25..37c23da 100644 --- a/gpg-interface.h +++ b/gpg-interface.h @@ -14,6 +14,7 @@ struct signature_check { char *key; }; +extern void signature_check_clear(struct signature_check *sigc); extern int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key); extern int verify_signed_buffer(const char *payload, size_t payload_size, const char *signature, size_t signature_size, struct strbuf *gpg_output, struct strbuf *gpg_status); extern int git_gpg_config(const char *, const char *, void *); diff --git a/pretty.c b/pretty.c index 24fb877..ac901b8 100644 --- a/pretty.c +++ b/pretty.c @@ -1537,10 +1537,7 @@ void format_commit_message(const struct commit *commit, free(context.commit_encoding); logmsg_free(context.message, commit); - free(context.signature_check.payload); - free(context.signature_check.gpg_output); - free(context.signature_check.gpg_status); - free(context.signature_check.signer); + signature_check_clear(&context.signature_check); } static void pp_header(struct pretty_print_context *pp, -- 2.0.0.426.g37dbf84 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html