]> granicus.if.org Git - postgresql/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 16:58:54 +0000 (12:58 -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 1b7b914624ebd18b0fe1ab03800cb4d48aca7d73..b3dac51b77999432f51f48c547f5fb3599f955b6 100644 (file)
@@ -2215,7 +2215,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
        },