-
Notifications
You must be signed in to change notification settings - Fork 4
Panic in Minifier::minify Due to Invalid RGB Value #15
Copy link
Copy link
Open
Description
Hello, while fuzz testing the current crate, I found that during the minification process, the original data is parsed. However, if there is an invalid RGB value, it directly causes the program to panic:
use css_minify::optimizations::{Minifier, Level};
fn main() {
let s = r#"
.class {
Color: rgb(255, 255, 999);
}
"#;
match Minifier::default().minify(s, Level::Three) {
Ok(_) => println!("OK"),
Err(e) => println!("Error: {}", e),
}
}This crash occurs at any optimization level other than Level::Zero, and the following error is raised:
thread 'main' panicked at /home/ubuntu/css-minify/css-minify/src/optimizations/color.rs:48:48:
called `Result::unwrap()` on an `Err` value: ParseIntError { kind: PosOverflow }
stack backtrace:
0: rust_begin_unwind
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/std/src/panicking.rs:665:5
1: core::panicking::panic_fmt
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/panicking.rs:74:14
2: core::result::unwrap_failed
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/result.rs:1695:5
3: core::result::Result<T,E>::unwrap
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/result.rs:1103:23
4: css_minify::optimizations::color::parse_rgb::{{closure}}
at /home/ubuntu/css-minify/css-minify/src/optimizations/color.rs:48:25
5: nom::combinator::map::{{closure}}
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/combinator/mod.rs:80:16
6: <F as nom::internal::Parser<I,O,E>>::parse
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/internal.rs:325:5
7: nom::sequence::preceded::{{closure}}
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/sequence/mod.rs:73:5
8: <F as nom::internal::Parser<I,O,E>>::parse
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/internal.rs:325:5
9: nom::sequence::terminated::{{closure}}
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/sequence/mod.rs:106:23
10: css_minify::optimizations::color::parse_rgb
at /home/ubuntu/css-minify/css-minify/src/optimizations/color.rs:34:5
11: core::ops::function::FnMut::call_mut
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/ops/function.rs:166:5
12: <F as nom::internal::Parser<I,O,E>>::parse
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/internal.rs:325:5
13: <(A,B) as nom::branch::Alt<Input,Output,Error>>::choice
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/branch/mod.rs:146:11
14: nom::branch::alt::{{closure}}
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/nom-7.1.3/src/branch/mod.rs:50:15
15: css_minify::optimizations::color::optimize_color
at /home/ubuntu/css-minify/css-minify/src/optimizations/color.rs:14:5
16: <css_minify::optimizations::Minifier as core::default::Default>::default::{{closure}}
at /home/ubuntu/css-minify/css-minify/src/optimizations/mod.rs:69:13
17: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/boxed.rs:2467:9
18: <css_minify::optimizations::transformer::Transformer as css_minify::optimizations::transformer::Transform>::transform_parameters::{{closure}}
at /home/ubuntu/css-minify/css-minify/src/optimizations/transformer.rs:31:69
19: core::iter::adapters::map::map_fold::{{closure}}
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/adapters/map.rs:88:28
20: core::iter::traits::iterator::Iterator::fold
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/traits/iterator.rs:2584:21
21: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/adapters/map.rs:128:9
22: core::iter::traits::iterator::Iterator::for_each
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/traits/iterator.rs:813:9
23: <indexmap::map::IndexMap<K,V,S> as core::iter::traits::collect::Extend<(K,V)>>::extend
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/indexmap-2.6.0/src/map.rs:1525:9
24: <indexmap::map::IndexMap<K,V,S> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter
at /home/ubuntu/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/indexmap-2.6.0/src/map.rs:1473:9
25: core::iter::traits::iterator::Iterator::collect
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/traits/iterator.rs:2001:9
26: <css_minify::optimizations::transformer::Transformer as css_minify::optimizations::transformer::Transform>::transform_parameters
at /home/ubuntu/css-minify/css-minify/src/optimizations/transformer.rs:24:9
27: css_minify::optimizations::transformer::Transform::transform
at /home/ubuntu/css-minify/css-minify/src/optimizations/transformer.rs:46:36
28: css_minify::optimizations::transformer::Transform::transform_many::{{closure}}
at /home/ubuntu/css-minify/css-minify/src/optimizations/transformer.rs:102:50
29: core::iter::adapters::map::map_try_fold::{{closure}}
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/adapters/map.rs:95:28
30: <alloc::vec::into_iter::IntoIter<T,A> as core::iter::traits::iterator::Iterator>::try_fold
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/vec/into_iter.rs:346:25
31: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/adapters/map.rs:121:9
32: <I as alloc::vec::in_place_collect::SpecInPlaceCollect<T,I>>::collect_in_place
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/vec/in_place_collect.rs:378:13
33: alloc::vec::in_place_collect::from_iter_in_place
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/vec/in_place_collect.rs:269:9
34: alloc::vec::in_place_collect::<impl alloc::vec::spec_from_iter::SpecFromIter<T,I> for alloc::vec::Vec<T>>::from_iter
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/vec/in_place_collect.rs:245:9
35: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/alloc/src/vec/mod.rs:3355:9
36: core::iter::traits::iterator::Iterator::collect
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/iter/traits/iterator.rs:2001:9
37: css_minify::optimizations::transformer::Transform::transform_many
at /home/ubuntu/css-minify/css-minify/src/optimizations/transformer.rs:102:21
38: css_minify::optimizations::Minifier::minify::{{closure}}
at /home/ubuntu/css-minify/css-minify/src/optimizations/mod.rs:57:31
39: core::result::Result<T,E>::map
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/result.rs:772:25
40: css_minify::optimizations::Minifier::minify
at /home/ubuntu/css-minify/css-minify/src/optimizations/mod.rs:56:22
41: css_minify_fuzz_target_test::main
at ./src/main.rs:11:11
42: core::ops::function::FnOnce::call_once
at /rustc/ed04567ba1d5956d1080fb8121caa005ce059e12/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.Version: commit 77f1aa59df3c163621ee6373095672f00a1b63cf
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels