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

Daniel Becker resolved IMPALA-8846.
-----------------------------------
    Resolution: Fixed

> Undefined behaviour in RleEncoder::Put
> --------------------------------------
>
>                 Key: IMPALA-8846
>                 URL: https://issues.apache.org/jira/browse/IMPALA-8846
>             Project: IMPALA
>          Issue Type: Bug
>            Reporter: Daniel Becker
>            Assignee: Daniel Becker
>            Priority: Major
>         Attachments: original.txt, with_check.txt
>
>
> On line 
> [https://github.com/apache/impala/blob/4000da35be69e469500f5f11e0e5fdec119cf5c7/be/src/util/rle-encoding.h#L346,]
>  we test repeat_count_ <= std::numeric_limits<int32_t>::max(), which is 
> always true (repeat_count_ is an int), then we increment repeat_count which 
> could be std::numeric_limits<int32_t>::max() and overflow, which is undefined 
> behaviour for signed integers.
>  
> We should either change <= to < or if we think that this never happens, 
> remove the misleading check.
> If we correct the check, it may lead to some (probably small) performance 
> regression because the compiler could have optimised this out.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to