🐞 fix(parse_server_name_extension): 增加sni长度判断,同时解析结果异常时,增加释放已申请sni内存的操作
This commit is contained in:
@@ -179,7 +179,7 @@ static char* parse_server_name_extension(const unsigned char* buff, size_t buff
|
|||||||
while (pos + 3 < buff_len)
|
while (pos + 3 < buff_len)
|
||||||
{
|
{
|
||||||
size_t len = ((size_t)buff[pos + 1] << 8) + (size_t)buff[pos + 2];
|
size_t len = ((size_t)buff[pos + 1] << 8) + (size_t)buff[pos + 2];
|
||||||
if (pos + 3 + len > buff_len)
|
if (len == 0 || pos + 3 + len > buff_len)
|
||||||
{
|
{
|
||||||
*result = CHELLO_PARSE_INVALID_FORMAT;
|
*result = CHELLO_PARSE_INVALID_FORMAT;
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -198,6 +198,11 @@ static char* parse_server_name_extension(const unsigned char* buff, size_t buff
|
|||||||
}
|
}
|
||||||
if (pos != buff_len)
|
if (pos != buff_len)
|
||||||
{
|
{
|
||||||
|
if(sni!=NULL)
|
||||||
|
{
|
||||||
|
free(sni);
|
||||||
|
sni = NULL;
|
||||||
|
}
|
||||||
*result = CHELLO_PARSE_INVALID_FORMAT;
|
*result = CHELLO_PARSE_INVALID_FORMAT;
|
||||||
}
|
}
|
||||||
return sni;
|
return sni;
|
||||||
|
|||||||
Reference in New Issue
Block a user