Joris Van den Bossche created ARROW-6618:
--------------------------------------------

             Summary: [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


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)

Reply via email to