]> git.ipfire.org Git - thirdparty/suricata.git/commit
http: Use libhtp-rs.
authorTodd Mortimer <richard.mortimer@cyber.gc.ca>
Mon, 26 Jun 2023 20:01:50 +0000 (20:01 +0000)
committerVictor Julien <victor@inliniac.net>
Fri, 4 Apr 2025 00:35:12 +0000 (02:35 +0200)
commit9c324b796e6b4b8ec222dd1ce8649a9d616f3581
treeb796c10b232ee41885f4f225c550dacac26a31bc
parent9409a5a49aecb2f12d645b5a34523536d225099e
http: Use libhtp-rs.

Ticket: #2696

There are a lot of changes here, which are described below.

In general these changes are renaming constants to conform to the
libhtp-rs versions (which are generated by cbindgen); making all htp
types opaque and changing struct->member references to
htp_struct_member() function calls; and a handful of changes to offload
functionality onto libhtp-rs from suricata, such as URI normalization
and transaction cleanup.

Functions introduced to handle opaque htp_tx_t:
- tx->parsed_uri => htp_tx_parsed_uri(tx)
- tx->parsed_uri->path => htp_uri_path(htp_tx_parsed_uri(tx)
- tx->parsed_uri->hostname => htp_uri_hostname(htp_tx_parsed_uri(tx))
- htp_tx_get_user_data() => htp_tx_user_data(tx)
- htp_tx_is_http_2_upgrade(tx) convenience function introduced to detect response status 101
  and “Upgrade: h2c" header.

Functions introduced to handle opaque htp_tx_data_t:
- d->len => htp_tx_data_len()
- d->data => htp_tx_data_data()
- htp_tx_data_tx(data) function to get the htp_tx_t from the htp_tx_data_t
- htp_tx_data_is_empty(data) convenience function introduced to test if the data is empty.

Other changes:

Build libhtp-rs as a crate inside rust. Update autoconf to no longer
use libhtp as an external dependency. Remove HAVE_HTP feature defines
since they are no longer needed.

Make function arguments and return values const where possible

htp_tx_destroy(tx) will now free an incomplete transaction

htp_time_t replaced with standard struct timeval

Callbacks from libhtp now provide the htp_connp_t and the htp_tx_data_t
as separate arguments. This means the connection parser is no longer
fetched from the transaction inside callbacks.

SCHTPGenerateNormalizedUri() functionality moved inside libhtp-rs, which
now provides normalized URI values.
The normalized URI is available with accessor function: htp_tx_normalized_uri()
Configuration settings added to control the behaviour of the URI normalization:
- htp_config_set_normalized_uri_include_all()
- htp_config_set_plusspace_decode()
- htp_config_set_convert_lowercase()
- htp_config_set_double_decode_normalized_query()
- htp_config_set_double_decode_normalized_path()
- htp_config_set_backslash_convert_slashes()
- htp_config_set_bestfit_replacement_byte()
- htp_config_set_convert_lowercase()
- htp_config_set_nul_encoded_terminates()
- htp_config_set_nul_raw_terminates()
- htp_config_set_path_separators_compress()
- htp_config_set_path_separators_decode()
- htp_config_set_u_encoding_decode()
- htp_config_set_url_encoding_invalid_handling()
- htp_config_set_utf8_convert_bestfit()
- htp_config_set_normalized_uri_include_all()
- htp_config_set_plusspace_decode()
Constants related to configuring uri normalization:
- HTP_URL_DECODE_PRESERVE_PERCENT => HTP_URL_ENCODING_HANDLING_PRESERVE_PERCENT
- HTP_URL_DECODE_REMOVE_PERCENT => HTP_URL_ENCODING_HANDLING_REMOVE_PERCENT
- HTP_URL_DECODE_PROCESS_INVALID => HTP_URL_ENCODING_HANDLING_PROCESS_INVALID

htp_config_set_field_limits(soft_limit, hard_limit) changed to
htp_config_set_field_limit(limit) because libhtp didn't implement soft
limits.

libhtp logging API updated to provide HTP_LOG_CODE constants along with
the message. This eliminates the need to perform string matching on
message text to map log messages to HTTP_DECODER_EVENT values, and the
HTP_LOG_CODE values can be used directly. In support of this,
HTP_DECODER_EVENT values are mapped to their corresponding HTP_LOG_CODE
values.

New log events to describe additional anomalies:
HTP_LOG_CODE_REQUEST_TOO_MANY_LZMA_LAYERS
HTP_LOG_CODE_RESPONSE_TOO_MANY_LZMA_LAYERS
HTP_LOG_CODE_PROTOCOL_CONTAINS_EXTRA_DATA
HTP_LOG_CODE_CONTENT_LENGTH_EXTRA_DATA_START
HTP_LOG_CODE_CONTENT_LENGTH_EXTRA_DATA_END
HTP_LOG_CODE_SWITCHING_PROTO_WITH_CONTENT_LENGTH
HTP_LOG_CODE_DEFORMED_EOL
HTP_LOG_CODE_PARSER_STATE_ERROR
HTP_LOG_CODE_MISSING_OUTBOUND_TRANSACTION_DATA
HTP_LOG_CODE_MISSING_INBOUND_TRANSACTION_DATA
HTP_LOG_CODE_ZERO_LENGTH_DATA_CHUNKS
HTP_LOG_CODE_REQUEST_LINE_UNKNOWN_METHOD
HTP_LOG_CODE_REQUEST_LINE_UNKNOWN_METHOD_NO_PROTOCOL
HTP_LOG_CODE_REQUEST_LINE_UNKNOWN_METHOD_INVALID_PROTOCOL
HTP_LOG_CODE_REQUEST_LINE_NO_PROTOCOL
HTP_LOG_CODE_RESPONSE_LINE_INVALID_PROTOCOL
HTP_LOG_CODE_RESPONSE_LINE_INVALID_RESPONSE_STATUS
HTP_LOG_CODE_RESPONSE_BODY_INTERNAL_ERROR
HTP_LOG_CODE_REQUEST_BODY_DATA_CALLBACK_ERROR
HTP_LOG_CODE_RESPONSE_INVALID_EMPTY_NAME
HTP_LOG_CODE_REQUEST_INVALID_EMPTY_NAME
HTP_LOG_CODE_RESPONSE_INVALID_LWS_AFTER_NAME
HTP_LOG_CODE_RESPONSE_HEADER_NAME_NOT_TOKEN
HTP_LOG_CODE_REQUEST_INVALID_LWS_AFTER_NAME
HTP_LOG_CODE_LZMA_DECOMPRESSION_DISABLED
HTP_LOG_CODE_CONNECTION_ALREADY_OPEN
HTP_LOG_CODE_COMPRESSION_BOMB_DOUBLE_LZMA
HTP_LOG_CODE_INVALID_CONTENT_ENCODING
HTP_LOG_CODE_INVALID_GAP
HTP_LOG_CODE_ERROR

The new htp_log API supports consuming log messages more easily than
walking a list and tracking the current offset. Internally, libhtp-rs
now provides log messages as a queue of htp_log_t, which means the
application can simply call htp_conn_next_log() to fetch the next log
message until the queue is empty. Once the application is done with a
log message, they can call htp_log_free() to dispose of it.

Functions supporting htp_log_t:
htp_conn_next_log(conn) - Get the next log message
htp_log_message(log) - To get the text of the message
htp_log_code(log) - To get the HTP_LOG_CODE value
htp_log_free(log) - To free the htp_log_t
258 files changed:
.github/PULL_REQUEST_TEMPLATE.md
.github/workflows/builds.yml
.github/workflows/codeql.yml
.github/workflows/commits.yml
.github/workflows/docs.yml
.github/workflows/formatting.yml
.github/workflows/prepare-deps.yml
.github/workflows/rust-checks.yml
.github/workflows/rust.yml
.github/workflows/scan-build.yml
.gitignore
Makefile.am
configure.ac
doc/userguide/devguide/codebase/installation-from-git.rst
doc/userguide/devguide/codebase/testing.rst
doc/userguide/lua/lua-functions.rst
doc/userguide/upgrade.rst
doxygen.cfg
examples/lib/custom/Makefile.am
examples/lib/simple/Makefile.am
libsuricata-config.in
requirements.txt
rules/http-events.rules
rust/Cargo.lock.in
rust/Cargo.toml.in
rust/Makefile.am
rust/htp/.gitignore [new file with mode: 0644]
rust/htp/Cargo.toml [new file with mode: 0644]
rust/htp/LICENSE [new file with mode: 0644]
rust/htp/README.md [new file with mode: 0644]
rust/htp/cbindgen.toml [new file with mode: 0644]
rust/htp/fuzz/Cargo.toml [new file with mode: 0644]
rust/htp/fuzz/fuzz_targets/fuzz_htp.rs [new file with mode: 0644]
rust/htp/src/bstr.rs [new file with mode: 0644]
rust/htp/src/c_api/bstr.rs [new file with mode: 0644]
rust/htp/src/c_api/config.rs [new file with mode: 0644]
rust/htp/src/c_api/connection.rs [new file with mode: 0644]
rust/htp/src/c_api/connection_parser.rs [new file with mode: 0644]
rust/htp/src/c_api/header.rs [new file with mode: 0644]
rust/htp/src/c_api/log.rs [new file with mode: 0644]
rust/htp/src/c_api/mod.rs [new file with mode: 0644]
rust/htp/src/c_api/transaction.rs [new file with mode: 0644]
rust/htp/src/c_api/uri.rs [new file with mode: 0644]
rust/htp/src/config.rs [new file with mode: 0644]
rust/htp/src/connection.rs [new file with mode: 0644]
rust/htp/src/connection_parser.rs [new file with mode: 0644]
rust/htp/src/decompressors.rs [new file with mode: 0644]
rust/htp/src/error.rs [new file with mode: 0644]
rust/htp/src/headers.rs [new file with mode: 0644]
rust/htp/src/hook.rs [new file with mode: 0644]
rust/htp/src/lib.rs [new file with mode: 0644]
rust/htp/src/log.rs [new file with mode: 0644]
rust/htp/src/parsers.rs [new file with mode: 0644]
rust/htp/src/request.rs [new file with mode: 0644]
rust/htp/src/request_generic.rs [new file with mode: 0644]
rust/htp/src/response.rs [new file with mode: 0644]
rust/htp/src/response_generic.rs [new file with mode: 0644]
rust/htp/src/table.rs [new file with mode: 0644]
rust/htp/src/test/common.rs [new file with mode: 0644]
rust/htp/src/test/files/00-adhoc.t [new file with mode: 0644]
rust/htp/src/test/files/01-get.t [new file with mode: 0644]
rust/htp/src/test/files/02-header-test-apache2.t [new file with mode: 0644]
rust/htp/src/test/files/03-post-urlencoded.t [new file with mode: 0644]
rust/htp/src/test/files/04-post-urlencoded-chunked.t [new file with mode: 0644]
rust/htp/src/test/files/05-expect.t [new file with mode: 0644]
rust/htp/src/test/files/06-uri-normal.t [new file with mode: 0644]
rust/htp/src/test/files/07-pipelined-connection.t [new file with mode: 0644]
rust/htp/src/test/files/08-not-pipelined-connection.t [new file with mode: 0644]
rust/htp/src/test/files/09-multi-packet-request-head.t [new file with mode: 0644]
rust/htp/src/test/files/10-host-in-headers.t [new file with mode: 0644]
rust/htp/src/test/files/100-auth-digest-escaped-quote.t [new file with mode: 0644]
rust/htp/src/test/files/101-request-cookies-2.t [new file with mode: 0644]
rust/htp/src/test/files/102-request-cookies-3.t [new file with mode: 0644]
rust/htp/src/test/files/103-request-cookies-4.t [new file with mode: 0644]
rust/htp/src/test/files/104-request-cookies-5.t [new file with mode: 0644]
rust/htp/src/test/files/105-expect-100.t [new file with mode: 0644]
rust/htp/src/test/files/106-tunnelled-1.t [new file with mode: 0644]
rust/htp/src/test/files/107-response_unknown_status.t [new file with mode: 0644]
rust/htp/src/test/files/108-response-headers-cr-only.t [new file with mode: 0644]
rust/htp/src/test/files/109-response-headers-deformed-eol.t [new file with mode: 0644]
rust/htp/src/test/files/11-response-stream-closure.t [new file with mode: 0644]
rust/htp/src/test/files/110-response-folded-headers-2.t [new file with mode: 0644]
rust/htp/src/test/files/111-response-headers-chunked.t [new file with mode: 0644]
rust/htp/src/test/files/112-response-headers-chunked-2.t [new file with mode: 0644]
rust/htp/src/test/files/113-response-multipart-byte-ranges.t [new file with mode: 0644]
rust/htp/src/test/files/114-http-2-upgrade.t [new file with mode: 0644]
rust/htp/src/test/files/115-auth-bearer.t [new file with mode: 0644]
rust/htp/src/test/files/116-request-compression.t [new file with mode: 0644]
rust/htp/src/test/files/117-request-response-compression.t [new file with mode: 0644]
rust/htp/src/test/files/118-post.t [new file with mode: 0644]
rust/htp/src/test/files/119-ambiguous-eol.t [new file with mode: 0644]
rust/htp/src/test/files/12-connect-request.t [new file with mode: 0644]
rust/htp/src/test/files/120-request-gap.t [new file with mode: 0644]
rust/htp/src/test/files/121-response-gap.t [new file with mode: 0644]
rust/htp/src/test/files/122-response-body-data.t [new file with mode: 0644]
rust/htp/src/test/files/123-response-header-bug.t [new file with mode: 0644]
rust/htp/src/test/files/124-response-incomplete.t [new file with mode: 0644]
rust/htp/src/test/files/13-compressed-response-gzip-ct.t [new file with mode: 0644]
rust/htp/src/test/files/14-compressed-response-gzip-chunked.t [new file with mode: 0644]
rust/htp/src/test/files/15-connect-complete.t [new file with mode: 0644]
rust/htp/src/test/files/16-connect-extra.t [new file with mode: 0644]
rust/htp/src/test/files/17-multipart-1.t [new file with mode: 0644]
rust/htp/src/test/files/18-compressed-response-deflate.t [new file with mode: 0644]
rust/htp/src/test/files/19-urlencoded-test.t [new file with mode: 0644]
rust/htp/src/test/files/20-ambiguous-host.t [new file with mode: 0644]
rust/htp/src/test/files/21-http09.t [new file with mode: 0644]
rust/htp/src/test/files/22-http_1_1-host_missing [new file with mode: 0644]
rust/htp/src/test/files/22-php-param-processing.t [new file with mode: 0644]
rust/htp/src/test/files/23-http09-multiple.t [new file with mode: 0644]
rust/htp/src/test/files/24-http09-explicit.t [new file with mode: 0644]
rust/htp/src/test/files/25-small-chunks.t [new file with mode: 0644]
rust/htp/src/test/files/26-request-headers-raw.t [new file with mode: 0644]
rust/htp/src/test/files/27-request-trailer-raw.t [new file with mode: 0644]
rust/htp/src/test/files/28-response-headers-raw.t [new file with mode: 0644]
rust/htp/src/test/files/29-response-trailer-raw.t [new file with mode: 0644]
rust/htp/src/test/files/30-get-ipv6.t [new file with mode: 0644]
rust/htp/src/test/files/31-get-request-line-nul.t [new file with mode: 0644]
rust/htp/src/test/files/32-invalid-hostname.t [new file with mode: 0644]
rust/htp/src/test/files/33-invalid-hostname.t [new file with mode: 0644]
rust/htp/src/test/files/34-invalid-hostname.t [new file with mode: 0644]
rust/htp/src/test/files/35-early-response.t [new file with mode: 0644]
rust/htp/src/test/files/36-invalid-request-1-invalid-c-l.t [new file with mode: 0644]
rust/htp/src/test/files/37-invalid-request-2-t-e-and-c-l.t [new file with mode: 0644]
rust/htp/src/test/files/38-invalid-request-3-invalid-t-e.t [new file with mode: 0644]
rust/htp/src/test/files/39-auto-destroy-crash.t [new file with mode: 0644]
rust/htp/src/test/files/40-auth-basic.t [new file with mode: 0644]
rust/htp/src/test/files/41-auth-digest.t [new file with mode: 0644]
rust/htp/src/test/files/42-unknown-method_only.t [new file with mode: 0644]
rust/htp/src/test/files/43-invalid-protocol.t [new file with mode: 0644]
rust/htp/src/test/files/44-auth-basic-invalid.t [new file with mode: 0644]
rust/htp/src/test/files/45-auth-digest-unquoted-username.t [new file with mode: 0644]
rust/htp/src/test/files/46-auth-digest-invalid-username.t [new file with mode: 0644]
rust/htp/src/test/files/47-auth-unrecognized.t [new file with mode: 0644]
rust/htp/src/test/files/48-invalid-response-headers-1.t [new file with mode: 0644]
rust/htp/src/test/files/49-invalid-response-headers-2.t [new file with mode: 0644]
rust/htp/src/test/files/51-get-ipv6-invalid.t [new file with mode: 0644]
rust/htp/src/test/files/52-invalid-path.t [new file with mode: 0644]
rust/htp/src/test/files/53-path-utf8-none.t [new file with mode: 0644]
rust/htp/src/test/files/54-path-utf8-valid.t [new file with mode: 0644]
rust/htp/src/test/files/55-path-utf8-overlong-2.t [new file with mode: 0644]
rust/htp/src/test/files/56-path-utf8-overlong-3.t [new file with mode: 0644]
rust/htp/src/test/files/57-path-utf8-overlong-4.t [new file with mode: 0644]
rust/htp/src/test/files/58-path-utf8-invalid.t [new file with mode: 0644]
rust/htp/src/test/files/59-path-utf8-fullwidth.t [new file with mode: 0644]
rust/htp/src/test/files/60-request-cookies-1.t [new file with mode: 0644]
rust/htp/src/test/files/61-empty-line-between-requests.t [new file with mode: 0644]
rust/htp/src/test/files/62-post-no-body.t [new file with mode: 0644]
rust/htp/src/test/files/63-post-chunked-invalid-1.t [new file with mode: 0644]
rust/htp/src/test/files/64-post-chunked-invalid-2.t [new file with mode: 0644]
rust/htp/src/test/files/65-post-chunked-invalid-3.t [new file with mode: 0644]
rust/htp/src/test/files/66-post-chunked-split-chunk.t [new file with mode: 0644]
rust/htp/src/test/files/67-long-request-line.t [new file with mode: 0644]
rust/htp/src/test/files/68-invalid-request-header.t [new file with mode: 0644]
rust/htp/src/test/files/69-long-response-header.t [new file with mode: 0644]
rust/htp/src/test/files/70-response-invalid-chunk-length.t [new file with mode: 0644]
rust/htp/src/test/files/71-response-split-chunk.t [new file with mode: 0644]
rust/htp/src/test/files/72-response-split-body.t [new file with mode: 0644]
rust/htp/src/test/files/73-response-te-and-cl.t [new file with mode: 0644]
rust/htp/src/test/files/74-response-multiple-cl.t [new file with mode: 0644]
rust/htp/src/test/files/75-response-invalid-cl.t [new file with mode: 0644]
rust/htp/src/test/files/76-response-no-body.t [new file with mode: 0644]
rust/htp/src/test/files/77-response-folded-headers.t [new file with mode: 0644]
rust/htp/src/test/files/78-response-no-status-headers.t [new file with mode: 0644]
rust/htp/src/test/files/79-connect-invalid-hostport.t [new file with mode: 0644]
rust/htp/src/test/files/80-hostname-invalid-1.t [new file with mode: 0644]
rust/htp/src/test/files/81-hostname-invalid-2.t [new file with mode: 0644]
rust/htp/src/test/files/82-put.t [new file with mode: 0644]
rust/htp/src/test/files/83-auth-digest-invalid-username-2.t [new file with mode: 0644]
rust/htp/src/test/files/84-response-no-status-headers-2.t [new file with mode: 0644]
rust/htp/src/test/files/85-zero-byte-request-timeout.t [new file with mode: 0644]
rust/htp/src/test/files/86-partial-request-timeout.t [new file with mode: 0644]
rust/htp/src/test/files/87-issue-55-incorrect-host-ambiguous-warning.t [new file with mode: 0644]
rust/htp/src/test/files/88-response-multiple-cl-mismatch.t [new file with mode: 0644]
rust/htp/src/test/files/89-get-whitespace.t [new file with mode: 0644]
rust/htp/src/test/files/90-request-uri-too-large.t [new file with mode: 0644]
rust/htp/src/test/files/91-request-unexpected-body.t [new file with mode: 0644]
rust/htp/src/test/files/92-http_0_9-method_only.t [new file with mode: 0644]
rust/htp/src/test/files/93-compressed-response-deflateasgzip.t [new file with mode: 0644]
rust/htp/src/test/files/94-compressed-response-multiple.t [new file with mode: 0644]
rust/htp/src/test/files/95-compressed-response-gzipasdeflate.t [new file with mode: 0644]
rust/htp/src/test/files/96-compressed-response-lzma.t [new file with mode: 0644]
rust/htp/src/test/files/97-requests-cut.t [new file with mode: 0644]
rust/htp/src/test/files/98-responses-cut.t [new file with mode: 0644]
rust/htp/src/test/files/99-get.t [new file with mode: 0644]
rust/htp/src/test/files/anchor.empty [new file with mode: 0644]
rust/htp/src/test/files/generate-gzip-tests.php [new file with mode: 0755]
rust/htp/src/test/files/gztest-01-minimal.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-02-fname.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-03-fcomment.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-04-fhcrc.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-05-fextra.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-06-ftext.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-07-freserved1.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-08-freserved2.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-09-freserved3.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-10-multipart.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-11-invalid-method.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-12-invalid-crc32.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-13-invalid-isize.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-14-invalid-xfl.gz [new file with mode: 0644]
rust/htp/src/test/files/gztest-15-invalid-fhcrc.gz [new file with mode: 0644]
rust/htp/src/test/files/http-close-headers.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-017.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-018.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-044.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-059.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-060.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-061.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-078.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-118.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-130.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-195.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-274.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-284.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-286.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-287.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-297.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-300.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-303.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-307.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-318.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-320.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-321.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-390.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-402.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-405.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-411.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-416.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-419.t [new file with mode: 0644]
rust/htp/src/test/files/http-evader-423.t [new file with mode: 0644]
rust/htp/src/test/files/http-start-from-response.t [new file with mode: 0644]
rust/htp/src/test/gunzip.rs [new file with mode: 0644]
rust/htp/src/test/hybrid.rs [new file with mode: 0644]
rust/htp/src/test/main.rs [new file with mode: 0644]
rust/htp/src/test/mod.rs [new file with mode: 0644]
rust/htp/src/transaction.rs [new file with mode: 0644]
rust/htp/src/transactions.rs [new file with mode: 0644]
rust/htp/src/unicode_bestfit_map.rs [new file with mode: 0644]
rust/htp/src/uri.rs [new file with mode: 0644]
rust/htp/src/urlencoded.rs [new file with mode: 0644]
rust/htp/src/utf8_decoder.rs [new file with mode: 0644]
rust/htp/src/util.rs [new file with mode: 0644]
rust/src/lib.rs
scripts/bundle.sh
scripts/check-setup.sh
scripts/clang-format.sh
src/Makefile.am
src/app-layer-htp-libhtp.c [deleted file]
src/app-layer-htp-libhtp.h [deleted file]
src/app-layer-htp.c
src/app-layer-htp.h
src/detect-http-headers-stub.h
src/detect-http-host.c
src/detect-http-protocol.c
src/detect-http-uri.c
src/output-json-http.c
src/suricata.c
src/util-lua-http.c