Manager: Fix crash when reading ENV variable as root

This commit is contained in:
Riyyi
2025-02-02 17:51:47 +01:00
parent e0ecd63dfd
commit 05aff91858
+18 -12
View File
@@ -72,17 +72,23 @@ void Machine::fetchSession()
int8_t likelyWayland = 0; int8_t likelyWayland = 0;
// Detect via environment variable // Detect via environment variable
std::string env; const char* env;
env = std::string(std::getenv("XDG_SESSION_TYPE")); env = std::getenv("XDG_SESSION_TYPE");
if (env == "wayland") { if (env != nullptr) {
likelyWayland++; auto session = std::string(env);
if (session == "wayland") {
likelyWayland++;
}
else if (session == "x11") {
likelyWayland--;
}
} }
else if (env == "x11") { env = std::getenv("WAYLAND_DISPLAY");
likelyWayland--; if (env != nullptr) {
} auto display = std::string(env);
env = std::string(std::getenv("WAYLAND_DISPLAY")); if (display.find("wayland-", 0) == 0) {
if (env.find("wayland-", 0) == 0) { likelyWayland++;
likelyWayland++; }
} }
// Detect via Wayland socket // Detect via Wayland socket
@@ -117,12 +123,12 @@ void Machine::fetchSession()
std::string command; std::string command;
std::getline(stream, command); std::getline(stream, command);
if (command == "Xwayland" || command == "hyprland" || command == "sway") { if (command == "Xwayland" || command == "sway" || command == "hyprland") {
likelyWayland++; likelyWayland++;
break; break;
} }
if (command == "Xorg" || command == "xinit" || command == "bspwm") { if (command == "Xorg" || command == "xinit" || command == "i3" || command == "bspwm") {
likelyWayland--; likelyWayland--;
break; break;
} }