summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'util.c')
-rw-r--r--util.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/util.c b/util.c
index 2ea4f96..319a870 100644
--- a/util.c
+++ b/util.c
@@ -202,6 +202,8 @@ ReadDERFromFile(SECItem *** derlist, char *filename, PRBool ascii,
}
}
der = (SECItem *) malloc(sizeof(SECItem));
+ if (der == NULL)
+ goto loser;
char *trailer = NULL;
asc = body;
@@ -221,10 +223,15 @@ ReadDERFromFile(SECItem *** derlist, char *filename, PRBool ascii,
/* Convert to binary */
rv = ATOB_ConvertAsciiToItem(der, body);
if (rv) {
+ free(der);
goto loser;
}
- if ((certsonly && !key) || (!certsonly && key))
+ if ((certsonly && !key) || (!certsonly && key)) {
PUT_Object(der, error);
+ } else {
+ free(der->data);
+ free(der);
+ }
} /* while */
} else { /* No headers and footers, translate the blob */
der = nss_ZNEW(NULL, SECItem);