Skip to content

Commit 44950b3

Browse files
committed
Fix sanitizer finding in icastats_test
Signed-off-by: Joerg Schmidbauer <jschmidb@de.ibm.com>
1 parent 76fe7c7 commit 44950b3

1 file changed

Lines changed: 90 additions & 18 deletions

File tree

test/icastats_test.c.in

Lines changed: 90 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -981,41 +981,53 @@ static int rsa_tests(ica_adapter_handle_t handle)
981981

982982
/* Test RSA-ME */
983983
rc = system("@builddir@icastats -r");
984-
if (rc == -1)
984+
if (rc == -1) {
985+
free(output_data);
985986
return handle_ica_error(rc, "system");
987+
}
986988

987989
rc = ica_rsa_mod_expo(handle, data, &mod_expo_key, output_data);
988990
if (rc) {
989991
#ifndef NO_SW_FALLBACKS
992+
free(output_data);
990993
return handle_ica_error(rc, "ica_rsa_mod_expo");
991994
#else
992995
if (rc == ENODEV) {
993996
V_(printf("Test RSA-ME and RSA-CRT SKIPPED (no card).\n"));
997+
free(output_data);
994998
return TEST_SKIP;
995999
} else {
1000+
free(output_data);
9961001
return handle_ica_error(rc, "ica_rsa_mod_expo");
9971002
}
9981003
#endif
9991004
}
10001005

10011006
/* Test RSA-CRT */
10021007
rc = check_icastats(RSA_ME, "RSA-ME");
1003-
if (rc != 0)
1008+
if (rc != 0) {
1009+
free(output_data);
10041010
return rc;
1011+
}
10051012

10061013
rc = system("@builddir@icastats -r");
1007-
if (rc == -1)
1014+
if (rc == -1) {
1015+
free(output_data);
10081016
return handle_ica_error(rc, "system");
1017+
}
10091018

10101019
rc = ica_rsa_crt(handle, data, &crt_key, output_data);
10111020
if (rc) {
10121021
#ifndef NO_SW_FALLBACKS
1022+
free(output_data);
10131023
return handle_ica_error(rc, "ica_rsa_crt");
10141024
#else
10151025
if (rc == ENODEV) {
10161026
V_(printf("Test RSA-CRT SKIPPED (no card).\n"));
1027+
free(output_data);
10171028
return TEST_SKIP;
10181029
} else {
1030+
free(output_data);
10191031
return handle_ica_error(rc, "ica_rsa_crt");
10201032
}
10211033
#endif
@@ -1068,33 +1080,53 @@ static int aes_tests(unsigned char *iv, unsigned char *cmac, unsigned char *ctr)
10681080

10691081
/* Test AES-CBC */
10701082
rc = system("@builddir@icastats -r");
1071-
if (rc == -1)
1083+
if (rc == -1) {
1084+
free(tag);
1085+
free(output_buffer);
1086+
free(nonce);
10721087
return handle_ica_error(rc, "system");
1088+
}
10731089

10741090
for (mode = 1;mode >= 0;mode--) {
10751091
rc = ica_aes_cbc(input_buffer, output_buffer, DATA_LENGTH, aes_key,
10761092
AES_KEY_LEN128, iv, mode);
1077-
if (rc)
1093+
if (rc) {
1094+
free(tag);
1095+
free(output_buffer);
1096+
free(nonce);
10781097
return handle_ica_error(rc, "ica_aes_cbc");
1098+
}
10791099
if (mode == ICA_ENCRYPT)
10801100
input_buffer = output_buffer;
10811101
else if (mode == ICA_DECRYPT)
10821102
input_buffer = plain_data;
10831103
}
10841104
rc = check_icastats(AES_CBC, "AES CBC");
1085-
if (rc != 0)
1105+
if (rc != 0) {
1106+
free(tag);
1107+
free(output_buffer);
1108+
free(nonce);
10861109
return rc;
1110+
}
10871111

10881112
/* Test AES-CFB */
10891113
rc = system("@builddir@icastats -r");
1090-
if (rc == -1)
1114+
if (rc == -1) {
1115+
free(tag);
1116+
free(output_buffer);
1117+
free(nonce);
10911118
return handle_ica_error(rc, "system");
1119+
}
10921120

10931121
for (mode = 1;mode >= 0;mode--) {
10941122
rc = ica_aes_cfb(input_buffer, output_buffer, DATA_LENGTH, aes_key,
10951123
AES_KEY_LEN128, iv, AES_CIPHER_BLOCK, mode);
1096-
if (rc)
1124+
if (rc) {
1125+
free(tag);
1126+
free(output_buffer);
1127+
free(nonce);
10971128
return handle_ica_error(rc, "ica_aes_cfb");
1129+
}
10981130

10991131
if (mode == ICA_ENCRYPT)
11001132
input_buffer = output_buffer;
@@ -1105,27 +1137,43 @@ static int aes_tests(unsigned char *iv, unsigned char *cmac, unsigned char *ctr)
11051137

11061138
/* Test AES-CMAC */
11071139
rc = system("@builddir@icastats -r");
1108-
if (rc == -1)
1140+
if (rc == -1) {
1141+
free(tag);
1142+
free(output_buffer);
1143+
free(nonce);
11091144
return handle_ica_error(rc, "system");
1145+
}
11101146

11111147
for (mode = 1;mode >= 0;mode--) {
11121148
rc = ica_aes_cmac(input_buffer, DATA_LENGTH, cmac, AES_CIPHER_BLOCK,
11131149
aes_key, AES_KEY_LEN128, mode);
1114-
if (rc)
1150+
if (rc) {
1151+
free(tag);
1152+
free(output_buffer);
1153+
free(nonce);
11151154
return handle_ica_error(rc, "ica_aes_cmac");
1155+
}
11161156
}
11171157
check_icastats(AES_CMAC, "AES CMAC");
11181158

11191159
/* Test AES-CTR */
11201160
rc = system("@builddir@icastats -r");
1121-
if (rc == -1)
1161+
if (rc == -1) {
1162+
free(tag);
1163+
free(output_buffer);
1164+
free(nonce);
11221165
return handle_ica_error(rc, "system");
1166+
}
11231167

11241168
for (mode = 1;mode >= 0;mode--) {
11251169
rc = ica_aes_ctr(input_buffer, output_buffer, DATA_LENGTH, aes_key,
11261170
AES_KEY_LEN128, ctr, AES_CIPHER_BLOCK, mode);
1127-
if (rc)
1171+
if (rc) {
1172+
free(tag);
1173+
free(output_buffer);
1174+
free(nonce);
11281175
return handle_ica_error(rc, "ica_aes_ctr");
1176+
}
11291177

11301178
if (mode == ICA_ENCRYPT)
11311179
input_buffer = output_buffer;
@@ -1136,14 +1184,22 @@ static int aes_tests(unsigned char *iv, unsigned char *cmac, unsigned char *ctr)
11361184

11371185
/* Test AES-ECB */
11381186
rc = system("@builddir@icastats -r");
1139-
if (rc == -1)
1187+
if (rc == -1) {
1188+
free(tag);
1189+
free(output_buffer);
1190+
free(nonce);
11401191
return handle_ica_error(rc, "system");
1192+
}
11411193

11421194
for (mode = 1;mode >= 0;mode--) {
11431195
rc = ica_aes_ecb(input_buffer, output_buffer, DATA_LENGTH, aes_key,
11441196
AES_KEY_LEN128, mode);
1145-
if (rc)
1197+
if (rc) {
1198+
free(tag);
1199+
free(output_buffer);
1200+
free(nonce);
11461201
return handle_ica_error(rc, "ica_aes_ecb");
1202+
}
11471203

11481204
if (mode == ICA_ENCRYPT)
11491205
input_buffer = output_buffer;
@@ -1154,14 +1210,22 @@ static int aes_tests(unsigned char *iv, unsigned char *cmac, unsigned char *ctr)
11541210

11551211
/* Test AES-OFB */
11561212
rc = system("@builddir@icastats -r");
1157-
if (rc == -1)
1213+
if (rc == -1) {
1214+
free(tag);
1215+
free(output_buffer);
1216+
free(nonce);
11581217
return handle_ica_error(rc, "system");
1218+
}
11591219

11601220
for (mode = 1;mode >= 0;mode--) {
11611221
rc = ica_aes_ofb(input_buffer, output_buffer, DATA_LENGTH, aes_key,
11621222
AES_KEY_LEN128, iv, mode);
1163-
if (rc)
1223+
if (rc) {
1224+
free(tag);
1225+
free(output_buffer);
1226+
free(nonce);
11641227
return handle_ica_error(rc, "ica_aes_ofb");
1228+
}
11651229

11661230
if (mode == ICA_ENCRYPT)
11671231
input_buffer = output_buffer;
@@ -1172,14 +1236,22 @@ static int aes_tests(unsigned char *iv, unsigned char *cmac, unsigned char *ctr)
11721236

11731237
/* Test AES-XTS */
11741238
rc = system("@builddir@icastats -r");
1175-
if (rc == -1)
1239+
if (rc == -1) {
1240+
free(tag);
1241+
free(output_buffer);
1242+
free(nonce);
11761243
return handle_ica_error(rc, "system");
1244+
}
11771245

11781246
for (mode = 1; mode >= 0; mode--) {
11791247
rc = ica_aes_xts(input_buffer, output_buffer, DATA_LENGTH, aes_key,
11801248
aes_key2, AES_KEY_LEN128, tweak, mode);
1181-
if (rc)
1249+
if (rc) {
1250+
free(tag);
1251+
free(output_buffer);
1252+
free(nonce);
11821253
return handle_ica_error(rc, "ica_aes_xts");
1254+
}
11831255

11841256
if (mode == ICA_ENCRYPT)
11851257
input_buffer = output_buffer;

0 commit comments

Comments
 (0)