fix on TLSX_SNI_GetFromBuffer - set inOutSz value to zero when there is no SNI extension in the client hello buffer.

pull/1/head
Moisés Guimarães 2014-06-09 17:31:32 -03:00
parent e0c5c89bf6
commit 064483035c
2 changed files with 12 additions and 4 deletions

View File

@ -1047,6 +1047,8 @@ int TLSX_SNI_GetFromBuffer(const byte* clientHello, word32 helloSz,
len16 -= min(2 * OPAQUE16_LEN + extLen, len16);
}
*inOutSz = 0;
return len16 ? BUFFER_ERROR : SSL_SUCCESS;
}

View File

@ -390,9 +390,15 @@ static void test_CyaSSL_SNI_GetFromBuffer(void)
AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer3, sizeof(buffer3),
0, result, &length));
AssertIntEQ(XSTRLEN(""), length);
length = 32;
AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer2, sizeof(buffer2),
1, result, &length));
AssertIntEQ(XSTRLEN(""), length);
length = 32;
AssertIntEQ(-228, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0,
result, &length));
@ -410,15 +416,15 @@ static void test_CyaSSL_SNI_GetFromBuffer(void)
result, &length));
buffer[4] = 0x64;
AssertIntEQ(1, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0,
result, &length));
AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer),
0, result, &length));
result[length] = 0;
AssertStrEQ("www.paypal.com", (const char*) result);
length = 32;
AssertIntEQ(1, CyaSSL_SNI_GetFromBuffer(buffer2, sizeof(buffer2), 0,
result, &length));
AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer2, sizeof(buffer2),
0, result, &length));
result[length] = 0;
AssertStrEQ("api.textmate.org", (const char*) result);
}