Skip to content

Commit ef23351

Browse files
committed
forbid adguard regex domain syntax
1 parent b77cb75 commit ef23351

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/filters/network.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ pub enum NetworkFilterError {
6969
CspWithContentType,
7070
#[error("match-case without full regex")]
7171
MatchCaseWithoutFullRegex,
72+
#[error("no supported domains")]
73+
NoSupportedDomains,
7274
}
7375

7476
bitflags::bitflags! {
@@ -387,7 +389,12 @@ fn parse_filter_options(raw_options: &str) -> Result<Vec<NetworkFilterOption>, N
387389
} else {
388390
(true, domain.to_string())
389391
}
390-
}).collect();
392+
})
393+
.filter(|(_, d)| !(d.starts_with('/') && d.ends_with('/')))
394+
.collect();
395+
if domains.is_empty() {
396+
return Err(NetworkFilterError::NoSupportedDomains);
397+
}
391398
NetworkFilterOption::Domain(domains)
392399
}
393400
("badfilter", true) => return Err(NetworkFilterError::NegatedBadFilter),
@@ -2287,6 +2294,10 @@ mod parse_tests {
22872294
assert_eq!(filter.opt_domains, Some(vec![utils::fast_hash("bar.com")]));
22882295
assert_eq!(filter.opt_not_domains, None);
22892296
}
2297+
{
2298+
let filter = NetworkFilter::parse(r"||video.twimg.com/ext_tw_video/*/*.m3u8$domain=/^i[a-z]*\.strmrdr[a-z]+\..*/", true, Default::default());
2299+
assert_eq!(filter.err(), Some(NetworkFilterError::NoSupportedDomains));
2300+
}
22902301
}
22912302

22922303
#[test]

0 commit comments

Comments
 (0)