1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
0.4
---
- Removed the HOOK_* constants. Use the equivalent HTP_* constants instead.
- Added the "htp_" prefix to all hook functions.
- Renamed hooks.h to htp_hooks.h and hooks.c to htp_hooks.c.
- Added the "htp_" prefix to all table structures and functions.
- list_array_replace returns HTP_ERROR (-1) instead of 0 when the index does not exist.
- Removed list iterators. Use this instead:
for (int i = 0, n = htp_list_size(l); i < n; i++) {
bstr *b = htp_list_get(l, i);
// Do something with b here
}
- Removed table iterators. Use this instead:
bstr *key = NULL;
bstr *value = NULL;
for (int i = 0, n = htp_table_size(t); i < n; i++) {
value = htp_table_get_index(l, i, &key);
// Do something with key and value here
}
- Removed htp_connp_create_copycfg(), along with the ability of connection parsers to
have private configurations.
- htp_conn_remove_tx() now returns HTP_ERROR on error (was 0).
- Renamed STREAM_STATE_* constants to HTP_STREAM_*
- Personality HTP_SERVER_APACHE_2_2 renamed to HTP_SERVER_APACHE_2. Personality HTP_SERVER_APACHE removed.
- Request parameters are now stored in a single structure called request_params. Previously, there
were 2 structures, one for query string parameters (GET) and another for body parameters (e.g., POST).
Further, before LibHTP stored parameter names and values in these structures. Now there is htp_param_t,
which stores additional useful information (e.g., allows parameters to be tracked back to the parsers)parsers.
- Improve the table code to support 3 key management strategies. Strategy is determined when the first add
function is invoked, with consistency checks to ensure that approach is always used.
- A number of *_destroy functions and bstr_free() used to take a pointer to a pointer. Now all such
functions are taking pointers to the structures that need to be destroyed.
- Renamed HTP_FIELD_NUL_BYTE flag to HTP_FIELD_RAW_NUL.
- Renamed HTP_PATH_FULLWIDTH_EVASION to HTP_PATH_HALF_FULL_RANGE.
- Removed htp_tx_t::request_line_raw, htp_tx_t::response_line_raw.
- Removed htp_tx_t::request_header_lines, htp_tx_t::response_header_lines.
- Removed htp_tx_get_request_headers_raw() and htp_tx_get_response_headers_raw().
- Changed REQUEST_LINE callback signature from int (*callback_fn)(htp_connp_t *)
to int (*callback_fn)(htp_connp_t *, unsigned char *, size_t). The additional parameters are
used to expose the entire request line (incl. line terminators) to the callback.
- Refactor how normalization options are configured. LibHTP now supports multiple normalization
contexts, with 2 used at this time: HTP_DECODER_URL_PATH and HTP_DECODER_URLENCODED.
- New hooks to receive raw request header and trailer data: REQUEST_HEADER_DATA and REQUEST_TRAILER_DATA.
- New hooks to receive raw response header and trailer data: RESPONSE_HEADER_DATA and RESPONSE_TRAILER_DATA.
- Removed field htp_tx_t::request_uri_normalized.
- Removed fields htp_tx_t::request_line_nul and htp_tx_t::request_line_nul_offset.
- Renamed htp_tx_t::parsed_uri_incomplete to htp_tx_t::parsed_uri_raw.
- Added request_hostname and request_port_number to htp_tx_t. These fields will hold the information
on what's the correct hostname/port, per RFC. Before, this information was in parsed_uri, but parsed_uri
now stores only what was actually supplied in the URI.
|