fix null pointer derefs in examples/pem/pem.c:pemApp_ReadFile() and tests/api.c:LoadPKCS7SignedDataCerts() detected by clang-tidy.

This commit is contained in:
Daniel Pouzzner
2023-10-21 13:34:04 -05:00
parent 9db828a099
commit 501299bc31
2 changed files with 16 additions and 15 deletions

View File

@ -151,7 +151,7 @@ static int pemApp_ReadFile(FILE* fp, unsigned char** pdata, word32* plen)
* @return 0 on success. * @return 0 on success.
* @return 1 on failure. * @return 1 on failure.
*/ */
static int WriteFile(FILE* fp, unsigned char* data, word32 len) static int WriteFile(FILE* fp, const char* data, word32 len)
{ {
int ret = 0; int ret = 0;
@ -995,7 +995,7 @@ int main(int argc, char* argv[])
} }
if (ret == 0) { if (ret == 0) {
/* Write out PEM. */ /* Write out PEM. */
ret = WriteFile(out_file, out, out_len); ret = WriteFile(out_file, out ? (const char *)out : "", out_len);
if (ret != 0) { if (ret != 0) {
fprintf(stderr, "Could not write file\n"); fprintf(stderr, "Could not write file\n");
} }

View File

@ -26690,32 +26690,32 @@ static int LoadPKCS7SignedDataCerts(
ExpectIntGT(*intCARootSz, 0); ExpectIntGT(*intCARootSz, 0);
ExpectTrue((fp = XFOPEN(intCA1RSA, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intCA1RSA, "rb")) != XBADFILE);
*intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*intCA1Sz, 0); ExpectIntGT(*intCA1Sz, 0);
ExpectTrue((fp = XFOPEN(intCA2RSA, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intCA2RSA, "rb")) != XBADFILE);
*intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*intCA2Sz, 0); ExpectIntGT(*intCA2Sz, 0);
ExpectTrue((fp = XFOPEN(intServCertRSA, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intServCertRSA, "rb")) != XBADFILE);
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*certSz, 0); ExpectIntGT(*certSz, 0);
ExpectTrue((fp = XFOPEN(intServKeyRSA, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intServKeyRSA, "rb")) != XBADFILE);
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
@ -26734,16 +26734,16 @@ static int LoadPKCS7SignedDataCerts(
XMEMCPY(cert, client_cert_der_1024, *certSz); XMEMCPY(cert, client_cert_der_1024, *certSz);
#else #else
ExpectTrue((fp = XFOPEN(cli1024Key, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(cli1024Key, "rb")) != XBADFILE);
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*keySz, 0); ExpectIntGT(*keySz, 0);
ExpectTrue((fp = XFOPEN(cli1024Cert, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(cli1024Cert, "rb")) != XBADFILE);
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
@ -26756,40 +26756,41 @@ static int LoadPKCS7SignedDataCerts(
case ECC_TYPE: case ECC_TYPE:
if (useIntermediateCertChain == 1) { if (useIntermediateCertChain == 1) {
ExpectTrue((fp = XFOPEN(intCARootECC, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intCARootECC, "rb")) != XBADFILE);
*intCARootSz = (word32)XFREAD(intCARoot, 1, *intCARootSz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*intCARootSz = (word32)XFREAD(intCARoot, 1, *intCARootSz,
fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*intCARootSz, 0); ExpectIntGT(*intCARootSz, 0);
ExpectTrue((fp = XFOPEN(intCA1ECC, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intCA1ECC, "rb")) != XBADFILE);
*intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*intCA1Sz, 0); ExpectIntGT(*intCA1Sz, 0);
ExpectTrue((fp = XFOPEN(intCA2ECC, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intCA2ECC, "rb")) != XBADFILE);
*intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*intCA2Sz, 0); ExpectIntGT(*intCA2Sz, 0);
ExpectTrue((fp = XFOPEN(intServCertECC, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intServCertECC, "rb")) != XBADFILE);
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*certSz, 0); ExpectIntGT(*certSz, 0);
ExpectTrue((fp = XFOPEN(intServKeyECC, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(intServKeyECC, "rb")) != XBADFILE);
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
@ -26803,16 +26804,16 @@ static int LoadPKCS7SignedDataCerts(
XMEMCPY(cert, cliecc_cert_der_256, *certSz); XMEMCPY(cert, cliecc_cert_der_256, *certSz);
#else #else
ExpectTrue((fp = XFOPEN(cliEccKey, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(cliEccKey, "rb")) != XBADFILE);
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*keySz = (word32)XFREAD(key, 1, *keySz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }
ExpectIntGT(*keySz, 0); ExpectIntGT(*keySz, 0);
ExpectTrue((fp = XFOPEN(cliEccCert, "rb")) != XBADFILE); ExpectTrue((fp = XFOPEN(cliEccCert, "rb")) != XBADFILE);
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
if (fp != XBADFILE) { if (fp != XBADFILE) {
*certSz = (word32)XFREAD(cert, 1, *certSz, fp);
XFCLOSE(fp); XFCLOSE(fp);
fp = XBADFILE; fp = XBADFILE;
} }