diff options
author | inoguchi <> | 2019-11-19 10:28:18 +0000 |
---|---|---|
committer | inoguchi <> | 2019-11-19 10:28:18 +0000 |
commit | 6a6fe688152b422f3d65c970dad56e7d9d28b1ee (patch) | |
tree | 1b4f0317e8dfde4ebc39e4f88e8c6d4817946968 | |
parent | 8cc59d668c77391fb8bf4da4bfecadcf92a5e7a1 (diff) | |
download | openbsd-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.c | 52 |
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); |