Re: invalid alloc size error possible in shm_mq

Peter Eisentraut <peter.eisentraut@2ndquadrant.com>

From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: Markus Wanner <markus.wanner@2ndquadrant.com>, pgsql-bugs@postgresql.org, Robert Haas <robertmhaas@gmail.com>
Date: 2020-08-25T10:00:06Z
Lists: pgsql-bugs
On 2020-07-07 12:30, Markus Wanner wrote:
> in shm_mq_receive of shm_mq.c, a huge payload may trigger an unjustified
> "invalid memory alloc request size" error due to the way the buffer size
> is increased.
> 
> I understand that this fine piece of infrastructure may not have been
> designed for huge payloads.  I still argue it should better not fail
> that way for payloads between half a gigabyte and MaxAllocSize.  The
> attached patch adds an appropriate assertion (documenting the upper
> limit) and avoids the error by limiting the allocation size to
> MaxAllocSize (to correct for such huge payloads below the limit).

I wonder if the assertion is appropriate or whether it should be a full 
error check.  Is anything on the sending side ensuring that the maximum 
size is kept?  All the size variables are Size/size_t so could be much 
larger than MaxAllocSize.

Robert, thoughts?

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Commits

  1. Avoid invalid alloc size error in shm_mq