Browse Source

Manager: Fix crash when reading ENV variable as root

master
Riyyi 3 days ago
parent
commit
05aff91858
  1. 30
      src/machine.cpp

30
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;
}

Loading…
Cancel
Save