[
https://issues.apache.org/jira/browse/ARROW-6618?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wes McKinney resolved ARROW-6618.
---------------------------------
Resolution: Fixed
Issue resolved by pull request 5437
[https://github.com/apache/arrow/pull/5437]
> [Python] Reading a zero-size buffer can segfault
> ------------------------------------------------
>
> Key: ARROW-6618
> URL: https://issues.apache.org/jira/browse/ARROW-6618
> Project: Apache Arrow
> Issue Type: Bug
> Components: Python
> Reporter: Joris Van den Bossche
> Assignee: Antoine Pitrou
> Priority: Major
> Labels: pull-request-available
> Fix For: 0.15.0
>
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> Simplest reproducible code is:
> {code}
> pa.read_message(b'')
> {code}
> which gives a segfault.
> You can easily run into this interactively when eg by accident passing a
> already-read buffer to it, like:
> {code}
> serialized = pa.schema([('a', pa.int64())]).serialize().to_pybytes()
> buffer = pa.BufferReader(serialized)
> pa.read_message(buffer)
> pa.read_message(buffer)
> {code}
> And for example, if you compare to {{read_schema}}, this gives an error on
> the second time / empty buffer:
> {code}
> >>> pa.read_schema(buffer)
> >>> pa.read_schema(buffer)
> ...
> ArrowInvalid: Tried reading schema message, was null or length 0
> {code}
> I know this is not proper usage of Buffer(Reader), but since it is easy to
> accidentally do this, we should try to protect users from this I think.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)