facebook / winterfell

A STARK prover and verifier for arbitrary computations
MIT License
773 stars 176 forks source link

fix: incorrect read_slice impl for ReadAdapter #309

Closed bitwalker closed 3 weeks ago

bitwalker commented 3 weeks ago

This commit fixes a bug that is present in the implementation of ByteReader::read_slice for ReadAdapter. Specifically, it does not consume any input, so calling read_slice and then attempting to read the next value in the input, will read the same bytes again. The documented behavior of this function is that any of the read_* methods consume the corresponding amount of input.

To catch this, and to prevent future regressions, a new test was added that serializes some data to a file using one approach, and deserializes it using the ReadAdapter. This ensures that we don't accidentally make choices in the writer that aren't matched by the reader, and vice versa.

Closes #308

bitwalker commented 3 weeks ago

@irakliyk This fixes #308, and also addresses the issue in Miden when deserializing Library or Program from files.

bitwalker commented 3 weeks ago

@irakliyk Done!