summaryrefslogtreecommitdiff
path: root/src/HTTP_Common.c
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-09-04 09:29:18 +0800
committeryangwei <[email protected]>2023-09-11 13:07:11 +0800
commit6546b7ce475bc65a136cecadab038ce946102f7c (patch)
treecde5d702e71845e6e3d87cc2bd059d2ca9374349 /src/HTTP_Common.c
parent81307dfc57764bc3c175807e40728ece18ecbdbb (diff)
🐞 fix(http_Common): Fix TSG-16812,处理空格换行存在读越界
Diffstat (limited to 'src/HTTP_Common.c')
-rw-r--r--src/HTTP_Common.c36
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)--;
+ }
}
/**********************************************************