waldump: fix use-after-free in search_directory().

After closedir() dirent->d_name is not valid anymore. As there alerady are a
few places relying on the limited lifetime of pg_waldump, do so here as well,
and just pg_strdup() the string.

The bug was introduced in fc49e24fa6.

Found by UBSan, run locally.

Backpatch: 11-, like fc49e24fa6 itself.
This commit is contained in:
Andres Freund 2022-03-23 16:38:43 -07:00
parent cc7401d5ca
commit 264d284929
1 changed files with 1 additions and 1 deletions

View File

@ -204,7 +204,7 @@ search_directory(const char *directory, const char *fname)
if (IsXLogFileName(xlde->d_name))
{
fd = open_file_in_directory(directory, xlde->d_name);
fname = xlde->d_name;
fname = pg_strdup(xlde->d_name);
break;
}
}