summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2023-04-14 06:47:07 +0000
committertb <>2023-04-14 06:47:07 +0000
commit030b8689c5e2131d8db812703be39b34a6472284 (patch)
tree53bea8f79845b10d786659d904ee1879651e89a9
parentc57d52f1ed74165285266fb36c75bb904911f2e7 (diff)
downloadopenbsd-030b8689c5e2131d8db812703be39b34a6472284.tar.gz
openbsd-030b8689c5e2131d8db812703be39b34a6472284.tar.bz2
openbsd-030b8689c5e2131d8db812703be39b34a6472284.zip
Fix double free in error path in openssl(1) x509
A conversion from X509_REQ_get_pubkey() to X509_REQ_get0_pubkey() missed one free of pkey in an unlikely error path. After the conversion pkey is no longer owned by us, so we mustn't free it. ok jsing
-rw-r--r--src/usr.bin/openssl/x509.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/usr.bin/openssl/x509.c b/src/usr.bin/openssl/x509.c
index e6d1ee915d..7c8f34f64c 100644
--- a/src/usr.bin/openssl/x509.c
+++ b/src/usr.bin/openssl/x509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509.c,v 1.32 2023/04/09 17:28:52 tb Exp $ */ 1/* $OpenBSD: x509.c,v 1.33 2023/04/14 06:47:07 tb 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 *
@@ -888,10 +888,8 @@ x509_main(int argc, char **argv)
888 888
889 if ((pkey = X509_REQ_get0_pubkey(req)) == NULL) 889 if ((pkey = X509_REQ_get0_pubkey(req)) == NULL)
890 goto end; 890 goto end;
891 if (!X509_set_pubkey(x, pkey)) { 891 if (!X509_set_pubkey(x, pkey))
892 EVP_PKEY_free(pkey);
893 goto end; 892 goto end;
894 }
895 } else { 893 } else {
896 x = load_cert(bio_err, cfg.infile, cfg.informat, NULL, 894 x = load_cert(bio_err, cfg.infile, cfg.informat, NULL,
897 "Certificate"); 895 "Certificate");