@@ -3223,27 +3223,27 @@ __req_parse_x_forwarded_for(TfwHttpMsg *hm, unsigned char *data, size_t len)
32233223 __FSM_STATE (Req_I_XFF ) {
32243224 /* Eat OWS before the node ID. */
32253225 if (unlikely (IS_WS (c )))
3226- __FSM_I_MOVE (Req_I_XFF );
3226+ __FSM_I_MOVE_fixup (Req_I_XFF , 1 , 0 );
32273227 /*
32283228 * Eat IP address or host name.
32293229 *
32303230 * TODO: parse/validate IP addresses and textual IDs.
32313231 * Currently we just validate separate characters, but the
32323232 * whole value may be invalid (e.g. "---[_..[[").
32333233 */
3234- __FSM_I_MATCH_MOVE (xff , Req_I_XFF_Node_Id );
3234+ __FSM_I_MATCH_MOVE_fixup (xff , Req_I_XFF_Node_Id , TFW_STR_VALUE );
32353235 if (unlikely (!__fsm_sz ))
32363236 return CSTR_NEQ ;
3237- __FSM_I_MOVE_n (Req_I_XFF_Sep , __fsm_sz );
3237+ __FSM_I_MOVE_fixup (Req_I_XFF_Sep , __fsm_sz , TFW_STR_VALUE );
32383238 }
32393239
32403240 /*
32413241 * At this state we know that we saw at least one character as
32423242 * a host address and now we can pass zero length token.
32433243 */
32443244 __FSM_STATE (Req_I_XFF_Node_Id ) {
3245- __FSM_I_MATCH_MOVE (xff , Req_I_XFF_Node_Id );
3246- __FSM_I_MOVE_n (Req_I_XFF_Sep , __fsm_sz );
3245+ __FSM_I_MATCH_MOVE_fixup (xff , Req_I_XFF_Node_Id , TFW_STR_VALUE );
3246+ __FSM_I_MOVE_fixup (Req_I_XFF_Sep , __fsm_sz , TFW_STR_VALUE );
32473247 }
32483248
32493249 __FSM_STATE (Req_I_XFF_Sep ) {
@@ -3256,14 +3256,14 @@ __req_parse_x_forwarded_for(TfwHttpMsg *hm, unsigned char *data, size_t len)
32563256
32573257 /* OWS before comma or before EOL (is unusual). */
32583258 if (unlikely (IS_WS (c )))
3259- __FSM_I_MOVE (Req_I_XFF_Sep );
3259+ __FSM_I_MOVE_fixup (Req_I_XFF_Sep , 1 , 0 );
32603260
32613261 /*
32623262 * Multiple subsequent commas look suspicious, so we don't
32633263 * stay in this state after the first comma is met.
32643264 */
32653265 if (likely (c == ',' ))
3266- __FSM_I_MOVE (Req_I_XFF );
3266+ __FSM_I_MOVE_fixup (Req_I_XFF , 1 , 0 );
32673267
32683268 return CSTR_NEQ ;
32693269 }
@@ -4075,9 +4075,9 @@ tfw_http_parse_req(void *req_data, unsigned char *data, size_t len,
40754075 TFW_HTTP_HDR_TRANSFER_ENCODING );
40764076
40774077 /* 'X-Forwarded-For:*OWS' is read, process field-value. */
4078- TFW_HTTP_PARSE_SPECHDR_VAL (Req_HdrX_Forwarded_ForV , Req_I_XFF ,
4079- msg , __req_parse_x_forwarded_for ,
4080- TFW_HTTP_HDR_X_FORWARDED_FOR );
4078+ __TFW_HTTP_PARSE_SPECHDR_VAL (Req_HdrX_Forwarded_ForV , Req_I_XFF ,
4079+ msg , __req_parse_x_forwarded_for ,
4080+ TFW_HTTP_HDR_X_FORWARDED_FOR , 0 );
40814081
40824082 /* 'User-Agent:*OWS' is read, process field-value. */
40834083 TFW_HTTP_PARSE_SPECHDR_VAL (Req_HdrUser_AgentV , Req_I_UserAgent ,
0 commit comments