diff options
author | joshua <> | 2022-11-11 18:24:32 +0000 |
---|---|---|
committer | joshua <> | 2022-11-11 18:24:32 +0000 |
commit | e548e2833a12773ab82878ccd47964878019aee8 (patch) | |
tree | 1573a24dbd1216a77f8c86d6f51efd1debef2fa6 | |
parent | 167103faa44f8407455f11f6599e9919e2b22653 (diff) | |
download | openbsd-e548e2833a12773ab82878ccd47964878019aee8.tar.gz openbsd-e548e2833a12773ab82878ccd47964878019aee8.tar.bz2 openbsd-e548e2833a12773ab82878ccd47964878019aee8.zip |
Clean up openssl(1) command execution.
This cleans up the code that handles command execution for openssl(1),
displays the help message when 'openssl help' is executed, and exits
with code 1 when an invalid command is executed, matching the behaviour
of OpenSSL version 1.1+ and above.
ok tb@
-rw-r--r-- | src/usr.bin/openssl/openssl.c | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/usr.bin/openssl/openssl.c b/src/usr.bin/openssl/openssl.c index e931b7a33e..1b1cea6098 100644 --- a/src/usr.bin/openssl/openssl.c +++ b/src/usr.bin/openssl/openssl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: openssl.c,v 1.31 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: openssl.c,v 1.32 2022/11/11 18:24:32 joshua Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -497,10 +497,9 @@ do_cmd(LHASH_OF(FUNCTION) * prog, int argc, char *argv[]) | |||
497 | FUNCTION f, *fp; | 497 | FUNCTION f, *fp; |
498 | int ret = 1; | 498 | int ret = 1; |
499 | 499 | ||
500 | if ((argc <= 0) || (argv[0] == NULL)) { | 500 | if (argc <= 0 || argv[0] == NULL) |
501 | ret = 0; | 501 | return 0; |
502 | goto end; | 502 | |
503 | } | ||
504 | f.name = argv[0]; | 503 | f.name = argv[0]; |
505 | fp = lh_FUNCTION_retrieve(prog, &f); | 504 | fp = lh_FUNCTION_retrieve(prog, &f); |
506 | if (fp == NULL) { | 505 | if (fp == NULL) { |
@@ -514,9 +513,16 @@ do_cmd(LHASH_OF(FUNCTION) * prog, int argc, char *argv[]) | |||
514 | fp = &f; | 513 | fp = &f; |
515 | } | 514 | } |
516 | } | 515 | } |
517 | if (fp != NULL) { | 516 | |
518 | ret = fp->func(argc, argv); | 517 | if (fp != NULL) |
519 | } else if ((strncmp(argv[0], "no-", 3)) == 0) { | 518 | return fp->func(argc, argv); |
519 | |||
520 | if (strcmp(argv[0], "help") == 0) { | ||
521 | print_help(); | ||
522 | return 0; | ||
523 | } | ||
524 | |||
525 | if ((strncmp(argv[0], "no-", 3)) == 0) { | ||
520 | BIO *bio_stdout = BIO_new_fp(stdout, BIO_NOCLOSE); | 526 | BIO *bio_stdout = BIO_new_fp(stdout, BIO_NOCLOSE); |
521 | f.name = argv[0] + 3; | 527 | f.name = argv[0] + 3; |
522 | ret = (lh_FUNCTION_retrieve(prog, &f) != NULL); | 528 | ret = (lh_FUNCTION_retrieve(prog, &f) != NULL); |
@@ -525,8 +531,10 @@ do_cmd(LHASH_OF(FUNCTION) * prog, int argc, char *argv[]) | |||
525 | else | 531 | else |
526 | BIO_printf(bio_stdout, "%s\n", argv[0] + 3); | 532 | BIO_printf(bio_stdout, "%s\n", argv[0] + 3); |
527 | BIO_free_all(bio_stdout); | 533 | BIO_free_all(bio_stdout); |
528 | goto end; | 534 | return ret; |
529 | } else if ((strcmp(argv[0], LIST_STANDARD_COMMANDS) == 0) || | 535 | } |
536 | |||
537 | if ((strcmp(argv[0], LIST_STANDARD_COMMANDS) == 0) || | ||
530 | (strcmp(argv[0], LIST_MESSAGE_DIGEST_COMMANDS) == 0) || | 538 | (strcmp(argv[0], LIST_MESSAGE_DIGEST_COMMANDS) == 0) || |
531 | (strcmp(argv[0], LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) || | 539 | (strcmp(argv[0], LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) || |
532 | (strcmp(argv[0], LIST_CIPHER_COMMANDS) == 0) || | 540 | (strcmp(argv[0], LIST_CIPHER_COMMANDS) == 0) || |
@@ -562,17 +570,15 @@ do_cmd(LHASH_OF(FUNCTION) * prog, int argc, char *argv[]) | |||
562 | fp->name); | 570 | fp->name); |
563 | } | 571 | } |
564 | BIO_free_all(bio_stdout); | 572 | BIO_free_all(bio_stdout); |
565 | ret = 0; | 573 | return 0; |
566 | goto end; | ||
567 | } else { | ||
568 | BIO_printf(bio_err, | ||
569 | "openssl:Error: '%s' is an invalid command.\n", | ||
570 | argv[0]); | ||
571 | print_help(); | ||
572 | ret = 0; | ||
573 | } | 574 | } |
574 | end: | 575 | |
575 | return (ret); | 576 | BIO_printf(bio_err, |
577 | "openssl:Error: '%s' is an invalid command.\n", | ||
578 | argv[0]); | ||
579 | print_help(); | ||
580 | |||
581 | return 1; | ||
576 | } | 582 | } |
577 | 583 | ||
578 | static void | 584 | static void |