i2d_ASN1_OBJECT(): allocate memory if the user didn't provide a buffer
authorRichard Levitte <levitte@openssl.org>
Sat, 11 Aug 2018 07:59:20 +0000 (09:59 +0200)
committerRichard Levitte <levitte@openssl.org>
Sat, 11 Aug 2018 10:38:46 +0000 (12:38 +0200)
commit0971432f6f6d8b40d797133621809bd31eb7bf4e
tree03ae6e302e557027c121c126854f6733c7a024c9
parentec3f996b3066ecaaec87ba5ad29c606aeac0740d
i2d_ASN1_OBJECT(): allocate memory if the user didn't provide a buffer

Since 0.9.7, all i2d_ functions were documented to allocate an output
buffer if the user didn't provide one, under these conditions (from
the 1.0.2 documentation):

    For OpenSSL 0.9.7 and later if B<*out> is B<NULL> memory will be
    allocated for a buffer and the encoded data written to it. In this
    case B<*out> is not incremented and it points to the start of the
    data just written.

i2d_ASN1_OBJECT was found not to do this, and would crash if a NULL
output buffer was provided.

Fixes #6914

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/6918)

(cherry picked from commit 6114041540d8d1fecaf23a861788c3c742d3b467)
crypto/asn1/a_object.c
crypto/asn1/asn1.h
crypto/asn1/asn1_err.c