Browse Source

LibFileSystem: Fix leak in `read_path`

Cameron Youell 2 years ago
parent
commit
a8cd6c396b
1 changed files with 4 additions and 2 deletions
  1. 4 2
      Userland/Libraries/LibFileSystem/FileSystem.cpp

+ 4 - 2
Userland/Libraries/LibFileSystem/FileSystem.cpp

@@ -9,6 +9,7 @@
 #include <LibCore/DirIterator.h>
 #include <LibCore/System.h>
 #include <LibFileSystem/FileSystem.h>
+#include <limits.h>
 
 #ifdef AK_OS_SERENITY
 #    include <serenity.h>
@@ -46,13 +47,14 @@ ErrorOr<String> real_path(StringView path)
     if (path.is_null())
         return Error::from_errno(ENOENT);
 
+    char buffer[PATH_MAX];
     DeprecatedString dep_path = path;
-    auto* real_path = realpath(dep_path.characters(), nullptr);
+    auto* real_path = realpath(dep_path.characters(), buffer);
 
     if (!real_path)
         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)