From 569a0357863593813f5ad341261d3f52c3166b71 Mon Sep 17 00:00:00 2001 From: Maciej Date: Wed, 14 Dec 2022 15:37:20 +0100 Subject: [PATCH] LaunchServer: Return if read_link fails in for_each_handler_for_path Previously we were just printing error and then doing release_value(), causing crash when opening links that cannot be read (e.g in /proc). --- Userland/Services/LaunchServer/Launcher.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Userland/Services/LaunchServer/Launcher.cpp b/Userland/Services/LaunchServer/Launcher.cpp index b587532098..e59c271186 100644 --- a/Userland/Services/LaunchServer/Launcher.cpp +++ b/Userland/Services/LaunchServer/Launcher.cpp @@ -309,8 +309,10 @@ void Launcher::for_each_handler_for_path(DeprecatedString const& path, Function< if (S_ISLNK(st.st_mode)) { auto link_target_or_error = Core::File::read_link(path); - if (link_target_or_error.is_error()) + if (link_target_or_error.is_error()) { perror("read_link"); + return; + } auto link_target = LexicalPath { link_target_or_error.release_value() }; LexicalPath absolute_link_target = link_target.is_absolute() ? link_target : LexicalPath::join(LexicalPath::dirname(path), link_target.string());