]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gpg-interface: provide clear helper for struct signature_check
authorMichael J Gruber <git@drmicha.warpmail.net>
Mon, 23 Jun 2014 07:05:47 +0000 (09:05 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Jun 2014 22:50:29 +0000 (15:50 -0700)
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@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c
gpg-interface.c
gpg-interface.h
pretty.c

index 428ca247bd17e0f18776b46d40a09282b0b955de..e50323d423ed7a9dd7b41b7c007669da309b6e1d 100644 (file)
@@ -1282,10 +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.gpg_output);
-                       free(signature_check.gpg_status);
-                       free(signature_check.signer);
-                       free(signature_check.key);
+                       signature_check_clear(&signature_check);
                }
        }
 
index 8b0e87436b687ce26e3e4987129a2fc171069280..e71b59daf67b28f0699035e7834bb6c0b56c5425 100644 (file)
@@ -7,6 +7,18 @@
 static char *configured_signing_key;
 static const char *gpg_program = "gpg";
 
+void signature_check_clear(struct signature_check *sigc)
+{
+       free(sigc->gpg_output);
+       free(sigc->gpg_status);
+       free(sigc->signer);
+       free(sigc->key);
+       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);
index a85cb5bc97cdd61000b4c48c54faa656aa3cfaca..9f0784a411da27a2d0a7ea92f6bc4e0eb8f1f974 100644 (file)
@@ -13,6 +13,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 *);
index e1e2cad36d6d2d2773f05c6e69b0013ed8d01240..f6a0023dd2f05e3f807e857f88b6767b028f553e 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -1532,8 +1532,7 @@ void format_commit_message(const struct commit *commit,
 
        free(context.commit_encoding);
        logmsg_free(context.message, commit);
-       free(context.signature_check.gpg_output);
-       free(context.signature_check.signer);
+       signature_check_clear(&context.signature_check);
 }
 
 static void pp_header(struct pretty_print_context *pp,