Convert {DH,DSA}_new_method() to using calloc()
authortb <tb@openbsd.org>
Sat, 12 Aug 2023 06:14:36 +0000 (06:14 +0000)
committertb <tb@openbsd.org>
Sat, 12 Aug 2023 06:14:36 +0000 (06:14 +0000)
commite498bf2d5f803457d9476b97c3c125b2c81f4b2e
tree58f8674a46f6947c05aeb66d5cf521da818f9562
parentdd700d40f264aa1408518da930609d0112f171fa
Convert {DH,DSA}_new_method() to using calloc()

Due to OPENSSL_NO_ENGINE the engine member of dh and dsa is currently
uninitialized. As a consequence, {DH,DSA}_get0_engine() will return a
garbage pointer, which is particularly bad because the only reason we
kept them in the first place is that they are used by some software...

A side effect of freeing with {DH,DSA}_free() instead of a hand-rolled
version is that we may call ->meth->finish() before ->meth->init() was
called. We need a NULL check for ->meth to be on the safe side in case
we should need to bring ENGINE back.

with nits from djm
ok deraadt djm
lib/libcrypto/dh/dh_lib.c
lib/libcrypto/dsa/dsa_lib.c