bio_enc.c: add memory allocation check
authorPeiwei Hu <jlu.hpw@foxmail.com>
Mon, 6 Dec 2021 09:33:42 +0000 (17:33 +0800)
committerPauli <pauli@openssl.org>
Wed, 8 Dec 2021 04:11:16 +0000 (15:11 +1100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17206)

test/bio_enc_test.c

index 8ece2b67c822224e62f196c300f01fc309205e6d..0b95fae1cd5ee047871e464ddc481217ec673525 100644 (file)
@@ -51,6 +51,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
 
     /* reference output for single-chunk operation */
     b = BIO_new(BIO_f_cipher());
+    if (!TEST_ptr(b))
+        return 0;
     if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, ENCRYPT)))
         return 0;
     BIO_push(b, BIO_new_mem_buf(inp, DATA_SIZE));
@@ -60,6 +62,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
     /* perform split operations and compare to reference */
     for (i = 1; i < lref; i++) {
         b = BIO_new(BIO_f_cipher());
+        if (!TEST_ptr(b))
+            return 0;
         if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, ENCRYPT))) {
             TEST_info("Split encrypt failed @ operation %d", i);
             return 0;
@@ -87,6 +91,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
         int delta;
 
         b = BIO_new(BIO_f_cipher());
+        if (!TEST_ptr(b))
+            return 0;
         if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, ENCRYPT))) {
             TEST_info("Small chunk encrypt failed @ operation %d", i);
             return 0;
@@ -108,6 +114,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
 
     /* reference output for single-chunk operation */
     b = BIO_new(BIO_f_cipher());
+    if (!TEST_ptr(b))
+        return 0;
     if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, DECRYPT)))
         return 0;
     /* Use original reference output as input */
@@ -123,6 +131,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
     /* perform split operations and compare to reference */
     for (i = 1; i < lref; i++) {
         b = BIO_new(BIO_f_cipher());
+        if (!TEST_ptr(b))
+            return 0;
         if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, DECRYPT))) {
             TEST_info("Split decrypt failed @ operation %d", i);
             return 0;
@@ -150,6 +160,8 @@ static int do_bio_cipher(const EVP_CIPHER* cipher, const unsigned char* key,
         int delta;
 
         b = BIO_new(BIO_f_cipher());
+        if (!TEST_ptr(b))
+            return 0;
         if (!TEST_true(BIO_set_cipher(b, cipher, key, iv, DECRYPT))) {
             TEST_info("Small chunk decrypt failed @ operation %d", i);
             return 0;