From 708cedbdad0da1d5e794589962564ca0363ab18e Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Sun, 8 Dec 2019 22:14:48 +0100 Subject: [PATCH] dir: Correctly free allocated memory on error Thanks oss-fuzz https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19265 --- src/libopensc/dir.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libopensc/dir.c b/src/libopensc/dir.c index 9d9abf9a..5a8914d9 100644 --- a/src/libopensc/dir.c +++ b/src/libopensc/dir.c @@ -118,6 +118,7 @@ parse_dir_record(sc_card_t *card, u8 ** buf, size_t *buflen, int rec_nr) if (asn1_dirrecord[2].flags & SC_ASN1_PRESENT && path_len > 0) { /* application path present: ignore AID */ if (path_len > SC_MAX_PATH_SIZE) { + free(app->label); free(app); LOG_TEST_RET(ctx, SC_ERROR_INVALID_ASN1_OBJECT, "Application path is too long."); } @@ -135,6 +136,7 @@ parse_dir_record(sc_card_t *card, u8 ** buf, size_t *buflen, int rec_nr) if (asn1_dirrecord[3].flags & SC_ASN1_PRESENT) { app->ddo.value = malloc(ddo_len); if (app->ddo.value == NULL) { + free(app->label); free(app); LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate DDO value"); }