Fix incomplete initialization bug: BIO_new(BIO_f_asn1()) neglected
authorschwarze <schwarze@openbsd.org>
Sat, 27 Nov 2021 13:10:33 +0000 (13:10 +0000)
committerschwarze <schwarze@openbsd.org>
Sat, 27 Nov 2021 13:10:33 +0000 (13:10 +0000)
commita925b4f70c6f0f17c3539b326bab592756ee3892
treeaf509f5bc749d972af51cb31cf1bc92347b3ac82
parentf2e5212624567973232a5a618335b62f7fd013da
Fix incomplete initialization bug: BIO_new(BIO_f_asn1()) neglected
initializing five of the fields in BIO_ASN1_BUF_CTX (prefix,
prefix_free, suffix, suffix_free, ex_arg), inviting a segfault in
a subsequent call from the application program to BIO_write(3)
because subroutines of that function assume that the function
pointers are either NULL or valid.

Fix this by using the less error-prone calloc(3) idiom.

While here, inline asn1_bio_init() at the only call site
in asn1_bio_new() to simplify the code and make it easier to read.

Bug found and initial patch by me,
this version (with inlining) by and OK tb@.
lib/libcrypto/asn1/bio_asn1.c