forked from wolfSSL/wolfssl
Coverity fixes for tls.c/n CID 184996 185112 185122
This commit is contained in:
49
src/tls.c
49
src/tls.c
@ -5313,18 +5313,22 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||||||
|
|
||||||
/* Make an ECC key. */
|
/* Make an ECC key. */
|
||||||
ret = wc_curve25519_init(key);
|
ret = wc_curve25519_init(key);
|
||||||
if (ret != 0)
|
if (ret != 0) {
|
||||||
|
eccKey = (ecc_key*)key; /* assign for freeing key */
|
||||||
goto end;
|
goto end;
|
||||||
|
}
|
||||||
ret = wc_curve25519_make_key(ssl->rng, keySize, key);
|
ret = wc_curve25519_make_key(ssl->rng, keySize, key);
|
||||||
if (ret != 0)
|
if (ret != 0) {
|
||||||
|
eccKey = (ecc_key*)key; /* assign for freeing key */
|
||||||
goto end;
|
goto end;
|
||||||
|
}
|
||||||
/* Allocate space for the public key. */
|
/* Allocate space for the public key. */
|
||||||
keyData = (byte*)XMALLOC(dataSize, ssl->heap,
|
keyData = (byte*)XMALLOC(dataSize, ssl->heap,
|
||||||
DYNAMIC_TYPE_PUBLIC_KEY);
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
if (keyData == NULL) {
|
if (keyData == NULL) {
|
||||||
WOLFSSL_MSG("Key data Memory error");
|
WOLFSSL_MSG("Key data Memory error");
|
||||||
ret = MEMORY_E;
|
ret = MEMORY_E;
|
||||||
|
eccKey = (ecc_key*)key; /* assign for freeing key */
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5332,6 +5336,7 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||||||
if (wc_curve25519_export_public_ex(key, keyData, &dataSize,
|
if (wc_curve25519_export_public_ex(key, keyData, &dataSize,
|
||||||
EC25519_LITTLE_ENDIAN) != 0) {
|
EC25519_LITTLE_ENDIAN) != 0) {
|
||||||
ret = ECC_EXPORT_ERROR;
|
ret = ECC_EXPORT_ERROR;
|
||||||
|
eccKey = (ecc_key*)key; /* assign for freeing key */
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5716,27 +5721,28 @@ static int TLSX_KeyShare_ProcessEcc(WOLFSSL* ssl, KeyShareEntry* keyShareEntry)
|
|||||||
return MEMORY_ERROR;
|
return MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
ret = wc_curve25519_init(peerEccKey);
|
ret = wc_curve25519_init(peerEccKey);
|
||||||
if (ret != 0)
|
if (ret == 0) {
|
||||||
return ret;
|
|
||||||
#ifdef WOLFSSL_DEBUG_TLS
|
#ifdef WOLFSSL_DEBUG_TLS
|
||||||
WOLFSSL_MSG("Peer Curve25519 Key");
|
WOLFSSL_MSG("Peer Curve25519 Key");
|
||||||
WOLFSSL_BUFFER(keyShareEntry->ke, keyShareEntry->keLen);
|
WOLFSSL_BUFFER(keyShareEntry->ke, keyShareEntry->keLen);
|
||||||
#endif
|
#endif
|
||||||
|
/* Point is validated by import function. */
|
||||||
/* Point is validated by import function. */
|
if (wc_curve25519_import_public_ex(keyShareEntry->ke,
|
||||||
if (wc_curve25519_import_public_ex(keyShareEntry->ke,
|
keyShareEntry->keLen, peerEccKey,
|
||||||
keyShareEntry->keLen, peerEccKey,
|
EC25519_LITTLE_ENDIAN) != 0) {
|
||||||
EC25519_LITTLE_ENDIAN) != 0) {
|
ret = ECC_PEERKEY_ERROR;
|
||||||
return ECC_PEERKEY_ERROR;
|
}
|
||||||
|
else {
|
||||||
|
ssl->arrays->preMasterSz = ENCRYPT_LEN;
|
||||||
|
ret = wc_curve25519_shared_secret_ex(key, peerEccKey,
|
||||||
|
ssl->arrays->preMasterSecret,
|
||||||
|
&ssl->arrays->preMasterSz,
|
||||||
|
EC25519_LITTLE_ENDIAN);
|
||||||
|
wc_curve25519_free(peerEccKey);
|
||||||
|
ssl->ecdhCurveOID = ECC_X25519_OID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ssl->arrays->preMasterSz = ENCRYPT_LEN;
|
|
||||||
ret = wc_curve25519_shared_secret_ex(key, peerEccKey,
|
|
||||||
ssl->arrays->preMasterSecret, &ssl->arrays->preMasterSz,
|
|
||||||
EC25519_LITTLE_ENDIAN);
|
|
||||||
wc_curve25519_free(peerEccKey);
|
|
||||||
XFREE(peerEccKey, ssl->heap, DYNAMIC_TYPE_TLSX);
|
XFREE(peerEccKey, ssl->heap, DYNAMIC_TYPE_TLSX);
|
||||||
ssl->ecdhCurveOID = ECC_X25519_OID;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -8158,9 +8164,6 @@ int TLSX_PopulateExtensions(WOLFSSL* ssl, byte isServer)
|
|||||||
(void)public_key_len;
|
(void)public_key_len;
|
||||||
(void)ssl;
|
(void)ssl;
|
||||||
|
|
||||||
if (ret == WOLFSSL_SUCCESS)
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user