Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Panic with malformed template {#} #22

Closed
5225225 opened this issue Jul 14, 2021 · 0 comments · Fixed by #31
Closed

Panic with malformed template {#} #22

5225225 opened this issue Jul 14, 2021 · 0 comments · Fixed by #31

Comments

@5225225
Copy link
Contributor

5225225 commented Jul 14, 2021

Reproduction:

fn main() {
    let data = "{#}";

    let mut tpl = tinytemplate::TinyTemplate::new();

    let _ = tpl.add_template("template", data);
}

Gives

thread 'main' panicked at 'begin <= end (2 <= 1) when slicing `{#}`', /home/jess/.cargo/registry/src/github.heygears.com-1ecc6299db9ec823/tinytemplate-1.2.1/src/compiler.rs:59:31
stack backtrace:
   0: rust_begin_unwind
             at /rustc/952fdf2a1119affa1b37bcacb0c49cf9f0168ac8/library/std/src/panicking.rs:515:5
   1: core::panicking::panic_fmt
             at /rustc/952fdf2a1119affa1b37bcacb0c49cf9f0168ac8/library/core/src/panicking.rs:92:14
   2: core::str::slice_error_fail
   3: core::str::traits::<impl core::slice::index::SliceIndex<str> for core::ops::range::Range<usize>>::index
             at /rustc/952fdf2a1119affa1b37bcacb0c49cf9f0168ac8/library/core/src/str/traits.rs:214:21
   4: core::str::traits::<impl core::ops::index::Index<I> for str>::index
             at /rustc/952fdf2a1119affa1b37bcacb0c49cf9f0168ac8/library/core/src/str/traits.rs:64:9
   5: tinytemplate::compiler::TemplateCompiler::compile
             at /home/jess/.cargo/registry/src/github.heygears.com-1ecc6299db9ec823/tinytemplate-1.2.1/src/compiler.rs:59:31
   6: tinytemplate::template::Template::compile
             at /home/jess/.cargo/registry/src/github.heygears.com-1ecc6299db9ec823/tinytemplate-1.2.1/src/template.rs:124:27
   7: tinytemplate::TinyTemplate::add_template
             at /home/jess/.cargo/registry/src/github.heygears.com-1ecc6299db9ec823/tinytemplate-1.2.1/src/lib.rs:189:24
   8: scratchPpQmmMhHJ::main
             at ./main.rs:6:13
   9: core::ops::function::FnOnce::call_once
             at /rustc/952fdf2a1119affa1b37bcacb0c49cf9f0168ac8/library/core/src/ops/function.rs:227:5

I'll make a PR to add the fuzzing harness I used to find this, so you can run it yourself with cargo-fuzz.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant