summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoshua <>2022-11-11 18:24:32 +0000
committerjoshua <>2022-11-11 18:24:32 +0000
commite548e2833a12773ab82878ccd47964878019aee8 (patch)
tree1573a24dbd1216a77f8c86d6f51efd1debef2fa6
parent167103faa44f8407455f11f6599e9919e2b22653 (diff)
downloadopenbsd-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.c46
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
578static void 584static void