The Deserialize implementation for VecStorage did not maintain the invariant that the number of elements must equal nrows * ncols. Deserialization of specially crafted inputs could allow memory access beyond allocation of the vector.
This flaw was introduced in v0.11.0 (<code>086e6e</code>) due to the addition of an automatically derived implementation of Deserialize for MatrixVec. MatrixVec was later renamed to VecStorage in v0.16.13 (<code>0f66403</code>) and continued to use the automatically derived implementation of Deserialize.
This flaw was corrected in commit <code>5bff536</code> by returning an error during deserialization if the number of elements does not exactly match the expected size.
{
"license": "CC0-1.0"
}