@@ -69,16 +69,10 @@ static void dummy_mk_http_request_init(struct mk_http_session *session,
6969
7070static int http1_evict_request (struct flb_http1_server_session * session )
7171{
72- uintptr_t session_buffer_upper_bound ;
73- uintptr_t session_buffer_lower_bound ;
7472 size_t session_buffer_length ;
7573 cfl_sds_t session_buffer ;
76- size_t content_length ;
7774 size_t request_length ;
78- uintptr_t request_end ;
7975
80- request_end = 0 ;
81- content_length = 0 ;
8276 session_buffer = session -> parent -> incoming_data ;
8377
8478 if (session_buffer == NULL ) {
@@ -87,46 +81,28 @@ static int http1_evict_request(struct flb_http1_server_session *session)
8781
8882 session_buffer_length = cfl_sds_len (session_buffer );
8983
90- if (session -> inner_request .data .data != NULL ) {
91- content_length = session -> inner_request .data .len ;
84+ request_length = mk_http_parser_request_size (& session -> inner_parser ,
85+ session_buffer ,
86+ session_buffer_length );
9287
93- request_end = (uintptr_t ) session -> inner_request .data .data ;
94- request_end += content_length ;
95- }
96- else {
97- request_end = (uintptr_t ) strstr (session_buffer ,
98- "\r\n\r\n" );
88+ if (request_length == -1 ||
89+ request_length > session_buffer_length ) {
90+ cfl_sds_set_len (session_buffer , 0 );
9991
100- if (request_end != 0 ) {
101- request_end += 4 ;
102- }
92+ return -1 ;
10393 }
10494
105- if (request_end != 0 ) {
106- session_buffer_lower_bound = (uintptr_t ) session_buffer ;
107- session_buffer_upper_bound = (uintptr_t ) & session_buffer [session_buffer_length ];
108-
109- if (request_end < session_buffer_lower_bound ||
110- request_end > session_buffer_upper_bound ) {
111- return -1 ;
112- }
113-
114- request_length = (size_t ) (request_end - session_buffer_lower_bound );
115-
116- if (request_length == session_buffer_length ) {
117- session_buffer_length = 0 ;
118- }
119- else {
120- session_buffer_length -= request_length ;
95+ if ((session_buffer_length - request_length ) > 0 ) {
96+ session_buffer_length -= request_length ;
12197
122- memmove (session_buffer ,
123- & session_buffer [request_length ],
124- session_buffer_length );
98+ memmove (session_buffer ,
99+ & session_buffer [request_length ],
100+ session_buffer_length );
125101
126- session_buffer [session_buffer_length ] = '\0' ;
127- }
128-
129- cfl_sds_set_len (session_buffer , session_buffer_length );
102+ session_buffer [session_buffer_length ] = '\0' ;
103+ }
104+ else {
105+ cfl_sds_set_len (session_buffer , 0 );
130106 }
131107
132108 return 0 ;
0 commit comments