From 69218b92a51a0852736fc3b1253605fe2c020053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Fri, 8 Jul 2022 23:12:31 +0200 Subject: [PATCH] LibCore+Userland: Use StringViews when calling Core::System::open For some reason we used raw char pointers sometimes, which caused at least one heap buffer overflow detected in fuzzing. --- Userland/Libraries/LibCore/Stream.cpp | 2 +- Userland/Services/WindowServer/HardwareScreenBackend.cpp | 2 +- Userland/Utilities/disk_benchmark.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibCore/Stream.cpp b/Userland/Libraries/LibCore/Stream.cpp index d7bc40c38a..2b497a520d 100644 --- a/Userland/Libraries/LibCore/Stream.cpp +++ b/Userland/Libraries/LibCore/Stream.cpp @@ -185,7 +185,7 @@ ErrorOr File::open_path(StringView filename, mode_t permissions) VERIFY(m_fd == -1); auto flags = open_mode_to_options(m_mode); - m_fd = TRY(System::open(filename.characters_without_null_termination(), flags, permissions)); + m_fd = TRY(System::open(filename, flags, permissions)); return {}; } diff --git a/Userland/Services/WindowServer/HardwareScreenBackend.cpp b/Userland/Services/WindowServer/HardwareScreenBackend.cpp index 97ae8c65ff..42de9e0e97 100644 --- a/Userland/Services/WindowServer/HardwareScreenBackend.cpp +++ b/Userland/Services/WindowServer/HardwareScreenBackend.cpp @@ -24,7 +24,7 @@ HardwareScreenBackend::HardwareScreenBackend(String device) ErrorOr HardwareScreenBackend::open() { - m_framebuffer_fd = TRY(Core::System::open(m_device.characters(), O_RDWR | O_CLOEXEC)); + m_framebuffer_fd = TRY(Core::System::open(m_device, O_RDWR | O_CLOEXEC)); GraphicsConnectorProperties properties; if (graphics_connector_get_properties(m_framebuffer_fd, &properties) < 0) diff --git a/Userland/Utilities/disk_benchmark.cpp b/Userland/Utilities/disk_benchmark.cpp index eac041f9f3..e21888dee8 100644 --- a/Userland/Utilities/disk_benchmark.cpp +++ b/Userland/Utilities/disk_benchmark.cpp @@ -105,7 +105,7 @@ ErrorOr benchmark(String const& filename, int file_size, ByteBuffer& buf if (!allow_cache) flags |= O_DIRECT; - int fd = TRY(Core::System::open(filename.characters(), flags, 0644)); + int fd = TRY(Core::System::open(filename, flags, 0644)); auto fd_cleanup = ScopeGuard([fd, filename] { auto void_or_error = Core::System::close(fd);