Fix overflow in pg_size_pretty
Joseph Koshakow <koshy44@gmail.com>
From: Joseph Koshakow <koshy44@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-07-27T19:18:00Z
Lists: pgsql-hackers
Attachments
- v1-0001-Fix-overflow-in-pg_size_pretty.patch (text/x-patch) patch v1-0001
Hi all, Attached is a patch that resolves an overflow in pg_size_pretty() that resulted in unexpected behavior when PG_INT64_MIN was passed in as an argument. The pg_abs_s64() helper function is extracted and simplified from patch 0001 from [0]. I didn't add similar functions for other sized integers since they'd be unused, but I'd be happy to add them if others disagree. `SELECT -9223372036854775808::bigint` results in an out of range error, even though `-9223372036854775808` can fit in a `bigint` and `SELECT pg_typeof(-9223372036854775808)` returns `bigint`. That's why the `::bigint` cast is omitted from my test. [0] https://www.postgresql.org/message-id/flat/CAAvxfHdBPOyEGS7s+xf4iaW0-cgiq25jpYdWBqQqvLtLe_t6tw@mail.gmail.com Thanks, Joseph Koshakow
Commits
-
Fix incorrect return value for pg_size_pretty(bigint)
- 0a80e88d902d 15.8 landed
- 6f6b0f193db4 16.4 landed
- 1e020258e53c 17.0 landed
- b181062aa572 18.0 landed