Limit recursion and output size (#48)

* Limit recursion and output size

This commit adds some rudimentary fuzzing for this crate and fixes the
fuzz bugs that it immediately encountered, namely very large recurison
and huge amounts of output. A recursion depth is added to the v0 printer
as well as a limited output printing. For now these values are not
configurable, but we could perhaps in the future add configuration if
necessary.

Closes #47

* Tweak CI config
7 files changed
tree: 1571fb6ac550578c4a79ca624885b41772fa075b
  1. .github/
  2. crates/
  3. fuzz/
  4. src/
  5. .gitignore
  6. Cargo.toml
  7. LICENSE-APACHE
  8. LICENSE-MIT
  9. README.md
README.md

rustc-demangle

Demangling for Rust symbols, written in Rust.

Documentation

Usage

You can add this as a dependency via your Cargo.toml

[dependencies]
rustc-demangle = "0.1"

and then be sure to check out the crate documentation for usage.

Usage from non-Rust languages

You can also use this crate from other languages via the C API wrapper in the crates/capi directory. This can be build with:

$ cargo build -p rustc-demangle-capi --release

You'll then find target/release/librustc_demangle.a and target/release/librustc_demangle.so (or a different name depending on your platform). These objects implement the interface specified in crates/capi/include/rustc_demangle.h.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in rustc-demangle you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.