]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
http: aliases for opaque htp_conn_t
authorPhilippe Antoine <pantoine@oisf.net>
Thu, 6 Feb 2025 13:31:40 +0000 (14:31 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 19 Feb 2025 15:34:10 +0000 (16:34 +0100)
In preparation of libhtp rust

src/app-layer-htp-libhtp.h
src/app-layer-htp.c

index b4a1a6d85cc4bd0834484176ae9423defb1e66a2..8988b2ca84fde8da6e1cabe9863964a4c82e21ec 100644 (file)
 #define htp_tx_data_data(d) d->data
 #define htp_tx_data_tx(d)   d->tx
 
+// Functions introduced to handle opaque htp_conn_t:
+#define htp_conn_request_data_counter(c)  c->in_data_counter
+#define htp_conn_response_data_counter(c) c->out_data_counter
+
 bstr *SCHTPGenerateNormalizedUri(htp_tx_t *tx, htp_uri_t *uri, bool uri_include_all);
 
 #endif /* SURICATA_APP_LAYER_HTP_LIBHTP__H */
index 4c7426e2a18cef1d9f78727fbd1c87904c7a36d6..a015d15da1388f99a0a27569baf1ba3e4ec3718d 100644 (file)
@@ -1534,10 +1534,11 @@ static int HTPCallbackRequestBodyData(htp_tx_data_t *d)
 
 end:
     if (hstate->conn != NULL) {
-        SCLogDebug("checking body size %"PRIu64" against inspect limit %u (cur %"PRIu64", last %"PRIu64")",
-                tx_ud->request_body.content_len_so_far,
-                hstate->cfg->request.inspect_min_size,
-                (uint64_t)hstate->conn->in_data_counter, hstate->last_request_data_stamp);
+        SCLogDebug("checking body size %" PRIu64 " against inspect limit %u (cur %" PRIu64
+                   ", last %" PRIu64 ")",
+                tx_ud->request_body.content_len_so_far, hstate->cfg->request.inspect_min_size,
+                (uint64_t)htp_conn_request_data_counter(hstate->conn),
+                hstate->last_request_data_stamp);
 
         /* if we reach the inspect_min_size we'll trigger inspection,
          * so make sure that raw stream is also inspected. Set the
@@ -1545,11 +1546,14 @@ end:
          * get here. */
         if (tx_ud->request_body.body_inspected == 0 &&
             tx_ud->request_body.content_len_so_far >= hstate->cfg->request.inspect_min_size) {
-            if ((uint64_t)hstate->conn->in_data_counter > hstate->last_request_data_stamp &&
-                (uint64_t)hstate->conn->in_data_counter - hstate->last_request_data_stamp < (uint64_t)UINT_MAX)
-            {
-                const uint32_t data_size = (uint32_t)(
-                        (uint64_t)hstate->conn->in_data_counter - hstate->last_request_data_stamp);
+            if ((uint64_t)htp_conn_request_data_counter(hstate->conn) >
+                            hstate->last_request_data_stamp &&
+                    (uint64_t)htp_conn_request_data_counter(hstate->conn) -
+                                    hstate->last_request_data_stamp <
+                            (uint64_t)UINT_MAX) {
+                const uint32_t data_size =
+                        (uint32_t)((uint64_t)htp_conn_request_data_counter(hstate->conn) -
+                                   hstate->last_request_data_stamp);
                 const uint32_t depth = MIN(data_size, hstate->cfg->request.inspect_min_size);
 
                 /* body still in progress, but due to min inspect size we need to inspect now */
@@ -1625,21 +1629,25 @@ static int HTPCallbackResponseBodyData(htp_tx_data_t *d)
     }
 
     if (hstate->conn != NULL) {
-        SCLogDebug("checking body size %"PRIu64" against inspect limit %u (cur %"PRIu64", last %"PRIu64")",
-                tx_ud->response_body.content_len_so_far,
-                hstate->cfg->response.inspect_min_size,
-                (uint64_t)hstate->conn->in_data_counter, hstate->last_response_data_stamp);
+        SCLogDebug("checking body size %" PRIu64 " against inspect limit %u (cur %" PRIu64
+                   ", last %" PRIu64 ")",
+                tx_ud->response_body.content_len_so_far, hstate->cfg->response.inspect_min_size,
+                (uint64_t)htp_conn_request_data_counter(hstate->conn),
+                hstate->last_response_data_stamp);
         /* if we reach the inspect_min_size we'll trigger inspection,
          * so make sure that raw stream is also inspected. Set the
          * data to be used to the amount of raw bytes we've seen to
          * get here. */
         if (tx_ud->response_body.body_inspected == 0 &&
             tx_ud->response_body.content_len_so_far >= hstate->cfg->response.inspect_min_size) {
-            if ((uint64_t)hstate->conn->out_data_counter > hstate->last_response_data_stamp &&
-                (uint64_t)hstate->conn->out_data_counter - hstate->last_response_data_stamp < (uint64_t)UINT_MAX)
-            {
-                const uint32_t data_size = (uint32_t)((uint64_t)hstate->conn->out_data_counter -
-                                                      hstate->last_response_data_stamp);
+            if ((uint64_t)htp_conn_response_data_counter(hstate->conn) >
+                            hstate->last_response_data_stamp &&
+                    (uint64_t)htp_conn_response_data_counter(hstate->conn) -
+                                    hstate->last_response_data_stamp <
+                            (uint64_t)UINT_MAX) {
+                const uint32_t data_size =
+                        (uint32_t)((uint64_t)htp_conn_response_data_counter(hstate->conn) -
+                                   hstate->last_response_data_stamp);
                 const uint32_t depth = MIN(data_size, hstate->cfg->response.inspect_min_size);
 
                 /* body still in progress, but due to min inspect size we need to inspect now */
@@ -1727,7 +1735,7 @@ static int HTPCallbackRequestStart(htp_tx_t *tx)
 
     uint64_t consumed = hstate->slice->offset + htp_connp_req_data_consumed(hstate->connp);
     SCLogDebug("HTTP request start: data offset %" PRIu64 ", in_data_counter %" PRIu64, consumed,
-            (uint64_t)hstate->conn->in_data_counter);
+            (uint64_t)htp_conn_request_data_counter(hstate->conn));
 
     /* app-layer-frame-documentation tag start: frame registration http request */
     Frame *frame = AppLayerFrameNewByAbsoluteOffset(
@@ -1770,7 +1778,7 @@ static int HTPCallbackResponseStart(htp_tx_t *tx)
 
     uint64_t consumed = hstate->slice->offset + htp_connp_res_data_consumed(hstate->connp);
     SCLogDebug("HTTP response start: data offset %" PRIu64 ", out_data_counter %" PRIu64, consumed,
-            (uint64_t)hstate->conn->out_data_counter);
+            (uint64_t)htp_conn_response_data_counter(hstate->conn));
 
     Frame *frame = AppLayerFrameNewByAbsoluteOffset(
             hstate->f, hstate->slice, consumed, -1, 1, HTTP_FRAME_RESPONSE);