]> granicus.if.org Git - postgresql/commitdiff
pgstatindex: Insert some casts to prevent overflow.
authorRobert Haas <rhaas@postgresql.org>
Thu, 10 Aug 2017 15:48:42 +0000 (11:48 -0400)
committerRobert Haas <rhaas@postgresql.org>
Thu, 10 Aug 2017 15:48:42 +0000 (11:48 -0400)
This could cause hash indexes to report greater than 100% free space.

Ashutosh Sharma, reviewed by Amit Kapila

Discussion: http://postgr.es/m/CAE9k0PnCKfg-ZK1CwGZJPF1yKcG2A=GUgC3BMdNMzLAXVOo4Eg@mail.gmail.com

contrib/pgstattuple/pgstatindex.c

index 44e322d1f9a3d3a55549ac12809f33880f146318..9365ba7e02cf73389d290aaa5324c3d038c984d2 100644 (file)
@@ -687,13 +687,14 @@ pgstathashindex(PG_FUNCTION_ARGS)
        index_close(rel, AccessShareLock);
 
        /* Count unused pages as free space. */
-       stats.free_space += stats.unused_pages * stats.space_per_page;
+       stats.free_space += (uint64) stats.unused_pages * stats.space_per_page;
 
        /*
         * Total space available for tuples excludes the metapage and the bitmap
         * pages.
         */
-       total_space = (nblocks - (stats.bitmap_pages + 1)) * stats.space_per_page;
+       total_space = (uint64) (nblocks - (stats.bitmap_pages + 1)) *
+               stats.space_per_page;
 
        if (total_space == 0)
                free_percent = 0.0;