diff options
author | Matt Caswell <matt@openssl.org> | 2021-03-10 10:34:18 +0000 |
---|---|---|
committer | Pauli <ppzgs1@gmail.com> | 2021-03-12 08:45:48 +1000 |
commit | 3d0b56785aeefd2b5a08a0da99d6a09ae6a494b9 (patch) | |
tree | 0fae02b1b8ee7143d23a8930879bc4660942bd76 /apps | |
parent | 8bf611bc7f68ae6480f30e4ef085d141f3a2b884 (diff) |
Don't crash if the pkeyopt doesn't have a value
All pkeyopt's must have a ":" and a value for the option. Not supplying
one can cause a crash
Fixes #14494
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14496)
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lib/apps.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/lib/apps.c b/apps/lib/apps.c index 2a5ec6bb65..2938e91620 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -1790,17 +1790,21 @@ int bio_to_mem(unsigned char **out, int maxlen, BIO *in) int pkey_ctrl_string(EVP_PKEY_CTX *ctx, const char *value) { - int rv; + int rv = 0; char *stmp, *vtmp = NULL; + stmp = OPENSSL_strdup(value); - if (!stmp) + if (stmp == NULL) return -1; vtmp = strchr(stmp, ':'); - if (vtmp) { - *vtmp = 0; - vtmp++; - } + if (vtmp == NULL) + goto err; + + *vtmp = 0; + vtmp++; rv = EVP_PKEY_CTX_ctrl_str(ctx, stmp, vtmp); + + err: OPENSSL_free(stmp); return rv; } |