bspeice/dtparse

Panic on unwrap of Err value

Closed this issue · 2 comments

Found using honggfuzz.

The following input produces the panic: \x2D\x38\x31\x39\x34\x38\x34

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: InvalidMonth', libcore/result.rs:945:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:463
   5: std::panicking::begin_panic_fmt
             at libstd/panicking.rs:350
   6: rust_begin_unwind
             at libstd/panicking.rs:328
   7: core::panicking::panic_fmt
             at libcore/panicking.rs:71
   8: core::result::unwrap_failed
             at /checkout/src/libcore/macros.rs:26
   9: <core::result::Result<T, E>>::unwrap
             at /checkout/src/libcore/result.rs:782
  10: dtparse::Parser::build_naive
             at /home/user/.cargo/git/checkouts/dtparse-4231ce982140a2f6/065eba8/src/lib.rs:1043
  11: dtparse::Parser::parse
             at /home/user/.cargo/git/checkouts/dtparse-4231ce982140a2f6/065eba8/src/lib.rs:811
  12: dtparse::parse
             at /home/user/.cargo/git/checkouts/dtparse-4231ce982140a2f6/065eba8/src/lib.rs:1352
  13: dtparse_parse::main::{{closure}}
             at /home/user/daniel/targets/common/src/lib.rs:300
             at fuzzer-honggfuzz/src/bin/dtparse_parse.rs:8
  14: honggfuzz::fuzz
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/honggfuzz-0.5.20/src/lib.rs:301
  15: dtparse_parse::main
             at fuzzer-honggfuzz/src/bin/dtparse_parse.rs:7
  16: std::rt::lang_start::{{closure}}
             at /checkout/src/libstd/rt.rs:74
  17: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  18: __rust_maybe_catch_panic
             at libpanic_unwind/lib.rs:105
  19: std::rt::lang_start_internal
             at libstd/panicking.rs:289
             at libstd/panic.rs:374
             at libstd/rt.rs:58
  20: std::rt::lang_start
             at /checkout/src/libstd/rt.rs:74
  21: main
  22: __libc_start_main
  23: _start

Thanks much for this, it's been corrected. I'm working on a couple other minor fixes, and should be able to release soon.

@bspeice Awesome, thanks! I found another so I'll open another issue.