diff --git a/crates/prettytable-rs/RUSTSEC-0000-0000.md b/crates/prettytable-rs/RUSTSEC-0000-0000.md new file mode 100644 index 0000000..c9f36cd --- /dev/null +++ b/crates/prettytable-rs/RUSTSEC-0000-0000.md @@ -0,0 +1,18 @@ +```toml +[advisory] +id = "RUSTSEC-0000-0000" +package = "prettytable-rs" +date = "2022-12-02" +url = "https://github.com/phsym/prettytable-rs/issues/145" +informational = "unsound" +keywords = ["tab", "table", "format", "pretty", "print"] + +[versions] +patched = [">= 0.10.0"] +``` + +# Force cast a &Vec to &[T] + +In function `Table::as_ref`, a reference of vector is force cast to slice. There are multiple problems here: +1. To guarantee the size is correct, we have to first do `Vec::shrink_to_fit`. The function requires a mutable reference, so we have to force cast from immutable to mutable, which is UB. +2. Even if (1) is sound, `&Vec` and `&[T]` still might not have the same layout. Treating them equally may lead to UB.