summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2021-03-10 10:34:18 +0000
committerPauli <ppzgs1@gmail.com>2021-03-12 08:45:48 +1000
commit3d0b56785aeefd2b5a08a0da99d6a09ae6a494b9 (patch)
tree0fae02b1b8ee7143d23a8930879bc4660942bd76 /apps
parent8bf611bc7f68ae6480f30e4ef085d141f3a2b884 (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.c16
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;
}