Daniel Becker created IMPALA-8846:
-------------------------------------

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


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
(v7.6.14#76016)

Reply via email to