test: fix coverity 1451550: unchecked return value

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14615)
This commit is contained in:
Pauli 2021-03-19 09:30:07 +10:00 committed by Pauli
parent f47865156a
commit 3352a4f6fa
1 changed files with 26 additions and 18 deletions

View File

@ -283,11 +283,12 @@ static int send_record(BIO *rbio, unsigned char type, uint64_t seqnr,
unsigned char lenbytes[2]; unsigned char lenbytes[2];
EVP_MAC *hmac; EVP_MAC *hmac;
EVP_MAC_CTX *ctx; EVP_MAC_CTX *ctx;
EVP_CIPHER_CTX *enc_ctx; EVP_CIPHER_CTX *enc_ctx = NULL;
unsigned char iv[16]; unsigned char iv[16];
unsigned char pad; unsigned char pad;
unsigned char *enc; unsigned char *enc;
OSSL_PARAM params[2]; OSSL_PARAM params[2];
int ret = 0;
seq[0] = (seqnr >> 40) & 0xff; seq[0] = (seqnr >> 40) & 0xff;
seq[1] = (seqnr >> 32) & 0xff; seq[1] = (seqnr >> 32) & 0xff;
@ -305,23 +306,26 @@ static int send_record(BIO *rbio, unsigned char type, uint64_t seqnr,
memcpy(enc, msg, len); memcpy(enc, msg, len);
/* Append HMAC to data */ /* Append HMAC to data */
hmac = EVP_MAC_fetch(NULL, "HMAC", NULL); if ((hmac = EVP_MAC_fetch(NULL, "HMAC", NULL)) == NULL)
return 0;
ctx = EVP_MAC_CTX_new(hmac); ctx = EVP_MAC_CTX_new(hmac);
EVP_MAC_free(hmac); EVP_MAC_free(hmac);
if (ctx == NULL)
return 0;
params[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, params[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST,
"SHA1", 0); "SHA1", 0);
params[1] = OSSL_PARAM_construct_end(); params[1] = OSSL_PARAM_construct_end();
EVP_MAC_init(ctx, mac_key, 20, params);
EVP_MAC_update(ctx, epoch, 2);
EVP_MAC_update(ctx, seq, 6);
EVP_MAC_update(ctx, &type, 1);
EVP_MAC_update(ctx, ver, 2); /* Version */
lenbytes[0] = (unsigned char)(len >> 8); lenbytes[0] = (unsigned char)(len >> 8);
lenbytes[1] = (unsigned char)(len); lenbytes[1] = (unsigned char)(len);
EVP_MAC_update(ctx, lenbytes, 2); /* Length */ if (!EVP_MAC_init(ctx, mac_key, 20, params)
EVP_MAC_update(ctx, enc, len); /* Finally the data itself */ || !EVP_MAC_update(ctx, epoch, 2)
EVP_MAC_final(ctx, enc + len, NULL, SHA_DIGEST_LENGTH); || !EVP_MAC_update(ctx, seq, 6)
EVP_MAC_CTX_free(ctx); || !EVP_MAC_update(ctx, &type, 1)
|| !EVP_MAC_update(ctx, ver, 2) /* Version */
|| !EVP_MAC_update(ctx, lenbytes, 2) /* Length */
|| !EVP_MAC_update(ctx, enc, len) /* Finally the data itself */
|| !EVP_MAC_final(ctx, enc + len, NULL, SHA_DIGEST_LENGTH))
goto end;
/* Append padding bytes */ /* Append padding bytes */
len += SHA_DIGEST_LENGTH; len += SHA_DIGEST_LENGTH;
@ -330,11 +334,12 @@ static int send_record(BIO *rbio, unsigned char type, uint64_t seqnr,
} while (len % 16); } while (len % 16);
/* Generate IV, and encrypt */ /* Generate IV, and encrypt */
RAND_bytes(iv, sizeof(iv)); if (!TEST_true(RAND_bytes(iv, sizeof(iv)))
enc_ctx = EVP_CIPHER_CTX_new(); || !TEST_ptr(enc_ctx = EVP_CIPHER_CTX_new())
EVP_CipherInit_ex(enc_ctx, EVP_aes_128_cbc(), NULL, enc_key, iv, 1); || !TEST_true(EVP_CipherInit_ex(enc_ctx, EVP_aes_128_cbc(), NULL,
EVP_Cipher(enc_ctx, enc, enc, len); enc_key, iv, 1))
EVP_CIPHER_CTX_free(enc_ctx); || !TEST_int_ge(EVP_Cipher(enc_ctx, enc, enc, len), 0))
goto end;
/* Finally write header (from fragmented variables), IV and encrypted record */ /* Finally write header (from fragmented variables), IV and encrypted record */
BIO_write(rbio, &type, 1); BIO_write(rbio, &type, 1);
@ -347,9 +352,12 @@ static int send_record(BIO *rbio, unsigned char type, uint64_t seqnr,
BIO_write(rbio, iv, sizeof(iv)); BIO_write(rbio, iv, sizeof(iv));
BIO_write(rbio, enc, len); BIO_write(rbio, enc, len);
ret = 1;
end:
EVP_MAC_CTX_free(ctx);
EVP_CIPHER_CTX_free(enc_ctx);
OPENSSL_free(enc); OPENSSL_free(enc);
return 1; return ret;
} }
static int send_finished(SSL *s, BIO *rbio) static int send_finished(SSL *s, BIO *rbio)