From: Giuseppe Longo Date: Tue, 1 Aug 2023 18:50:17 +0000 (+0200) Subject: sip/parser: accept valid chars X-Git-Tag: suricata-7.0.9~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aabaa959133a3b6a40636a140d2d49722addf174;p=thirdparty%2Fsuricata.git sip/parser: accept valid chars Accepts valid characters as defined in RFC3261. cherry-picked from commit 7e993d5081c35d62eada429bad43430417267e5a --- diff --git a/rust/src/sip/parser.rs b/rust/src/sip/parser.rs index a34bc2615e..c7d616a498 100644 --- a/rust/src/sip/parser.rs +++ b/rust/src/sip/parser.rs @@ -15,7 +15,7 @@ * 02110-1301, USA. */ -// written by Giuseppe Longo +// written by Giuseppe Longo use nom7::bytes::streaming::{take, take_while, take_while1}; use nom7::character::streaming::{char, crlf}; @@ -57,9 +57,13 @@ pub struct Response { pub body_len: u16, } +/** + * Valid tokens and chars are defined in RFC3261: + * https://www.rfc-editor.org/rfc/rfc3261#section-25.1 + */ #[inline] fn is_token_char(b: u8) -> bool { - is_alphanumeric(b) || b"!%'*+-._`".contains(&b) + is_alphanumeric(b) || b"!%'*+-._`~".contains(&b) } #[inline] @@ -69,7 +73,7 @@ fn is_method_char(b: u8) -> bool { #[inline] fn is_request_uri_char(b: u8) -> bool { - is_alphanumeric(b) || is_token_char(b) || b"~#@:".contains(&b) + is_alphanumeric(b) || is_token_char(b) || b"~#@:;=?+&$,/".contains(&b) } #[inline]