Files
Antoine Pitrou f2a446b247 GH-50971: [C++][Parquet] Fix usage of disparate length types for metadata reading (#50972)
### Rationale for this change

The usage of disparate integer types (`int64_t`, `uint32_t`) makes our checks and computations fragile, especially with C++ adding its own integer promotion rules across arithmetic operations.

We have had at least one report (courtesy of Ada Logics and Claude) where a carefully crafted Parquet file can read from an invalid pointer due to arithmetic overflow in the 32-bit domain.

### What changes are included in this PR?

Use `int64_t` throughout most internal APIs and code paths when reading Parquet metadata. Other types such as `uint32_t` should only be used where necessary when interacting with third-party libraries such as Thrift C++.

### Are these changes tested?

By existing tests, and manually using said hand-crafted Parquet file.

### Are there any user-facing changes?

Some APIs taking a `uint32_t*` inout-parameter are deprecated, alternatives taking a `int64_t` value are available.

* GitHub Issue: #50971

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-08-25 09:33:05 +02:00
..