add vector length check for read_file_ functions. #1606
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.
Fixes #1590
@tinarozsos and I have worked on this.
read_file()andread_file_raw()both cause a segmentation fault (crashing R) when reading an empty raw vector. This issue does not arise when using other types of empty vector because those are caught and errored by other aspects of the function before reaching the relevant code. Nor does the behaviour arise when using a non-empty raw vector (e.g.raw(1)). There are potentially two issues here: 1) the code reaches a point where it attempts to access unowned memory; 2) the C code doesn't catch that the memory is unowned and still tries to access it. We address the first issue.Because all the affected functions use
datasource()to dispatch to the relevant function, we add a simple check for a vector size greater than 0, also providing an informative error message. We also add a couple of tests for this behaviour.We hope this is helpful :).