cpp: Fix for undefined behavior in mcap::ParseByteArray(..) #1239
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.
Changelog
Fix for possible undefined behavior in the cpp mcap reader.
Docs
None
Description
mcap::ParseByteArray(..)
when was runningRosbag2
tests withUBSAN
(Undefined Behavior Sanitizer). In particular tests from the https://github.com/ros2/rosbag2/blob/rolling/rosbag2_cpp/test/rosbag2_cpp/test_local_message_definition_source.cppUBSAN was pointing ou to the
std::memcpy(output->data(), data + 4, size);
After a comprehensive analysis, we found that we have a null pointer in dest, and the count is zero in std::memcpy(..) when the message definition was not found and was recorded with empty strings.
Undefined behavior when reading empty message definitions
No undefined behavior when reading empty message definitions