mz-avro's incorrect use of `set_len` allows for un-initialized memory
Moderate severity
GitHub Reviewed
Published
Aug 30, 2022
to the GitHub Advisory Database
•
Updated Jan 12, 2023
Description
Published to the GitHub Advisory Database
Aug 30, 2022
Reviewed
Aug 30, 2022
Last updated
Jan 12, 2023
Affected versions of this crate passes an uninitialized buffer to a user-provided
Read
implementation.
Arbitrary
Read
implementations can read from the uninitialized buffer (memory exposure)and also can return incorrect number of bytes written to the buffer.
Reading from uninitialized memory produces undefined values that can quickly invoke
undefined behavior.
Note: there is only UB in the case where a user provides a struct whose
Read
implementation inspects the buffer passed to
read_exact
before writing to it.This is an unidiomatic (albeit possible)
Read
implementation.See https://github.com/MaterializeInc/materialize/issues/8669 for details.
References