diff options
| author | yangwei <[email protected]> | 2023-07-31 00:49:31 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-07-31 00:49:31 +0800 |
| commit | ca6f5be56869f06c5fe60e242c9d0f637b26485c (patch) | |
| tree | 899bb36e251f4887194935a21c84af8de99315eb /src | |
| parent | 8b105dca38632280c80176678879b20df288a636 (diff) | |
🐞 fix(parse_server_name_extension): 增加sni长度判断,同时解析结果异常时,增加释放已申请sni内存的操作v6.0.45
Diffstat (limited to 'src')
| -rw-r--r-- | src/tsg_ssl_utils.cpp | 7 |
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; |
