http: restore behavior for event http.uri_delim_non_compliant

If we see a space-like character that is not space 0x20 in uri,
we set this event, even it the request line finished with a normal
space and protocol

Fixes: 9c324b796e ("http: Use libhtp-rs.)
pull/12968/head
Philippe Antoine 6 months ago committed by Victor Julien
parent fbed416e26
commit c203ff774d

@ -961,22 +961,24 @@ impl ConnectionParser {
*c == 0x20
});
if uri.len() == remaining.len() && uri.iter().any(|&c| is_space(c)) {
if uri.iter().any(|&c| is_space(c) && c != 0x20) {
// warn regardless if we've seen non-compliant chars
htp_warn!(
self.logger,
HtpLogCode::URI_DELIM_NON_COMPLIANT,
"Request line: URI contains non-compliant delimiter"
);
// if we've seen some 'bad' delimiters, we retry with those
let uri_protocol = split_on_predicate(
remaining,
self.cfg.decoder_cfg.allow_space_uri,
true,
|c| is_space(*c),
);
uri = uri_protocol.0;
protocol = uri_protocol.1;
if uri.len() == remaining.len() {
// if we've seen some 'bad' delimiters, we retry with those
let uri_protocol = split_on_predicate(
remaining,
self.cfg.decoder_cfg.allow_space_uri,
true,
|c| is_space(*c),
);
uri = uri_protocol.0;
protocol = uri_protocol.1;
}
}
let req = self.request_mut().unwrap();

Loading…
Cancel
Save