Re: Protect against possible memory corruption (src/backend/access/nbtree/nbtxlog.c) - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: Protect against possible memory corruption (src/backend/access/nbtree/nbtxlog.c)
Date
Msg-id CAEudQAo3tGXP0Vm2X0q+rvuTOiAD3ntSNjPXzmef=b6k_ifvLA@mail.gmail.com
Whole thread Raw
In response to Re: Protect against possible memory corruption (src/backend/access/nbtree/nbtxlog.c)  (Heikki Linnakangas <hlinnaka@iki.fi>)
List pgsql-hackers
Em seg., 12 de jul. de 2021 às 05:20, Heikki Linnakangas <hlinnaka@iki.fi> escreveu:
On 12/07/2021 02:34, Ranier Vilela wrote:
> If it is not possible, know the upper limits, before the loop.
> It is necessary to do this inside the loop.

> @@ -49,10 +47,14 @@ _bt_restore_page(Page page, char *from, int len)
>        * To get the items back in the original order, we add them to the page in
>        * reverse.  To figure out where one tuple ends and another begins, we
>        * have to scan them in forward order first.
> +      * Check the array upper limit to not overtake him.
>        */
>       i = 0;
> -     while (from < end)
> +     while (from < end && i <= MaxIndexTuplesPerPage)
>       {
> +             IndexTupleData itupdata;
> +             Size            itemsz;
> +
>               /*
>                * As we step through the items, 'from' won't always be properly
>                * aligned, so we need to use memcpy().  Further, we use Item (which

If we bother checking it, we should throw an error if the check fails,
not just silently soldier on. Also, shouldn't it be '<', not '<='?
Should be '<', you are right.

In
general though, we don't do much checking on WAL records, we assume that
the contents are sane. It would be nice to add more checks and make WAL
redo routines more robust to corrupt records, but this seems like an odd
place to start.
If WAL records can't be corrupted at _bt_restore_page, that's ok, it's safe.


I committed the removal of bogus assignment to 'from'. Thanks!
Thanks for the commit.

regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: vignesh C
Date:
Subject: Re: proposal - psql - use pager for \watch command
Next
From: Magnus Hagander
Date:
Subject: Re: PROXY protocol support