Fix MarkBufferDirtyHint() to not call GetBufferDescriptor() for local buffers
Michael Paquier <michael@paquier.xyz>
Fix MarkBufferDirtyHint() to not call GetBufferDescriptor() for local buffers GetBufferDescriptor() was called before checking if the buffer is local. Such buffers have a negative ID, meaning that we could call GetBufferDescriptor() with a wrapped-around uint32 value causing a potential out-of-bound access to the BufferDescriptors array. This is harmless in the existing code for the current uses of MarkBufferDirtyHint(), but the author has found a way to make that buggy while working on a different patch set, and the order of the operations is wrong. Oversight in 82467f627bd4. No backpatch is required, as this is new to v19. Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> Discussion: https://postgr.es/m/CAExHW5uzRMYVZsXXS3HXXT0fG_sNrpUhUqwP4NorhaCqH9JDhA@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/storage/buffer/bufmgr.c | modified | +2 −2 |
Discussion
- GetBufferDescriptor() being called for local buffers from MarkBufferDirtyHint() 16 messages · 2026-06-06 → 2026-07-03