diff options
| author | yangwei <[email protected]> | 2023-09-04 09:29:18 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-09-11 13:07:11 +0800 |
| commit | 6546b7ce475bc65a136cecadab038ce946102f7c (patch) | |
| tree | cde5d702e71845e6e3d87cc2bd059d2ca9374349 | |
| parent | 81307dfc57764bc3c175807e40728ece18ecbdbb (diff) | |
🐞 fix(http_Common): Fix TSG-16812,处理空格换行存在读越界
| -rw-r--r-- | src/HTTP_Common.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/HTTP_Common.c b/src/HTTP_Common.c index edf68f9..358da91 100644 --- a/src/HTTP_Common.c +++ b/src/HTTP_Common.c @@ -137,27 +137,21 @@ void http_deleteSPHT(uint32 *offset, char* data, uint32 data_len) ***********************************************************/ void http_deleteSPHTCRLFAtLast(uint32 *del_data_len, char* data, uint32 data_len) { - if(data==NULL||data_len==0) return ; - *del_data_len = data_len - 1; - if(0==*del_data_len) - { - if(HTTP_CR==*(data+*del_data_len) || HTTP_HT==*(data+*del_data_len) || - HTTP_SP==*(data+*del_data_len) || HTTP_LF==*(data+*del_data_len)) - return ; - } - while((int)*del_data_len>=0) - { - if(HTTP_CR!=*(data+*del_data_len) && HTTP_HT!=*(data+*del_data_len) && - HTTP_SP!=*(data+*del_data_len) && HTTP_LF!=*(data+*del_data_len)) - break; - if(HTTP_CR==*(data+*del_data_len) || HTTP_HT==*(data+*del_data_len) || - HTTP_SP==*(data+*del_data_len) || HTTP_LF==*(data+*del_data_len)) - (*del_data_len)--; - - if((*del_data_len)<=0) - break; - } - (*del_data_len)++; + if (data == NULL || data_len == 0 || del_data_len == NULL) { + return; + } + + // ��ʼ��Ҫɾ���ij���Ϊ���ݳ��� + *del_data_len = data_len; + + // ������ĩβ��ǰ���ҷǿհ��ַ��ͻ��з� + while (*del_data_len > 0 && + (data[*del_data_len - 1] == HTTP_CR || + data[*del_data_len - 1] == HTTP_HT || + data[*del_data_len - 1] == HTTP_SP || + data[*del_data_len - 1] == HTTP_LF)) { + (*del_data_len)--; + } } /********************************************************** |
