]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
http: track if request/response have trailers
authorVictor Julien <victor@inliniac.net>
Tue, 27 Sep 2016 15:16:38 +0000 (17:16 +0200)
committerVictor Julien <victor@inliniac.net>
Thu, 29 Sep 2016 11:20:54 +0000 (13:20 +0200)
src/app-layer-htp.c
src/app-layer-htp.h

index d4c15359dafe39d2a9bad1be51efdc3a2ed9d92f..0f297df1fc48a3072b7d84f7c371a9eac4346925 100644 (file)
@@ -1918,6 +1918,24 @@ void HTPFreeConfig(void)
     SCReturn;
 }
 
+static int HTPCallbackRequestHasTrailer(htp_tx_t *tx)
+{
+    HtpTxUserData *htud = (HtpTxUserData *)htp_tx_get_user_data(tx);
+    if (htud != NULL) {
+        htud->request_has_trailers = 1;
+    }
+    return HTP_OK;
+}
+
+static int HTPCallbackResponseHasTrailer(htp_tx_t *tx)
+{
+    HtpTxUserData *htud = (HtpTxUserData *)htp_tx_get_user_data(tx);
+    if (htud != NULL) {
+        htud->response_has_trailers = 1;
+    }
+    return HTP_OK;
+}
+
 /**
  *  \brief  callback for request to store the recent incoming request
             in to the recent_in_tx for the given htp state
@@ -2142,6 +2160,9 @@ static void HTPConfigSetDefaultsPhase1(HTPCfgRec *cfg_prec)
     htp_config_register_response_header_data(cfg_prec->cfg, HTPCallbackResponseHeaderData);
     htp_config_register_response_trailer_data(cfg_prec->cfg, HTPCallbackResponseHeaderData);
 
+    htp_config_register_request_trailer(cfg_prec->cfg, HTPCallbackRequestHasTrailer);
+    htp_config_register_response_trailer(cfg_prec->cfg, HTPCallbackResponseHasTrailer);
+
     htp_config_register_request_body_data(cfg_prec->cfg, HTPCallbackRequestBodyData);
     htp_config_register_response_body_data(cfg_prec->cfg, HTPCallbackResponseBodyData);
 
index a2ad92b9c06de52e025e4c937d64a786a97a6ffa..0e3503c3e8ee6d2076ba0d66c3a1b714f7681e2b 100644 (file)
@@ -192,6 +192,9 @@ typedef struct HtpTxUserData_ {
     uint8_t request_body_init;
     uint8_t response_body_init;
 
+    uint8_t request_has_trailers;
+    uint8_t response_has_trailers;
+
     /* indicates which loggers that have logged */
     uint32_t logged;