]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Use the correct sizeof() in BufFileLoadBuffer
authorTomas Vondra <tomas.vondra@postgresql.org>
Fri, 24 Jan 2025 23:36:48 +0000 (00:36 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Sat, 25 Jan 2025 01:15:57 +0000 (02:15 +0100)
The sizeof() call should reference buffer.data, because that's the
buffer we're reading data into, not the whole PGAlignedBuffer union.
This was introduced by 44cac93464, which replaced the simple buffer
with a PGAlignedBuffer field.

It's benign, because the buffer is the largest field of the union, so
the sizes are the same. But it's easy to trip over this in a patch, so
fix and backpatch. Commit 44cac93464 went into 12, but that's EOL.

Backpatch-through: 13
Discussion: https://postgr.es/m/928bdab1-6567-449f-98c4-339cd2203b87@vondra.me

src/backend/storage/file/buffile.c

index 1b37062321a6bddbcb0d9570cb56d17f5acff883..46d32e180de2319947aac1d577d5a9680755dd3d 100644 (file)
@@ -430,7 +430,7 @@ BufFileLoadBuffer(BufFile *file)
        thisfile = file->files[file->curFile];
        file->nbytes = FileRead(thisfile,
                                                        file->buffer.data,
-                                                       sizeof(file->buffer),
+                                                       sizeof(file->buffer.data),
                                                        file->curOffset,
                                                        WAIT_EVENT_BUFFILE_READ);
        if (file->nbytes < 0)