diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2014-06-27 03:21:10 +0100 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2014-06-27 14:53:21 +0100 |
commit | 14247e4f599ac24b10fd61c69599e5e1bf72207b (patch) | |
tree | 4159a5c2cadcd35b0a3cf524d197243570fc3f8d /apps | |
parent | 72bc04942afa7a42492557f8f8ce79e6da01737c (diff) |
Memory leak and NULL dereference fixes.
PR#3403
(cherry picked from commit d2aea038297e0c64ca66e6844cbb37377365885e)
Diffstat (limited to 'apps')
-rw-r--r-- | apps/apps.c | 4 | ||||
-rw-r--r-- | apps/ca.c | 3 | ||||
-rw-r--r-- | apps/crl2p7.c | 8 |
3 files changed, 14 insertions, 1 deletions
diff --git a/apps/apps.c b/apps/apps.c index 6bf15f2c53..8d7d2f9a9e 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -390,6 +390,8 @@ int chopup_args(ARGS *arg, char *buf, int *argc, char **argv[]) { arg->count=20; arg->data=(char **)OPENSSL_malloc(sizeof(char *)*arg->count); + if (arg->data == NULL) + return 0; } for (i=0; i<arg->count; i++) arg->data[i]=NULL; @@ -1542,6 +1544,8 @@ char *make_config_name() len=strlen(t)+strlen(OPENSSL_CONF)+2; p=OPENSSL_malloc(len); + if (p == NULL) + return NULL; BUF_strlcpy(p,t,len); #ifndef OPENSSL_SYS_VMS BUF_strlcat(p,"/",len); @@ -2752,6 +2752,9 @@ char *make_revocation_str(int rev_type, char *rev_arg) revtm = X509_gmtime_adj(NULL, 0); + if (!revtm) + return NULL; + i = revtm->length + 1; if (reason) i += strlen(reason) + 1; diff --git a/apps/crl2p7.c b/apps/crl2p7.c index bbc83774db..42c6886b83 100644 --- a/apps/crl2p7.c +++ b/apps/crl2p7.c @@ -141,7 +141,13 @@ int MAIN(int argc, char **argv) { if (--argc < 1) goto bad; if(!certflst) certflst = sk_OPENSSL_STRING_new_null(); - sk_OPENSSL_STRING_push(certflst,*(++argv)); + if (!certflst) + goto end; + if (!sk_OPENSSL_STRING_push(certflst,*(++argv))) + { + sk_OPENSSL_STRING_free(certflst); + goto end; + } } else { |