]> git.ipfire.org Git - thirdparty/coreutils.git/commit
pwd: fix heap buffer overflow in file_name_prepend master
authorChris Down <chris@chrisdown.name>
Mon, 16 Feb 2026 05:06:31 +0000 (13:06 +0800)
committerPádraig Brady <P@draigBrady.com>
Mon, 16 Feb 2026 10:45:45 +0000 (10:45 +0000)
commit41e5ae80b16369143f6da0b0f6d3e7bb33256391
treec58104c5f644a0cf0476e0e51b462096565946ae
parentf529c331232e514e652b9990a88c27810f56113a
pwd: fix heap buffer overflow in file_name_prepend

file_name_prepend works by right-aligning path data in a growing buffer.
When the buffer is too small, it then allocates a new buffer via
xpalloc() and copies existing data to the end of the new buffer.

Unfortunately, the memcpy destination is computed as buf + p->n_alloc -
n_free, but xpalloc has already updated p->n_alloc to the new (larger)
allocation size while n_free still reflects the old state. This places
the data at too high an offset, writing past the end of the buffer.

Update to properly calculate the destination offset.

Fixes: v9.5-171-g61ab25c35 ("pwd: prefer xpalloc to xnrealloc")
src/pwd.c