diff --git a/components/net/mime_classifier.rs b/components/net/mime_classifier.rs index f9161c4f8a6..d00a3251ec8 100644 --- a/components/net/mime_classifier.rs +++ b/components/net/mime_classifier.rs @@ -299,7 +299,7 @@ impl ByteMatcher { .and_then(|start| if data[start..].iter() .zip(self.pattern.iter()).zip(self.mask.iter()) - .all(|((&data, &pattern), &mask)| (data & mask) == (pattern & mask)) { + .all(|((&data, &pattern), &mask)| (data & mask) == pattern) { Some(start + self.pattern.len()) } else { None @@ -328,6 +328,14 @@ impl MIMEChecker for ByteMatcher { self.content_type.0, self.content_type.1 )) } + if self.pattern.iter().zip(self.mask.iter()).any( + |(&pattern, &mask)| pattern & mask != pattern + ) { + return Err(format!( + "Pattern not pre-masked for {}/{}", + self.content_type.0, self.content_type.1 + )) + } Ok(()) } }