diff options
author | Jiasheng Jiang <jiasheng@iscas.ac.cn> | 2022-02-12 19:27:09 +0800 |
---|---|---|
committer | Dr. Matthias St. Pierre <matthias.st.pierre@ncp-e.com> | 2022-02-20 13:04:24 +0100 |
commit | d43597c718dd6e4f2b18d5cec1eb791503a18988 (patch) | |
tree | b27594611cc902092fad74eae20d6a4d3980b321 | |
parent | 78c5f1266fdd859df04b0ce89e4dd849d9b590d7 (diff) |
fuzz/asn1.c: Add missing check for BIO_new
Since the BIO_new may fail, the 'bio' could be NULL pointer and be used.
Therefore, it should be better to check it and skip the print if fails.
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/17690)
-rw-r--r-- | fuzz/asn1.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/fuzz/asn1.c b/fuzz/asn1.c index 8ce9a57c25..1db219c358 100644 --- a/fuzz/asn1.c +++ b/fuzz/asn1.c @@ -218,8 +218,10 @@ static ASN1_PCTX *pctx; int len2; \ BIO *bio = BIO_new(BIO_s_null()); \ \ - PRINT(bio, type); \ - BIO_free(bio); \ + if (bio != NULL) { \ + PRINT(bio, type); \ + BIO_free(bio); \ + } \ len2 = I2D(type, &der); \ if (len2 != 0) {} \ OPENSSL_free(der); \ @@ -235,8 +237,10 @@ static ASN1_PCTX *pctx; if (type != NULL) { \ BIO *bio = BIO_new(BIO_s_null()); \ \ - PRINT(bio, type, 0); \ - BIO_free(bio); \ + if (bio != NULL) { \ + PRINT(bio, type, 0); \ + BIO_free(bio); \ + } \ I2D(type, &der); \ OPENSSL_free(der); \ TYPE ## _free(type); \ @@ -251,8 +255,10 @@ static ASN1_PCTX *pctx; if (type != NULL) { \ BIO *bio = BIO_new(BIO_s_null()); \ \ - PRINT(bio, type, 0, pctx); \ - BIO_free(bio); \ + if (bio != NULL) { \ + PRINT(bio, type, 0, pctx); \ + BIO_free(bio); \ + } \ I2D(type, &der); \ OPENSSL_free(der); \ TYPE ## _free(type); \ @@ -307,9 +313,10 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) if (o != NULL) { BIO *bio = BIO_new(BIO_s_null()); - - ASN1_item_print(bio, o, 4, i, pctx); - BIO_free(bio); + if (bio != NULL) { + ASN1_item_print(bio, o, 4, i, pctx); + BIO_free(bio); + } ASN1_item_i2d(o, &der, i); OPENSSL_free(der); ASN1_item_free(o, i); |