summaryrefslogtreecommitdiff
path: root/fuzz
diff options
context:
space:
mode:
authorJiasheng Jiang <jiasheng@iscas.ac.cn>2022-02-12 19:27:09 +0800
committerDr. Matthias St. Pierre <matthias.st.pierre@ncp-e.com>2022-02-20 13:04:24 +0100
commitd43597c718dd6e4f2b18d5cec1eb791503a18988 (patch)
treeb27594611cc902092fad74eae20d6a4d3980b321 /fuzz
parent78c5f1266fdd859df04b0ce89e4dd849d9b590d7 (diff)
downloadopenssl-new-d43597c718dd6e4f2b18d5cec1eb791503a18988.tar.gz
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)
Diffstat (limited to 'fuzz')
-rw-r--r--fuzz/asn1.c25
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);