Skip to content

Commit 88b6bc4

Browse files
author
Artur Zakirov
committed
Fix possible subtraction overflow
1 parent 284ecc4 commit 88b6bc4

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

rumdatapage.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
724724
Datum addInfo = 0;
725725
bool addInfoIsNull = false;
726726
int maxoff = RumPageGetOpaque(page)->maxoff;
727+
int freespace;
727728

728729
/*
729730
* We're going to prevent var-byte re-encoding of whole page.
@@ -760,7 +761,8 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
760761
&btree->items[j], btree->addInfo[j], btree->addInfoIsNull[j],
761762
&iptr, btree->rumstate, ptr - page);
762763

763-
if (RumDataPageFreeSpacePre(page, ptr2) < 0)
764+
freespace = RumDataPageFreeSpacePre(page, ptr2);
765+
if (freespace < 0)
764766
break;
765767

766768
ptr = rumPlaceToDataPageLeaf(ptr, btree->entryAttnum,
@@ -790,7 +792,8 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
790792

791793
RumPageGetOpaque(page)->maxoff += i;
792794

793-
if (RumDataPageFreeSpacePre(page,ptr) < 0)
795+
freespace = RumDataPageFreeSpacePre(page,ptr);
796+
if (freespace < 0)
794797
elog(ERROR, "Not enough of space in leaf page!");
795798

796799
/* Update indexes in the end of page */

0 commit comments

Comments
 (0)