Re: Unsafe access BufferDescriptors array in BufferGetLSNAtomic()

Поиск
Список
Период
Сортировка
От Tender Wang
Тема Re: Unsafe access BufferDescriptors array in BufferGetLSNAtomic()
Дата
Msg-id CAHewXNmZQOvHqMgpSYtTmiQ99nBMfx+56VO=-Hc=G3J=e4tEcg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Unsafe access BufferDescriptors array in BufferGetLSNAtomic()  (Xuneng Zhou <xunengzhou@gmail.com>)
Список pgsql-hackers


Xuneng Zhou <xunengzhou@gmail.com> 于2025年1月8日周三 13:35写道:
Hi Tender,

I’ve looked through the patch, and I believe there is a potential issue. The default size for BufferDescriptors appears to be 16,384. Passing and casting a negative buffer ID to a large unsigned integer in GetBufferDescriptor, and then using it as an array subscript, could potentially lead to an overflow.

void
BufferManagerShmemInit(void)
{
        bool            foundBufs,
                                foundDescs,
                                foundIOCV,
                                foundBufCkpt;

        /* Align descriptors to a cacheline boundary. */
        BufferDescriptors = (BufferDescPadded *)
                ShmemInitStruct("Buffer Descriptors",
                                                NBuffers * sizeof(BufferDescPadded),
                                                &foundDescs);

int                     NBuffers = 16384;

The changes proposed in the patch seem reasonable to me, but it might be helpful to include an explanation of the error case and how it’s handled.

Thanks for reviewing. 
The  BufferGetLSNAtomic() with this patch looks not complex. I think no need more explanation here.


Best regards,
[Xuneng]

The new status of this patch is: Waiting on Author

I change the status to Ready for commiter
--
Thanks,
Tender Wang

В списке pgsql-hackers по дате отправления: