summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinoguchi <>2019-11-19 10:28:18 +0000
committerinoguchi <>2019-11-19 10:28:18 +0000
commit6a6fe688152b422f3d65c970dad56e7d9d28b1ee (patch)
tree1b4f0317e8dfde4ebc39e4f88e8c6d4817946968
parent8cc59d668c77391fb8bf4da4bfecadcf92a5e7a1 (diff)
downloadopenbsd-6a6fe688152b422f3d65c970dad56e7d9d28b1ee.tar.gz
openbsd-6a6fe688152b422f3d65c970dad56e7d9d28b1ee.tar.bz2
openbsd-6a6fe688152b422f3d65c970dad56e7d9d28b1ee.zip
More return value check in openssl(1) cms
Checking return value of sk_.*_new_null(). ok beck@ jsing@
-rw-r--r--src/usr.bin/openssl/cms.c52
1 files changed, 29 insertions, 23 deletions
diff --git a/src/usr.bin/openssl/cms.c b/src/usr.bin/openssl/cms.c
index a4deb06188..3762842b74 100644
--- a/src/usr.bin/openssl/cms.c
+++ b/src/usr.bin/openssl/cms.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: cms.c,v 1.15 2019/11/18 12:43:27 inoguchi Exp $ */ 1/* $OpenBSD: cms.c,v 1.16 2019/11/19 10:28:18 inoguchi Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project. 3 * project.
4 */ 4 */
@@ -274,16 +274,18 @@ cms_main(int argc, char **argv)
274 if (!args[1]) 274 if (!args[1])
275 goto argerr; 275 goto argerr;
276 args++; 276 args++;
277 if (!rr_from) 277 if (rr_from == NULL &&
278 rr_from = sk_OPENSSL_STRING_new_null(); 278 (rr_from = sk_OPENSSL_STRING_new_null()) == NULL)
279 goto end;
279 if (!sk_OPENSSL_STRING_push(rr_from, *args)) 280 if (!sk_OPENSSL_STRING_push(rr_from, *args))
280 goto end; 281 goto end;
281 } else if (!strcmp(*args, "-receipt_request_to")) { 282 } else if (!strcmp(*args, "-receipt_request_to")) {
282 if (!args[1]) 283 if (!args[1])
283 goto argerr; 284 goto argerr;
284 args++; 285 args++;
285 if (!rr_to) 286 if (rr_to == NULL &&
286 rr_to = sk_OPENSSL_STRING_new_null(); 287 (rr_to = sk_OPENSSL_STRING_new_null()) == NULL)
288 goto end;
287 if (!sk_OPENSSL_STRING_push(rr_to, *args)) 289 if (!sk_OPENSSL_STRING_push(rr_to, *args))
288 goto end; 290 goto end;
289 } else if (!strcmp(*args, "-print")) { 291 } else if (!strcmp(*args, "-print")) {
@@ -348,15 +350,16 @@ cms_main(int argc, char **argv)
348 /* If previous -signer argument add signer to list */ 350 /* If previous -signer argument add signer to list */
349 351
350 if (signerfile) { 352 if (signerfile) {
351 if (!sksigners) 353 if (sksigners == NULL &&
352 sksigners = 354 (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
353 sk_OPENSSL_STRING_new_null(); 355 goto end;
354 if (!sk_OPENSSL_STRING_push(sksigners, signerfile)) 356 if (!sk_OPENSSL_STRING_push(sksigners, signerfile))
355 goto end; 357 goto end;
356 if (!keyfile) 358 if (!keyfile)
357 keyfile = signerfile; 359 keyfile = signerfile;
358 if (!skkeys) 360 if (skkeys == NULL &&
359 skkeys = sk_OPENSSL_STRING_new_null(); 361 (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
362 goto end;
360 if (!sk_OPENSSL_STRING_push(skkeys, keyfile)) 363 if (!sk_OPENSSL_STRING_push(skkeys, keyfile))
361 goto end; 364 goto end;
362 keyfile = NULL; 365 keyfile = NULL;
@@ -402,14 +405,15 @@ cms_main(int argc, char **argv)
402 "Illegal -inkey without -signer\n"); 405 "Illegal -inkey without -signer\n");
403 goto argerr; 406 goto argerr;
404 } 407 }
405 if (!sksigners) 408 if (sksigners == NULL &&
406 sksigners = 409 (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
407 sk_OPENSSL_STRING_new_null(); 410 goto end;
408 if (!sk_OPENSSL_STRING_push(sksigners, signerfile)) 411 if (!sk_OPENSSL_STRING_push(sksigners, signerfile))
409 goto end; 412 goto end;
410 signerfile = NULL; 413 signerfile = NULL;
411 if (!skkeys) 414 if (skkeys == NULL &&
412 skkeys = sk_OPENSSL_STRING_new_null(); 415 (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
416 goto end;
413 if (!sk_OPENSSL_STRING_push(skkeys, keyfile)) 417 if (!sk_OPENSSL_STRING_push(skkeys, keyfile))
414 goto end; 418 goto end;
415 } 419 }
@@ -513,12 +517,14 @@ cms_main(int argc, char **argv)
513 } 517 }
514 /* Check to see if any final signer needs to be appended */ 518 /* Check to see if any final signer needs to be appended */
515 if (signerfile) { 519 if (signerfile) {
516 if (!sksigners) 520 if (sksigners == NULL &&
517 sksigners = sk_OPENSSL_STRING_new_null(); 521 (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
522 goto end;
518 if (!sk_OPENSSL_STRING_push(sksigners, signerfile)) 523 if (!sk_OPENSSL_STRING_push(sksigners, signerfile))
519 goto end; 524 goto end;
520 if (!skkeys) 525 if (skkeys == NULL &&
521 skkeys = sk_OPENSSL_STRING_new_null(); 526 (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
527 goto end;
522 if (!keyfile) 528 if (!keyfile)
523 keyfile = signerfile; 529 keyfile = signerfile;
524 if (!sk_OPENSSL_STRING_push(skkeys, keyfile)) 530 if (!sk_OPENSSL_STRING_push(skkeys, keyfile))
@@ -643,8 +649,9 @@ cms_main(int argc, char **argv)
643 BIO_printf(bio_err, "No secret key id\n"); 649 BIO_printf(bio_err, "No secret key id\n");
644 goto end; 650 goto end;
645 } 651 }
646 if (*args && !encerts) 652 if (*args && encerts == NULL)
647 encerts = sk_X509_new_null(); 653 if ((encerts = sk_X509_new_null()) == NULL)
654 goto end;
648 while (*args) { 655 while (*args) {
649 if (!(cert = load_cert(bio_err, *args, FORMAT_PEM, 656 if (!(cert = load_cert(bio_err, *args, FORMAT_PEM,
650 NULL, "recipient certificate file"))) 657 NULL, "recipient certificate file")))
@@ -1190,8 +1197,7 @@ make_names_stack(STACK_OF(OPENSSL_STRING) *ns)
1190 STACK_OF(GENERAL_NAMES) *ret; 1197 STACK_OF(GENERAL_NAMES) *ret;
1191 GENERAL_NAMES *gens = NULL; 1198 GENERAL_NAMES *gens = NULL;
1192 GENERAL_NAME *gen = NULL; 1199 GENERAL_NAME *gen = NULL;
1193 ret = sk_GENERAL_NAMES_new_null(); 1200 if ((ret = sk_GENERAL_NAMES_new_null()) == NULL)
1194 if (!ret)
1195 goto err; 1201 goto err;
1196 for (i = 0; i < sk_OPENSSL_STRING_num(ns); i++) { 1202 for (i = 0; i < sk_OPENSSL_STRING_num(ns); i++) {
1197 char *str = sk_OPENSSL_STRING_value(ns, i); 1203 char *str = sk_OPENSSL_STRING_value(ns, i);