Fix five bugs in X509_REQ_to_X509(3):
authorschwarze <schwarze@openbsd.org>
Wed, 3 Nov 2021 14:36:21 +0000 (14:36 +0000)
committerschwarze <schwarze@openbsd.org>
Wed, 3 Nov 2021 14:36:21 +0000 (14:36 +0000)
commitb50296f2c963f42c0d9cc9345d3cb10d35aebc10
tree8cb5ff4efb41fa5754ef145f9c89f90f7736dfee
parentf8d44979546941005cf8096358d818d6b6a40b80
Fix five bugs in X509_REQ_to_X509(3):
* memory leak in X509_set_subject_name(ret, X509_NAME_dup(xn));
* memory leak in X509_set_issuer_name(ret, X509_NAME_dup(xn));
* memory leak in X509_set_pubkey(ret, X509_REQ_get_pubkey(r));
* missing return value check of X509_REQ_get_pubkey(r);
* missing return value check of X509_set_pubkey(...);
Some of these bugs have survived for twenty-five years.

I noticed the first two bugs while documenting the function,
then found that a commit in the OpenSSL 1.1.1 branch, which is
still under a free license, fixed all of them in 2016.

In the function X509_REQ_to_X509(3), merge everything worth merging
from OpenSSL 1.1.1, in particular the relevant parts of:
222561fe Apr 30 17:33:59 2015 -0400 (err: label cleanup)
0517538d Mar 17 00:15:48 2016 +0100 (the bugfix)
c5137473 Apr 3  23:37:32 2016 +0200 (code simplification)

While here, delete some commented out code that is wrong in
multiple ways and untouched since the SSLeay era.

One code tweak for readability by tb@, and OK tb@.
lib/libcrypto/x509/x509_r2x.c