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; 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") {
else if (env == "x11") { likelyWayland++;
likelyWayland--; }
else if (session == "x11") {
likelyWayland--;
}
} }
env = std::string(std::getenv("WAYLAND_DISPLAY")); env = std::getenv("WAYLAND_DISPLAY");
if (env.find("wayland-", 0) == 0) { if (env != nullptr) {
likelyWayland++; auto display = std::string(env);
if (display.find("wayland-", 0) == 0) {
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;
} }

Loading…
Cancel
Save