From a83da8a947232c0c6f084cbbfeb7b979fe554368 Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Wed, 29 Apr 2015 23:22:30 +0200 Subject: [PATCH] pkcs15-crypt: fixed resource leak --- src/tools/pkcs15-crypt.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/tools/pkcs15-crypt.c b/src/tools/pkcs15-crypt.c index 7c257c3f..bbc0008b 100644 --- a/src/tools/pkcs15-crypt.c +++ b/src/tools/pkcs15-crypt.c @@ -326,15 +326,17 @@ static int get_key(unsigned int usage, sc_pkcs15_object_t **result) pincode = get_pin(pin); if (((pincode == NULL || *pincode == '\0')) && - !(p15card->card->reader->capabilities & SC_READER_CAP_PIN_PAD)) - return 5; + !(p15card->card->reader->capabilities & SC_READER_CAP_PIN_PAD)) { + free(pincode); + return 5; + } r = sc_pkcs15_verify_pin(p15card, pin, (const u8 *)pincode, pincode ? strlen(pincode) : 0); + free(pincode); if (r) { fprintf(stderr, "PIN code verification failed: %s\n", sc_strerror(r)); return 5; } - free(pincode); if (verbose) fprintf(stderr, "PIN code correct.\n"); prev_pin = pin;