Manager: Fix crash when reading ENV variable as root
This commit is contained in:
+14
-8
@@ -72,18 +72,24 @@ 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") {
|
||||
const char* env;
|
||||
env = std::getenv("XDG_SESSION_TYPE");
|
||||
if (env != nullptr) {
|
||||
auto session = std::string(env);
|
||||
if (session == "wayland") {
|
||||
likelyWayland++;
|
||||
}
|
||||
else if (env == "x11") {
|
||||
else if (session == "x11") {
|
||||
likelyWayland--;
|
||||
}
|
||||
env = std::string(std::getenv("WAYLAND_DISPLAY"));
|
||||
if (env.find("wayland-", 0) == 0) {
|
||||
}
|
||||
env = std::getenv("WAYLAND_DISPLAY");
|
||||
if (env != nullptr) {
|
||||
auto display = std::string(env);
|
||||
if (display.find("wayland-", 0) == 0) {
|
||||
likelyWayland++;
|
||||
}
|
||||
}
|
||||
|
||||
// Detect via Wayland socket
|
||||
auto socket = std::filesystem::path("/run/user") / std::to_string(uid());
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user