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 undefined behavior (UB).
2. Even if (1) is sound, &Vec<T> and &[T] still might not have the same layout. Treating them equally may lead to undefinted behavior (UB).
{
"github_reviewed": true,
"nvd_published_at": null,
"github_reviewed_at": "2022-12-30T17:48:30Z",
"severity": "MODERATE",
"cwe_ids": []
}