diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c index 3852abc8..ba9d6125 100644 --- a/src/libopensc/pkcs15.c +++ b/src/libopensc/pkcs15.c @@ -911,14 +911,19 @@ sc_dup_app_info(const struct sc_app_info *info) if (info->label) { out->label = strdup(info->label); - if (!out->label) + if (!out->label) { + free(out); return NULL; + } } else out->label = NULL; out->ddo.value = malloc(info->ddo.len); - if (!out->ddo.value) + if (!out->ddo.value) { + free(out->label); + free(out); return NULL; + } memcpy(out->ddo.value, info->ddo.value, info->ddo.len); return out;