set a->length to 0 if old data is not kept

This commit is contained in:
Ruby Martin
2025-07-16 11:11:14 -06:00
parent 828b9b7024
commit 01fd36b840

View File

@@ -1043,7 +1043,6 @@ static int wolfssl_asn1_integer_require_len(WOLFSSL_ASN1_INTEGER* a, int len,
int ret = 1; int ret = 1;
byte* data; byte* data;
byte* oldData = a->intData; byte* oldData = a->intData;
int oldLen = a->length;
if (a->isDynamic && (len > (int)a->dataMax)) { if (a->isDynamic && (len > (int)a->dataMax)) {
oldData = a->data; oldData = a->data;
@@ -1051,7 +1050,6 @@ static int wolfssl_asn1_integer_require_len(WOLFSSL_ASN1_INTEGER* a, int len,
a->data = a->intData; a->data = a->intData;
a->dataMax = (unsigned int)sizeof(a->intData); a->dataMax = (unsigned int)sizeof(a->intData);
} }
a->length = 0;
if ((!a->isDynamic) && (len > (int)a->dataMax)) { if ((!a->isDynamic) && (len > (int)a->dataMax)) {
/* Create a new buffer to hold large integer value. */ /* Create a new buffer to hold large integer value. */
data = (byte*)XMALLOC((size_t)len, NULL, DYNAMIC_TYPE_OPENSSL); data = (byte*)XMALLOC((size_t)len, NULL, DYNAMIC_TYPE_OPENSSL);
@@ -1068,10 +1066,10 @@ static int wolfssl_asn1_integer_require_len(WOLFSSL_ASN1_INTEGER* a, int len,
if (keepOldData) { if (keepOldData) {
if (oldData != a->data) { if (oldData != a->data) {
/* Copy old data into new buffer. */ /* Copy old data into new buffer. */
XMEMCPY(a->data, oldData, (size_t)oldLen); XMEMCPY(a->data, oldData, (size_t)a->length);
} }
/* Restore old length. */ } else {
a->length = oldLen; a->length = 0;
} }
if (oldData != a->intData) { if (oldData != a->intData) {
/* Dispose of the old dynamic data. */ /* Dispose of the old dynamic data. */