gpg-interface: provide clear helper for struct signature_check

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>

Michael J Gruber committed Jun 23, 2014 at 09:05 UTC 01e57b5d91b0c9f2ac93708c5c2cbcd4731ddd34
4 files changed +15 -6
builtin/merge.c
+1 -4
@@ -1282,10 +1282,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1282 printf(_("Commit %s has a good GPG signature by %s\n"),
1283 hex, signature_check.signer);
1284
1285 - free(signature_check.gpg_output);
1286 - free(signature_check.gpg_status);
1287 - free(signature_check.signer);
1288 - free(signature_check.key);
1285 + signature_check_clear(&signature_check);
1286 }
1287 }
1288
gpg-interface.c
+12
@@ -7,6 +7,18 @@
7 static char *configured_signing_key;
8 static const char *gpg_program = "gpg";
9
10 +void signature_check_clear(struct signature_check *sigc)
11 +{
12 + free(sigc->gpg_output);
13 + free(sigc->gpg_status);
14 + free(sigc->signer);
15 + free(sigc->key);
16 + sigc->gpg_output = NULL;
17 + sigc->gpg_status = NULL;
18 + sigc->signer = NULL;
19 + sigc->key = NULL;
20 +}
21 +
22 void set_signing_key(const char *key)
23 {
24 free(configured_signing_key);
gpg-interface.h
+1
@@ -13,6 +13,7 @@ struct signature_check {
13 char *key;
14 };
15
16 +extern void signature_check_clear(struct signature_check *sigc);
17 extern int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key);
18 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);
19 extern int git_gpg_config(const char *, const char *, void *);
pretty.c
+1 -2
@@ -1532,8 +1532,7 @@ void format_commit_message(const struct commit *commit,
1532
1533 free(context.commit_encoding);
1534 logmsg_free(context.message, commit);
1535 - free(context.signature_check.gpg_output);
1536 - free(context.signature_check.signer);
1535 + signature_check_clear(&context.signature_check);
1536 }
1537
1538 static void pp_header(struct pretty_print_context *pp,