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:27:02 +0000 (12:27 +0200)
commitcba024dc685d13dbcbd0577bed028ee6b295b56a
tree45aa5e834a56f1f863ab03788c644c62cf85a06b
parentd0d0e8a71918816f7039f1f5443ebb3e28c06393
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)
crypto/asn1/a_object.c
crypto/asn1/asn1_err.c
crypto/err/openssl.txt
include/openssl/asn1err.h