X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fevp%2Fpkey_kdf.c;h=f4cf40e6f4bde12094a6656109c14a7924b5e0d3;hp=f4a6093bb1be271a65d7594f839b7c1b93fb082d;hb=53598b22987faead115463bf8bd027cd8f794cf3;hpb=ea643c959f626fd3860b8aa49b42fd0b96e71492 diff --git a/crypto/evp/pkey_kdf.c b/crypto/evp/pkey_kdf.c index f4a6093bb1..f4cf40e6f4 100644 --- a/crypto/evp/pkey_kdf.c +++ b/crypto/evp/pkey_kdf.c @@ -83,9 +83,16 @@ static int collect(BUF_MEM **collector, void *data, size_t datalen) } i = (*collector)->length; /* BUF_MEM_grow() changes it! */ - if (!BUF_MEM_grow(*collector, i + datalen)) + /* + * The i + datalen check is to distinguish between BUF_MEM_grow() + * signaling an error and BUF_MEM_grow() simply returning the (zero) + * length. + */ + if (!BUF_MEM_grow(*collector, i + datalen) + && i + datalen != 0) return 0; - memcpy((*collector)->data + i, data, datalen); + if (data != NULL) + memcpy((*collector)->data + i, data, datalen); return 1; }