summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-07-31 00:49:31 +0800
committeryangwei <[email protected]>2023-07-31 00:49:31 +0800
commitca6f5be56869f06c5fe60e242c9d0f637b26485c (patch)
tree899bb36e251f4887194935a21c84af8de99315eb /src
parent8b105dca38632280c80176678879b20df288a636 (diff)
🐞 fix(parse_server_name_extension): 增加sni长度判断,同时解析结果异常时,增加释放已申请sni内存的操作v6.0.45
Diffstat (limited to 'src')
-rw-r--r--src/tsg_ssl_utils.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/tsg_ssl_utils.cpp b/src/tsg_ssl_utils.cpp
index 96ff144..634dae9 100644
--- a/src/tsg_ssl_utils.cpp
+++ b/src/tsg_ssl_utils.cpp
@@ -179,7 +179,7 @@ static char* parse_server_name_extension(const unsigned char* buff, size_t buff
while (pos + 3 < buff_len)
{
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;
return NULL;
@@ -198,6 +198,11 @@ static char* parse_server_name_extension(const unsigned char* buff, size_t buff
}
if (pos != buff_len)
{
+ if(sni!=NULL)
+ {
+ free(sni);
+ sni = NULL;
+ }
*result = CHELLO_PARSE_INVALID_FORMAT;
}
return sni;