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)