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;
|
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. */
|
||||||
|
Reference in New Issue
Block a user