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;
byte* data;
byte* oldData = a->intData;
int oldLen = a->length;
if (a->isDynamic && (len > (int)a->dataMax)) {
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->dataMax = (unsigned int)sizeof(a->intData);
}
a->length = 0;
if ((!a->isDynamic) && (len > (int)a->dataMax)) {
/* Create a new buffer to hold large integer value. */
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 (oldData != a->data) {
/* Copy old data into new buffer. */
XMEMCPY(a->data, oldData, (size_t)oldLen);
XMEMCPY(a->data, oldData, (size_t)a->length);
}
/* Restore old length. */
a->length = oldLen;
} else {
a->length = 0;
}
if (oldData != a->intData) {
/* Dispose of the old dynamic data. */