From 05aff918587881189bbeccf722e1e61ed2d4f0fa Mon Sep 17 00:00:00 2001 From: Riyyi Date: Sun, 2 Feb 2025 17:51:47 +0100 Subject: [PATCH] Manager: Fix crash when reading ENV variable as root --- src/machine.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/machine.cpp b/src/machine.cpp index e9d4c70..09c6bad 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -72,17 +72,23 @@ void Machine::fetchSession() int8_t likelyWayland = 0; // Detect via environment variable - std::string env; - env = std::string(std::getenv("XDG_SESSION_TYPE")); - if (env == "wayland") { - likelyWayland++; - } - else if (env == "x11") { - likelyWayland--; + const char* env; + env = std::getenv("XDG_SESSION_TYPE"); + if (env != nullptr) { + auto session = std::string(env); + if (session == "wayland") { + likelyWayland++; + } + else if (session == "x11") { + likelyWayland--; + } } - env = std::string(std::getenv("WAYLAND_DISPLAY")); - if (env.find("wayland-", 0) == 0) { - likelyWayland++; + env = std::getenv("WAYLAND_DISPLAY"); + if (env != nullptr) { + auto display = std::string(env); + if (display.find("wayland-", 0) == 0) { + likelyWayland++; + } } // Detect via Wayland socket @@ -117,12 +123,12 @@ void Machine::fetchSession() std::string command; std::getline(stream, command); - if (command == "Xwayland" || command == "hyprland" || command == "sway") { + if (command == "Xwayland" || command == "sway" || command == "hyprland") { likelyWayland++; break; } - if (command == "Xorg" || command == "xinit" || command == "bspwm") { + if (command == "Xorg" || command == "xinit" || command == "i3" || command == "bspwm") { likelyWayland--; break; }