diff options
author | Shane Lontis <shane.lontis@oracle.com> | 2020-06-18 09:03:32 +1000 |
---|---|---|
committer | Shane Lontis <shane.lontis@oracle.com> | 2020-06-18 09:03:32 +1000 |
commit | b75f08cb13ca2e03946e0beeaac2e0ffa0d2aae7 (patch) | |
tree | 8d2a5b136768ff2ce36e3afe621fc62c6a282afa | |
parent | 24b6261e5bb286fa494e7208a3de28365e0ca004 (diff) |
Fix segfault in openssl app called with no args.
This is a result of removal of interactive mode.
Redirected it to now use 'openssl help'.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12164)
-rw-r--r-- | apps/openssl.c | 9 | ||||
-rw-r--r-- | test/recipes/20-test_app.t | 25 |
2 files changed, 32 insertions, 2 deletions
diff --git a/apps/openssl.c b/apps/openssl.c index 7b0ccbcc09..4c97936824 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -308,6 +308,13 @@ int help_main(int argc, char **argv) char *prog; HELP_CHOICE o; DISPLAY_COLUMNS dc; + char *new_argv[3]; + + if (argc == 0) { + new_argv[0] = "help"; + new_argv[1] = NULL; + return do_cmd(prog_init(), 1, new_argv); + } prog = opt_init(argc, argv, help_options); while ((o = opt_next()) != OPT_hEOF) { @@ -323,8 +330,6 @@ int help_main(int argc, char **argv) } if (opt_num_rest() == 1) { - char *new_argv[3]; - new_argv[0] = opt_rest()[0]; new_argv[1] = "--help"; new_argv[2] = NULL; diff --git a/test/recipes/20-test_app.t b/test/recipes/20-test_app.t new file mode 100644 index 0000000000..e7246565f2 --- /dev/null +++ b/test/recipes/20-test_app.t @@ -0,0 +1,25 @@ +#! /usr/bin/env perl +# Copyright 2020 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; +use warnings; + +use OpenSSL::Test; + +setup("test_app"); + +plan tests => 3; + +ok(run(app(["openssl"])), + "Run openssl app with no args"); + +ok(run(app(["openssl", "help"])), + "Run openssl app with help"); + +ok(!run(app(["openssl", "-help"])), + "Run openssl app with incorrect arg"); |