Fix sk_deep_copy() implementation
authortb <tb@openbsd.org>
Thu, 14 Dec 2023 12:02:10 +0000 (12:02 +0000)
committertb <tb@openbsd.org>
Thu, 14 Dec 2023 12:02:10 +0000 (12:02 +0000)
commit35600121c61733172b1d6704accfb487b26f381e
tree56fcdd2e492470c2838942c3beee22ad7b26cd6e
parentca803f33a3107b49c2f500d66d23348002892cfb
Fix sk_deep_copy() implementation

sk_deep_copy() is bad code. It is less bad than the upstream code, but
still bad: it passes strdup() through a void pointer and assigns it to
a function pointer of different type before calling the latter. That's
not kosher in more than one way.

There is no need for such gymnastics. If we need a deep copy for a type,
we should implement it as appropriate for that type.

Also, we should not expect and even less so allow holes in a STACK_OF().
The only way the vpm->hosts can be populated is by way of this deep_copy
function or x509_param_set_hosts_internal(), which pushes only after a
non-NULL check. Invariants: they're useful.

ok jsing
lib/libcrypto/x509/x509_vpm.c