Fix binary_span_reader_writer.h (off-by-one error) #3230
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Found what I believe to be an off-by-one error while debugging a PINE api user.
When stack trace is:
BinarySpanReader::Read(void* buf, unsigned __int64 size)
(the function I believe that contains the error)
BinarySpanReader::ReadT()
BinarySpanReader::ReadU32()
<-- called by switch case no. MsgRead64: "const PhysicalMemoryAddress addr = rdbuf.ReadU32();"
PINESocket::HandleCommand(PINEServer::IPCCommand command, BinarySpanReader rdbuf)
PINESocket::ProcessCommandsInBuffer()
...
and m_pos == 0 && size == 4 && m_buf.size() == 4 (large enough to contain a u32)
the comparison fails, even though I think it should succeed and pull out a u32, followed by moving m_pos forward 4 bytes.
Feel free to contact me if you require further details.
Also, If I'm wrong or making an incorrect assumption, please let me know!