Fix some memory issues in wolfSSL_state_string_long().

This commit is contained in:
Go Hosohara
2017-07-02 10:52:31 +09:00
committed by Jacob Barthelmeh
parent a32ae3e516
commit fd05de8346

View File

@@ -15150,6 +15150,9 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
if (pos != name->fullName.cnIdx) if (pos != name->fullName.cnIdx)
ret = name->fullName.cnIdx; ret = name->fullName.cnIdx;
break; break;
case NID_domainComponent:
break;
default: default:
WOLFSSL_MSG("NID not yet implemented"); WOLFSSL_MSG("NID not yet implemented");
break; break;
@@ -19074,6 +19077,7 @@ const char* wolfSSL_state_string_long(const WOLFSSL* ssl)
WOLFSSL_ENTER("wolfSSL_state_string_long"); WOLFSSL_ENTER("wolfSSL_state_string_long");
char state_msg[100]; char state_msg[100];
static char output_str[100];
if (ssl == NULL) { if (ssl == NULL) {
WOLFSSL_MSG("Null argument passed in"); WOLFSSL_MSG("Null argument passed in");
@@ -19117,115 +19121,105 @@ const char* wolfSSL_state_string_long(const WOLFSSL* ssl)
XSTRNCPY(state_msg, "Unknown Protocol", 16); XSTRNCPY(state_msg, "Unknown Protocol", 16);
} }
XMEMSET(output_str, 0, sizeof(output_str));
switch (wolfSSL_get_state(ssl)) { switch (wolfSSL_get_state(ssl)) {
case NULL_STATE: case NULL_STATE:
{ {
static char NL_ST[100];
const char* state = " Null State"; const char* state = " Null State";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(NL_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return NL_ST; return output_str;
} }
case SERVER_HELLOVERIFYREQUEST_COMPLETE: case SERVER_HELLOVERIFYREQUEST_COMPLETE:
{ {
static char SHVC_ST[100];
const char* state = " Server Hello Verify Request Complete"; const char* state = " Server Hello Verify Request Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SHVC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SHVC_ST; return output_str;
} }
case SERVER_HELLO_COMPLETE: case SERVER_HELLO_COMPLETE:
{ {
static char SHC_ST[100];
const char* state = " Server Hello Complete"; const char* state = " Server Hello Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SHC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SHC_ST; return output_str;
} }
case SERVER_CERT_COMPLETE: case SERVER_CERT_COMPLETE:
{ {
static char SCC_ST[100];
const char* state = " Server Certificate Complete"; const char* state = " Server Certificate Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SCC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SCC_ST; return output_str;
} }
case SERVER_KEYEXCHANGE_COMPLETE: case SERVER_KEYEXCHANGE_COMPLETE:
{ {
static char SKC_ST[100];
const char* state = " Server Key Exchange Complete"; const char* state = " Server Key Exchange Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SKC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SKC_ST; return output_str;
} }
case SERVER_HELLODONE_COMPLETE: case SERVER_HELLODONE_COMPLETE:
{ {
static char SHDC_ST[100];
const char* state = " Server Hello Done Complete"; const char* state = " Server Hello Done Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SHDC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SHDC_ST; return output_str;
} }
case SERVER_FINISHED_COMPLETE: case SERVER_FINISHED_COMPLETE:
{ {
static char SFC_ST[100];
const char* state = " Server Finished Complete"; const char* state = " Server Finished Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(SFC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return SFC_ST; return output_str;
} }
case CLIENT_HELLO_COMPLETE: case CLIENT_HELLO_COMPLETE:
{ {
static char CHC_ST[100];
const char* state = " Client Hello Complete"; const char* state = " Client Hello Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(CHC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return CHC_ST; return output_str;
} }
case CLIENT_KEYEXCHANGE_COMPLETE: case CLIENT_KEYEXCHANGE_COMPLETE:
{ {
static char CKC_ST[100];
const char* state = " Client Key Exchange Complete"; const char* state = " Client Key Exchange Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(CKC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return CKC_ST; return output_str;
} }
case CLIENT_FINISHED_COMPLETE: case CLIENT_FINISHED_COMPLETE:
{ {
static char CFC_ST[100];
const char* state = " Client Finished Complete"; const char* state = " Client Finished Complete";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(CFC_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return CFC_ST; return output_str;
} }
case HANDSHAKE_DONE: case HANDSHAKE_DONE:
{ {
static char HD_ST[100];
const char* state = " Handshake Done"; const char* state = " Handshake Done";
XSTRNCAT(state_msg, state, XSTRLEN(state) + 1); XSTRNCAT(state_msg, state, XSTRLEN(state) + 1);
XSTRNCPY(HD_ST, state_msg, sizeof(state_msg)); XSTRNCPY(output_str, state_msg, sizeof(state_msg));
return HD_ST; return output_str;
} }
default: default: