diff --git a/src/protocols/XDGActivation.cpp b/src/protocols/XDGActivation.cpp index f25ffca8b..165bcd7e1 100644 --- a/src/protocols/XDGActivation.cpp +++ b/src/protocols/XDGActivation.cpp @@ -1,6 +1,7 @@ #include "XDGActivation.hpp" #include "../managers/TokenManager.hpp" #include "../Compositor.hpp" +#include "../managers/SeatManager.hpp" #include "core/Compositor.hpp" #include @@ -23,6 +24,12 @@ CXDGActivationToken::CXDGActivationToken(SP resource_) : return; } + if (!g_pSeatManager->serialValid(g_pSeatManager->seatResourceForClient(m_resource->client()), m_serial)) { + LOGM(LOG, "serial not found, sending invalid token"); + m_resource->sendDone("__invalid__"); + return; + } + m_committed = true; // send done with a new token m_token = g_pTokenManager->registerNewToken({}, std::chrono::months{12});