Merge pull request #3026 from cconlon/selftestfixes

Fix warnings with NetBSD gcc compiler
This commit is contained in:
toddouska
2020-06-09 13:18:44 -07:00
committed by GitHub
2 changed files with 62 additions and 51 deletions

View File

@ -22557,7 +22557,7 @@ WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain(WOLFSSL_X509_STORE_CTX* ctx)
WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk) WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk)
{ {
unsigned long i; unsigned long i;
WOLFSSL_STACK* dup = NULL; WOLFSSL_STACK* copy = NULL;
WOLFSSL_STACK* node = NULL; WOLFSSL_STACK* node = NULL;
WOLFSSL_STACK *dIdx = NULL, *sIdx = sk; WOLFSSL_STACK *dIdx = NULL, *sIdx = sk;
@ -22571,7 +22571,7 @@ WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk)
DYNAMIC_TYPE_X509); DYNAMIC_TYPE_X509);
if (node == NULL) { if (node == NULL) {
if (i != 0) { if (i != 0) {
wolfSSL_sk_free(dup); wolfSSL_sk_free(copy);
} }
WOLFSSL_MSG("Memory error"); WOLFSSL_MSG("Memory error");
return NULL; return NULL;
@ -22584,7 +22584,7 @@ WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk)
/* insert node into list, progress idx */ /* insert node into list, progress idx */
if (i == 0) { if (i == 0) {
dup = node; copy = node;
} else { } else {
dIdx->next = node; dIdx->next = node;
} }
@ -22593,7 +22593,7 @@ WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk)
sIdx = sIdx->next; sIdx = sIdx->next;
} }
return dup; return copy;
} }
@ -22603,7 +22603,7 @@ WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain(WOLFSSL_X509_STORE_CTX* ctx)
{ {
unsigned long i; unsigned long i;
WOLFSSL_STACK* ref; WOLFSSL_STACK* ref;
WOLFSSL_STACK* dup; WOLFSSL_STACK* copy;
if (ctx == NULL) { if (ctx == NULL) {
return NULL; return NULL;
@ -22616,14 +22616,14 @@ WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain(WOLFSSL_X509_STORE_CTX* ctx)
} }
/* create duplicate of ctx chain */ /* create duplicate of ctx chain */
dup = wolfSSL_sk_X509_dup(ref); copy = wolfSSL_sk_X509_dup(ref);
if (dup == NULL) { if (copy == NULL) {
return NULL; return NULL;
} }
/* increase ref counts of inner data X509 */ /* increase ref counts of inner data X509 */
ref = dup; ref = copy;
for (i = 0; i < dup->num && ref != NULL; i++) { for (i = 0; i < copy->num && ref != NULL; i++) {
if (wc_LockMutex(&ref->data.x509->refMutex) != 0) { if (wc_LockMutex(&ref->data.x509->refMutex) != 0) {
WOLFSSL_MSG("Failed to lock x509 mutex"); WOLFSSL_MSG("Failed to lock x509 mutex");
} }
@ -22632,7 +22632,7 @@ WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain(WOLFSSL_X509_STORE_CTX* ctx)
ref = ref->next; ref = ref->next;
} }
return dup; return copy;
} }
@ -23536,34 +23536,34 @@ void wolfSSL_ASN1_INTEGER_free(WOLFSSL_ASN1_INTEGER* in)
*/ */
WOLFSSL_ASN1_INTEGER* wolfSSL_ASN1_INTEGER_dup(const WOLFSSL_ASN1_INTEGER* src) WOLFSSL_ASN1_INTEGER* wolfSSL_ASN1_INTEGER_dup(const WOLFSSL_ASN1_INTEGER* src)
{ {
WOLFSSL_ASN1_INTEGER* dup; WOLFSSL_ASN1_INTEGER* copy;
WOLFSSL_ENTER("wolfSSL_ASN1_INTEGER_dup"); WOLFSSL_ENTER("wolfSSL_ASN1_INTEGER_dup");
if (!src) if (!src)
return NULL; return NULL;
dup = wolfSSL_ASN1_INTEGER_new(); copy = wolfSSL_ASN1_INTEGER_new();
if (dup == NULL) if (copy == NULL)
return NULL; return NULL;
dup->negative = src->negative; copy->negative = src->negative;
dup->dataMax = src->dataMax; copy->dataMax = src->dataMax;
dup->isDynamic = src->isDynamic; copy->isDynamic = src->isDynamic;
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
dup->length = src->length; copy->length = src->length;
#endif #endif
XSTRNCPY((char*)dup->intData,(const char*)src->intData,WOLFSSL_ASN1_INTEGER_MAX); XSTRNCPY((char*)copy->intData,(const char*)src->intData,WOLFSSL_ASN1_INTEGER_MAX);
if (dup->isDynamic && src->data && dup->dataMax) { if (copy->isDynamic && src->data && copy->dataMax) {
dup->data = (unsigned char*) copy->data = (unsigned char*)
XMALLOC(src->dataMax,NULL,DYNAMIC_TYPE_OPENSSL); XMALLOC(src->dataMax,NULL,DYNAMIC_TYPE_OPENSSL);
if (dup->data == NULL) { if (copy->data == NULL) {
wolfSSL_ASN1_INTEGER_free(dup); wolfSSL_ASN1_INTEGER_free(copy);
return NULL; return NULL;
} }
XMEMCPY(dup->data,src->data,dup->dataMax); XMEMCPY(copy->data, src->data, copy->dataMax);
} }
return dup; return copy;
} }
@ -36287,7 +36287,7 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
Returns a new WOLFSSL_X509_NAME structure or NULL on failure */ Returns a new WOLFSSL_X509_NAME structure or NULL on failure */
WOLFSSL_X509_NAME* wolfSSL_X509_NAME_dup(WOLFSSL_X509_NAME *name) WOLFSSL_X509_NAME* wolfSSL_X509_NAME_dup(WOLFSSL_X509_NAME *name)
{ {
WOLFSSL_X509_NAME* dup = NULL; WOLFSSL_X509_NAME* copy = NULL;
WOLFSSL_ENTER("wolfSSL_X509_NAME_dup"); WOLFSSL_ENTER("wolfSSL_X509_NAME_dup");
@ -36296,50 +36296,50 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
return NULL; return NULL;
} }
if (!(dup = wolfSSL_X509_NAME_new())) { if (!(copy = wolfSSL_X509_NAME_new())) {
return NULL; return NULL;
} }
/* copy contents */ /* copy contents */
XMEMCPY(dup, name, sizeof(WOLFSSL_X509_NAME)); XMEMCPY(copy, name, sizeof(WOLFSSL_X509_NAME));
InitX509Name(dup, 1); InitX509Name(copy, 1);
dup->sz = name->sz; copy->sz = name->sz;
/* handle dynamic portions */ /* handle dynamic portions */
if (name->dynamicName) { if (name->dynamicName) {
if (!(dup->name = (char*)XMALLOC(name->sz, 0, if (!(copy->name = (char*)XMALLOC(name->sz, 0,
DYNAMIC_TYPE_OPENSSL))) { DYNAMIC_TYPE_OPENSSL))) {
goto err; goto err;
} }
} }
XMEMCPY(dup->name, name->name, name->sz); XMEMCPY(copy->name, name->name, name->sz);
#if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \ #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \
!defined(NO_ASN) !defined(NO_ASN)
if (!(dup->fullName.fullName = (char*)XMALLOC(name->fullName.fullNameLen, if (!(copy->fullName.fullName = (char*)XMALLOC(name->fullName.fullNameLen,
0, DYNAMIC_TYPE_OPENSSL))) { 0, DYNAMIC_TYPE_OPENSSL))) {
goto err; goto err;
} }
XMEMCPY(dup->fullName.fullName, name->fullName.fullName, XMEMCPY(copy->fullName.fullName, name->fullName.fullName,
name->fullName.fullNameLen); name->fullName.fullNameLen);
#endif #endif
return dup; return copy;
err: err:
if (dup) { if (copy) {
if (dup->dynamicName && dup->name) { if (copy->dynamicName && copy->name) {
XFREE(dup->name, 0, DYNAMIC_TYPE_OPENSSL); XFREE(copy->name, 0, DYNAMIC_TYPE_OPENSSL);
dup->name = NULL; copy->name = NULL;
} }
#if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \ #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \
!defined(NO_ASN) !defined(NO_ASN)
if (dup->fullName.fullName && if (copy->fullName.fullName &&
dup->fullName.fullName != name->fullName.fullName) { copy->fullName.fullName != name->fullName.fullName) {
XFREE(dup->fullName.fullName, 0, DYNAMIC_TYPE_OPENSSL); XFREE(copy->fullName.fullName, 0, DYNAMIC_TYPE_OPENSSL);
dup->fullName.fullName = NULL; copy->fullName.fullName = NULL;
} }
#endif #endif
wolfSSL_X509_NAME_free(dup); wolfSSL_X509_NAME_free(copy);
} }
return NULL; return NULL;
} }

View File

@ -4870,16 +4870,21 @@ static void test_wolfSSL_PKCS12(void)
#if !defined(NO_FILESYSTEM) && !defined(NO_ASN) && defined(HAVE_PKCS8) \ #if !defined(NO_FILESYSTEM) && !defined(NO_ASN) && defined(HAVE_PKCS8) \
&& defined(HAVE_ECC) && defined(WOLFSSL_ENCRYPTED_KEYS) && defined(HAVE_ECC) && defined(WOLFSSL_ENCRYPTED_KEYS)
/* used to keep track if FailTestCallback was called */
static int failTestCallbackCalled = 0;
static WC_INLINE int FailTestCallBack(char* passwd, int sz, int rw, void* userdata) static WC_INLINE int FailTestCallBack(char* passwd, int sz, int rw, void* userdata)
{ {
(void)passwd; (void)passwd;
(void)sz; (void)sz;
(void)rw; (void)rw;
(void)userdata; (void)userdata;
Fail(("Password callback should not be called by default"),
("Password callback was called without attempting " /* mark called, test_wolfSSL_no_password_cb() will check and fail if set */
"to first decipher private key without password.")); failTestCallbackCalled = 1;
return 0;
return -1;
} }
#endif #endif
@ -4919,6 +4924,12 @@ static void test_wolfSSL_no_password_cb(void)
wolfSSL_CTX_free(ctx); wolfSSL_CTX_free(ctx);
if (failTestCallbackCalled != 0) {
Fail(("Password callback should not be called by default"),
("Password callback was called without attempting "
"to first decipher private key without password."));
}
printf(resultFmt, passed); printf(resultFmt, passed);
#endif #endif
} }
@ -31046,16 +31057,16 @@ static void test_wolfSSL_ASN1_INTEGER_set()
wolfSSL_ASN1_INTEGER_free(a); wolfSSL_ASN1_INTEGER_free(a);
#ifndef TIME_T_NOT_64BIT #ifndef TIME_T_NOT_64BIT
/* 2147483648 */ /* int max (2147483647) */
a = wolfSSL_ASN1_INTEGER_new(); a = wolfSSL_ASN1_INTEGER_new();
val = 2147483648; val = 2147483647;
ret = ASN1_INTEGER_set(a, val); ret = ASN1_INTEGER_set(a, val);
AssertIntEQ(ret, 1); AssertIntEQ(ret, 1);
wolfSSL_ASN1_INTEGER_free(a); wolfSSL_ASN1_INTEGER_free(a);
/* -2147483648 */ /* int min (-2147483648) */
a = wolfSSL_ASN1_INTEGER_new(); a = wolfSSL_ASN1_INTEGER_new();
val = -2147483648; val = -2147483647 - 1;
ret = ASN1_INTEGER_set(a, val); ret = ASN1_INTEGER_set(a, val);
AssertIntEQ(a->negative, 1); AssertIntEQ(a->negative, 1);
AssertIntEQ(ret, 1); AssertIntEQ(ret, 1);