mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-06 08:40:50 +02:00
Merge pull request #9929 from douzzer/20260309-nullPointerOutOfMemory
20260309-nullPointerOutOfMemory (reviewed+approved by @philljj)
This commit is contained in:
+9
-11
@@ -4898,18 +4898,16 @@ WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_SIG_new(void)
|
||||
DYNAMIC_TYPE_ECC);
|
||||
if (sig == NULL) {
|
||||
WOLFSSL_MSG("wolfSSL_ECDSA_SIG_new malloc ECDSA signature failure");
|
||||
err = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!err) {
|
||||
/* Set s to NULL in case of error. */
|
||||
sig->s = NULL;
|
||||
/* Allocate BN into r. */
|
||||
sig->r = wolfSSL_BN_new();
|
||||
if (sig->r == NULL) {
|
||||
WOLFSSL_MSG("wolfSSL_ECDSA_SIG_new malloc ECDSA r failure");
|
||||
err = 1;
|
||||
}
|
||||
/* Set s to NULL in case of error. */
|
||||
sig->s = NULL;
|
||||
/* Allocate BN into r. */
|
||||
sig->r = wolfSSL_BN_new();
|
||||
if (sig->r == NULL) {
|
||||
WOLFSSL_MSG("wolfSSL_ECDSA_SIG_new malloc ECDSA r failure");
|
||||
err = 1;
|
||||
}
|
||||
if (!err) {
|
||||
/* Allocate BN into s. */
|
||||
@@ -4920,7 +4918,7 @@ WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_SIG_new(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (err && (sig != NULL)) {
|
||||
if (err) {
|
||||
/* Dispose of allocated memory. */
|
||||
wolfSSL_ECDSA_SIG_free(sig);
|
||||
sig = NULL;
|
||||
|
||||
+11
-6
@@ -67,14 +67,19 @@ static int d2i_make_pkey(WOLFSSL_EVP_PKEY** out, const unsigned char* mem,
|
||||
|
||||
/* Set the size and allocate memory for key data to be copied into. */
|
||||
pkey->pkey_sz = (int)memSz;
|
||||
pkey->pkey.ptr = (char*)XMALLOC((size_t)memSz, NULL,
|
||||
priv ? DYNAMIC_TYPE_PRIVATE_KEY : DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
if (pkey->pkey.ptr == NULL) {
|
||||
ret = 0;
|
||||
if (memSz > 0) {
|
||||
pkey->pkey.ptr = (char*)XMALLOC((size_t)memSz, NULL,
|
||||
priv ? DYNAMIC_TYPE_PRIVATE_KEY : DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
if (pkey->pkey.ptr == NULL) {
|
||||
ret = 0;
|
||||
}
|
||||
if (ret == 1) {
|
||||
/* Copy in key data. */
|
||||
XMEMCPY(pkey->pkey.ptr, mem, memSz);
|
||||
}
|
||||
}
|
||||
if (ret == 1) {
|
||||
/* Copy in key data, set key type passed in and return object. */
|
||||
XMEMCPY(pkey->pkey.ptr, mem, memSz);
|
||||
/* Set key type passed in and return object. */
|
||||
pkey->type = type;
|
||||
*out = pkey;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user