From: Veronika Hanulíková <vhanulik@redhat.com>
Date: Mon, 5 Feb 2024 11:30:11 +0100
Subject: unittests: Do not use uninitialized memory

Thanks Coverity CID 414676, 414677, 414678,
414679, 414680, 414681, 414682, 414683, 414684,
414685, 414686

Origin: https://github.com/OpenSC/OpenSC/commit/5747804c645c3d57d69a0ec733697d79e5b66f7b
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=2248685
Bug: https://github.com/OpenSC/OpenSC/wiki/CVE-2023-5992
Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-5992
Bug-Debian: https://bugs.debian.org/1064189
---
 src/tests/unittests/strip_pkcs1_2_padding.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/tests/unittests/strip_pkcs1_2_padding.c b/src/tests/unittests/strip_pkcs1_2_padding.c
index f9561b9..990e94a 100644
--- a/src/tests/unittests/strip_pkcs1_2_padding.c
+++ b/src/tests/unittests/strip_pkcs1_2_padding.c
@@ -14,7 +14,7 @@ torture_long_output_buffer(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 3;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	unsigned char result_msg[] = {'m', 's', 'g'};
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, 3);
@@ -32,7 +32,7 @@ torture_short_output_buffer(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 1;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -48,7 +48,7 @@ torture_short_message_correct_padding(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 3;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	unsigned char result_msg[] = {'m', 's', 'g'};
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, 3);
@@ -66,7 +66,7 @@ torture_missing_first_zero(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 10;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -82,7 +82,7 @@ torture_missing_two(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 10;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -98,7 +98,7 @@ torture_short_padding(void **state)
 			0x00,
 			'm', 's', 'g'};
 	unsigned int out_len = 10;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -113,7 +113,7 @@ torture_missing_second_zero(void **state)
 			0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
 			'm', 's', 'g'};
 	unsigned int out_len = 10;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -128,7 +128,7 @@ torture_missing_message(void **state)
 			0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
 			0x00};
 	unsigned int out_len = 11;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, SC_ERROR_WRONG_PADDING);
 	free(out);
@@ -144,7 +144,7 @@ torture_one_byte_message(void **state)
 			0x00,
 			'm'};
 	unsigned int out_len = 1;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	unsigned char result_msg[] = {'m'};
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, 1);
@@ -162,7 +162,7 @@ torture_longer_padding(void **state)
 			0x00,
 			0x9d, 0x98, 0x3d, 0xca, 0xa9, 0xa7, 0x11, 0x0a};
 	unsigned int out_len = 8;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	unsigned char result_msg[] = {0x9d, 0x98, 0x3d, 0xca, 0xa9, 0xa7, 0x11, 0x0a};
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, 8);
@@ -179,7 +179,7 @@ torture_empty_message(void **state)
 			0x0e, 0x38, 0x97, 0x18, 0x16, 0x57, 0x9e, 0x30, 0xb6, 0xa5, 0x78, 0x13, 0x20, 0xca, 0x11,
 			0x00};
 	unsigned int out_len = 8;
-	unsigned char *out = malloc(out_len * sizeof(unsigned char));
+	unsigned char *out = calloc(out_len, sizeof(unsigned char));
 	int r = sc_pkcs1_strip_02_padding_constant_time(NULL, n, in, in_len, out, &out_len);
 	assert_int_equal(r, 0);
 	free(out);
