Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
Description
In Validator, there seems to be some inconsistency with std::vector<size_t> counters_ and int64_t count_:
- Validator::countingSetup converts int64_t to size_t: counters_.push_back(static_cast<size_t>(count_));
- Validator::countingAdvance converts size_t to int: int count = --counters_.back();
- Validator::unionAdvance converts size_t to int64_t: if (count_ < static_cast<int64_t>(node->leaves()))
- Validator::unionAdvance converts int64_t to int and that to size_t: setupOperation(node->leafAt(static_cast<int>(count_)));
I did not verify whether these integers can actually grow so high that overflow is possible. Nevertheless, it would be safest to use integer types consistently.
(Originally posted as https://github.com/apache/avro/pull/1836#issuecomment-1225303643.)
Attachments
Issue Links
- Is contained by
-
AVRO-4019 [C++] Correct signedness of validator methods
- Resolved
- links to