]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Cap wal_buffers to avoid a server crash when it's set very large.
authorRobert Haas <rhaas@postgresql.org>
Tue, 4 Aug 2015 16:58:54 +0000 (12:58 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 4 Aug 2015 17:06:03 +0000 (13:06 -0400)
It must be possible to multiply wal_buffers by XLOG_BLCKSZ without
overflowing int, or calculations in StartupXLOG will go badly wrong
and crash the server.  Avoid that by imposing a maximum value on
wal_buffers.  This will be just under 2GB, assuming the usual value
for XLOG_BLCKSZ.

Josh Berkus, per an analysis by Andrew Gierth.

src/backend/utils/misc/guc.c

index a3e86223db702c56808ca67e24426c288534d9d7..00a635fff2810ce848b940d46338707380881c6c 100644 (file)
@@ -1964,7 +1964,7 @@ static struct config_int ConfigureNamesInt[] =
                        GUC_UNIT_XBLOCKS
                },
                &XLOGbuffers,
-               -1, -1, INT_MAX,
+               -1, -1, (INT_MAX / XLOG_BLCKSZ),
                check_wal_buffers, NULL, NULL
        },