LibFileSystem: Fix leak in read_path

This commit is contained in:
Cameron Youell 2023-03-23 00:11:48 +11:00 committed by Linus Groh
parent 26a4e4d23d
commit a8cd6c396b
Notes: sideshowbarker 2024-07-17 11:30:05 +09:00

View file

@ -9,6 +9,7 @@
#include <LibCore/DirIterator.h> #include <LibCore/DirIterator.h>
#include <LibCore/System.h> #include <LibCore/System.h>
#include <LibFileSystem/FileSystem.h> #include <LibFileSystem/FileSystem.h>
#include <limits.h>
#ifdef AK_OS_SERENITY #ifdef AK_OS_SERENITY
# include <serenity.h> # include <serenity.h>
@ -46,13 +47,14 @@ ErrorOr<String> real_path(StringView path)
if (path.is_null()) if (path.is_null())
return Error::from_errno(ENOENT); return Error::from_errno(ENOENT);
char buffer[PATH_MAX];
DeprecatedString dep_path = path; DeprecatedString dep_path = path;
auto* real_path = realpath(dep_path.characters(), nullptr); auto* real_path = realpath(dep_path.characters(), buffer);
if (!real_path) if (!real_path)
return Error::from_syscall("realpath"sv, -errno); return Error::from_syscall("realpath"sv, -errno);
return TRY(String::from_deprecated_string({ real_path })); return TRY(String::from_utf8({ real_path, strlen(real_path) }));
} }
bool exists(StringView path) bool exists(StringView path)