Potential us of initialized memory in xlogrecovery.c
Tristan Partin <tristan@neon.tech>
From: "Tristan Partin" <tristan@neon.tech>
To: <pgsql-hackers@postgresql.org>
Date: 2023-06-06T14:24:56Z
Lists: pgsql-hackers
Attachments
- v1-0001-Initialize-potentially-uninitialized-memory-in-xl.patch (text/x-patch) patch v1-0001
Hello,
Today, I compiled the master branch of Postgres with the following GCC
version:
gcc (GCC) 13.1.1 20230511 (Red Hat 13.1.1-2)
I got the following warning:
[701/2058] Compiling C object src/backend/postgres_lib.a.p/access_transam_xlogrecovery.c.o
In function ‘recoveryStopsAfter’,
inlined from ‘PerformWalRecovery’ at ../src/backend/access/transam/xlogrecovery.c:1749:8:
../src/backend/access/transam/xlogrecovery.c:2756:42: warning: ‘recordXtime’ may be used uninitialized [-Wmaybe-uninitialized]
2756 | recoveryStopTime = recordXtime;
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
../src/backend/access/transam/xlogrecovery.c: In function ‘PerformWalRecovery’:
../src/backend/access/transam/xlogrecovery.c:2647:21: note: ‘recordXtime’ was declared here
2647 | TimestampTz recordXtime;
| ^~~~~~~~~~~
Investigating this issue I see a potential assignment in
xlogrecovery.c:2715. Best I can tell the warning looks real. Similar
functions in this file seem to initialize recordXtime to 0. Attached is
a patch which does just that.
--
Tristan Partin
Neon (https://neon.tech)
Commits
-
Initialize 'recordXtime' to silence compiler warning.
- 5b0e76dce641 11.21 landed
- 7c35768cde24 12.16 landed
- 8b8cd437b500 13.12 landed
- 525ec837e108 14.9 landed
- 2a7fb520755f 15.4 landed
- 95f0340c3bc7 16.0 landed
-
Refactor checking whether we've reached the recovery target.
- c945af80cfda 9.4.0 cited