mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 12:14:38 +02:00
set a->length to 0 if old data is not kept
This commit is contained in:
@@ -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. */
|
||||
|
Reference in New Issue
Block a user