static analysis and windows fix

This commit is contained in:
Jacob Barthelmeh
2017-02-23 14:41:51 -07:00
parent d2f1ced52f
commit 064a54f552
3 changed files with 73 additions and 10 deletions

View File

@@ -15184,11 +15184,11 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
} }
tmp[0] = '\0'; tmp[0] = '\0';
for (i = 0; i < sz - 1 && (3 * i) < tmpSz - valSz; i++) { for (i = 0; i < sz - 1 && (3 * i) < tmpSz - valSz; i++) {
XSNPRINTF(val, sizeof(val) - 1, "%2x:", serial[i]); XSNPRINTF(val, sizeof(val) - 1, "%02x:", serial[i]);
val[3] = '\0'; /* make sure is null terminated */ val[3] = '\0'; /* make sure is null terminated */
XSTRNCAT(tmp, val, valSz); XSTRNCAT(tmp, val, valSz);
} }
XSNPRINTF(val, sizeof(val) - 1, "%2x\n", serial[i]); XSNPRINTF(val, sizeof(val) - 1, "%02x\n", serial[i]);
val[3] = '\0'; /* make sure is null terminated */ val[3] = '\0'; /* make sure is null terminated */
XSTRNCAT(tmp, val, valSz); XSTRNCAT(tmp, val, valSz);
if (wolfSSL_BIO_write(bio, tmp, (int)XSTRLEN(tmp)) <= 0) { if (wolfSSL_BIO_write(bio, tmp, (int)XSTRLEN(tmp)) <= 0) {
@@ -15222,14 +15222,13 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
/* print issuer */ /* print issuer */
{ {
char* issuer; char* issuer;
#ifdef WOLFSSL_SMALL_STACK #ifndef WOLFSSL_SMALL_STACK
char* buff = NULL; char* buff = NULL;
int issSz = 0; int issSz = 0;
#else #else
char buff[256]; char buff[256];
int issSz = 256; int issSz = 256;
#endif #endif
issuer = buff;
issuer = wolfSSL_X509_NAME_oneline( issuer = wolfSSL_X509_NAME_oneline(
wolfSSL_X509_get_issuer_name(x509), buff, issSz); wolfSSL_X509_get_issuer_name(x509), buff, issSz);
@@ -15303,7 +15302,6 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
char buff[256]; char buff[256];
int subSz = 256; int subSz = 256;
#endif #endif
subject = buff;
subject = wolfSSL_X509_NAME_oneline( subject = wolfSSL_X509_NAME_oneline(
wolfSSL_X509_get_subject_name(x509), buff, subSz); wolfSSL_X509_get_subject_name(x509), buff, subSz);
@@ -15447,6 +15445,7 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
WOLFSSL_MSG("Memory error"); WOLFSSL_MSG("Memory error");
return SSL_FAILURE; return SSL_FAILURE;
} }
XMEMSET(rawKey, 0, rawLen);
mp_to_unsigned_bin(&rsa.e, rawKey); mp_to_unsigned_bin(&rsa.e, rawKey);
if ((word32)rawLen <= sizeof(word32)) { if ((word32)rawLen <= sizeof(word32)) {
idx = *(word32*)rawKey; idx = *(word32*)rawKey;
@@ -15621,7 +15620,6 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
char buff[256]; char buff[256];
int issSz = 256; int issSz = 256;
#endif #endif
issuer = buff;
issuer = wolfSSL_X509_NAME_oneline( issuer = wolfSSL_X509_NAME_oneline(
wolfSSL_X509_get_issuer_name(x509), buff, issSz); wolfSSL_X509_get_issuer_name(x509), buff, issSz);
@@ -15687,7 +15685,7 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
return SSL_FAILURE; return SSL_FAILURE;
} }
wolfSSL_X509_get_signature(x509, NULL, &sigSz); sigSz = (int)x509->sig.length;
sig = (unsigned char*)XMALLOC(sigSz, NULL, DYNAMIC_TYPE_TMP_BUFFER); sig = (unsigned char*)XMALLOC(sigSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (sig == NULL || sigSz <= 0) { if (sig == NULL || sigSz <= 0) {
return SSL_FAILURE; return SSL_FAILURE;
@@ -22212,7 +22210,7 @@ int wolfSSL_RSA_private_encrypt(int len, unsigned char* in,
unsigned char* out, WOLFSSL_RSA* rsa, int padding) unsigned char* out, WOLFSSL_RSA* rsa, int padding)
{ {
int sz = 0; int sz = 0;
WC_RNG* rng; WC_RNG* rng = NULL;
RsaKey* key; RsaKey* key;
WOLFSSL_MSG("wolfSSL_RSA_private_encrypt"); WOLFSSL_MSG("wolfSSL_RSA_private_encrypt");
@@ -26217,7 +26215,8 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
WOLFSSL_ENTER("wolfSSL_X509_NAME_new"); WOLFSSL_ENTER("wolfSSL_X509_NAME_new");
name = XMALLOC(sizeof(WOLFSSL_X509_NAME), NULL, DYNAMIC_TYPE_X509); name = (WOLFSSL_X509_NAME*)XMALLOC(sizeof(WOLFSSL_X509_NAME), NULL,
DYNAMIC_TYPE_X509);
if (name != NULL) { if (name != NULL) {
InitX509Name(name, 1); InitX509Name(name, 1);
} }
@@ -26225,6 +26224,8 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
} }
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_RSA)
/* needed SetName function from asn.c is wrapped by NO_RSA */
/* helper function for CopyX509NameToCertName() */ /* helper function for CopyX509NameToCertName() */
static int CopyX509NameEntry(char* out, int max, char* in, int inLen) static int CopyX509NameEntry(char* out, int max, char* in, int inLen)
{ {
@@ -26377,6 +26378,7 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
return sz; return sz;
} }
#endif /* WOLFSSL_CERT_GEN */
/* Compares the two X509 names. If the size of x is larger then y then a /* Compares the two X509 names. If the size of x is larger then y then a

View File

@@ -215,6 +215,7 @@
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA
#include <wolfssl/openssl/ssl.h> #include <wolfssl/openssl/ssl.h>
#include <wolfssl/openssl/crypto.h>
#include <wolfssl/openssl/pkcs12.h> #include <wolfssl/openssl/pkcs12.h>
#include <wolfssl/openssl/evp.h> #include <wolfssl/openssl/evp.h>
#include <wolfssl/openssl/dh.h> #include <wolfssl/openssl/dh.h>
@@ -13427,6 +13428,64 @@ static int test_wc_ecc_is_valid_idx (void)
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
static void test_wolfSSL_X509_NAME(void)
{
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && !defined(NO_FILESYSTEM) \
&& !defined(NO_RSA) && defined(WOLFSSL_CERT_GEN)
X509* x509;
const unsigned char* c;
unsigned char buf[4096];
int bytes;
FILE* f;
const X509_NAME* a;
const X509_NAME* b;
int sz;
unsigned char* tmp;
char file[] = "./certs/ca-cert.der";
printf(testingFmt, "wolfSSL_X509_NAME()");
/* test compile of depricated function, returns 0 */
AssertIntEQ(CRYPTO_thread_id(), 0);
AssertNotNull(a = X509_NAME_new());
X509_NAME_free((X509_NAME*)a);
f = fopen(file, "rb");
AssertNotNull(f);
bytes = (int)fread(buf, 1, sizeof(buf), f);
fclose(f);
c = buf;
AssertNotNull(x509 = wolfSSL_X509_load_certificate_buffer(c, bytes,
SSL_FILETYPE_ASN1));
/* test cmp function */
AssertNotNull(a = X509_get_issuer_name(x509));
AssertNotNull(b = X509_get_subject_name(x509));
AssertIntEQ(X509_NAME_cmp(a, b), 0); /* self signed should be 0 */
tmp = buf;
AssertIntGT((sz = i2d_X509_NAME((X509_NAME*)a, &tmp)), 0);
if (tmp == buf) {
printf("\nERROR - %s line %d failed with:", __FILE__, __LINE__); \
printf(" Expected pointer to be incremented\n");
abort();
}
/* retry but with the function creating a buffer */
tmp = NULL;
AssertIntGT((sz = i2d_X509_NAME((X509_NAME*)b, &tmp)), 0);
XFREE(tmp, NULL, DYNAMIC_TYPE_OPENSSL);
X509_free(x509);
printf(resultFmt, passed);
#endif /* defined(OPENSSL_EXTRA) && !defined(NO_DES3) */
}
static void test_wolfSSL_DES(void) static void test_wolfSSL_DES(void)
{ {
#if defined(OPENSSL_EXTRA) && !defined(NO_DES3) #if defined(OPENSSL_EXTRA) && !defined(NO_DES3)
@@ -16206,6 +16265,7 @@ void ApiTest(void)
test_wolfSSL_mcast(); test_wolfSSL_mcast();
/* compatibility tests */ /* compatibility tests */
test_wolfSSL_X509_NAME();
test_wolfSSL_DES(); test_wolfSSL_DES();
test_wolfSSL_certs(); test_wolfSSL_certs();
test_wolfSSL_ASN1_TIME_print(); test_wolfSSL_ASN1_TIME_print();

View File

@@ -40,4 +40,5 @@ nobase_include_HEADERS+= \
wolfssl/openssl/stack.h \ wolfssl/openssl/stack.h \
wolfssl/openssl/ui.h \ wolfssl/openssl/ui.h \
wolfssl/openssl/x509.h \ wolfssl/openssl/x509.h \
wolfssl/openssl/x509v3.h wolfssl/openssl/x509v3.h \
wolfssl/openssl/rc4.h