[ 
https://issues.apache.org/jira/browse/ARROW-7624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paddy Horan resolved ARROW-7624.
--------------------------------
    Fix Version/s: 1.0.0
       Resolution: Fixed

Issue resolved by pull request 6397
[https://github.com/apache/arrow/pull/6397]

> [Rust] Soundness issues via `Buffer` methods
> --------------------------------------------
>
>                 Key: ARROW-7624
>                 URL: https://issues.apache.org/jira/browse/ARROW-7624
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Rust
>    Affects Versions: 0.15.1
>            Reporter: Jim Turner
>            Assignee: Paddy Horan
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.0.0
>
>          Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> This is my first time creating an issue, so please let me know if I need to 
> do anything differently.
> There are a few soundness issues with the methods currently available on 
> {{Buffer}}.
>  # Using a combination of {{from_raw_parts}} and {{data}}/{{as_ref}}, e.g. 
> {{Buffer::from_raw_parts(ptr, len).data()}}, it's possible to dereference 
> arbitrary memory locations, break pointer aliasing rules, etc. To fix this, 
> `from_raw_parts` needs to be `unsafe`, and the safety requirements on `ptr` 
> and `len` should be specified. (For an example of a similar method in the 
> standard library, see 
> [{{std::slice::from_raw_parts}}|https://doc.rust-lang.org/std/slice/fn.from_raw_parts.html].)
>  # By implementing the {{ArrowNativeType}} trait on a struct, it's possible 
> for a user to create invalid values of that struct using the {{typed_data}} 
> method. To fix this, the {{ArrowNativeType}} trait needs to be {{unsafe}}, or 
> users need to be prevented from implementing {{ArrowNativeType}} on arbitrary 
> types. Alternatively, the {{typed_data}} method could be made unsafe.
>  # It's possible to create invalid values of the {{bool}} type using 
> {{typed_data}}. ([Values of {{bool}} must be {{0x00}} or 
> {{0x01}}|https://doc.rust-lang.org/nomicon/what-unsafe-does.html]; arbitrary 
> {{u8}} cannot safely be reinterpreted as {{bool}}.) To fix this, 
> {{typed_data::<bool>()}} needs to iterate over all the data and check that 
> all the elements are valid, or {{typed_data}} needs to be marked {{unsafe}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to