Fix signature_check_clear() to free only values that are non-NULL. This especially applies to 'key' and 'signer' members that can be NULL during normal operations, depending on exact GnuPG output. While at it, also allow other members to be NULL to make the function easier to use, even if there is no real need to account for that right now. Signed-off-by: Michał Górny <mgorny@xxxxxxxxxx> --- gpg-interface.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gpg-interface.c b/gpg-interface.c index 35c25106a..9aedaf464 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -15,9 +15,14 @@ static const char *gpg_program = "gpg"; void signature_check_clear(struct signature_check *sigc) { - FREE_AND_NULL(sigc->payload); - FREE_AND_NULL(sigc->gpg_output); - FREE_AND_NULL(sigc->gpg_status); - FREE_AND_NULL(sigc->signer); - FREE_AND_NULL(sigc->key); + if (sigc->payload) + FREE_AND_NULL(sigc->payload); + if (sigc->gpg_output) + FREE_AND_NULL(sigc->gpg_output); + if (sigc->gpg_status) + FREE_AND_NULL(sigc->gpg_status); + if (sigc->signer) + FREE_AND_NULL(sigc->signer); + if (sigc->key) + FREE_AND_NULL(sigc->key); } -- 2.18.0