]> 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 17:12:03 +0000 (13:12 -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 203f2026633ff8176d2392e4e7e041f18306ebf4..597ac8885e01d778ec293f598c44d70789675d0c 100644 (file)
@@ -1722,7 +1722,7 @@ static struct config_int ConfigureNamesInt[] =
                        GUC_UNIT_XBLOCKS
                },
                &XLOGbuffers,
-               8, 4, INT_MAX, NULL, NULL
+               8, 4, (INT_MAX / XLOG_BLCKSZ), NULL, NULL
        },
 
        {