static ios::Error defensiveProcessIncomingMessagePointer(virt_ptr<IPCKDriver> driver, virt_ptr<IPCKDriverRequest> request, virt_ptr<IPCKDriverRequestBlock> *outRequestBlock) { auto index = request - driver->requestsBuffer; if (index >= IPCKRequestsPerCore || index < 0) { return ios::Error::Invalid; } if (driver->requestBlocks[index].request != request) { return ios::Error::Invalid; } auto requestBlock = virt_addrof(driver->requestBlocks[index]); auto flags = requestBlock->flags.value(); if (flags.requestState() == IPCKDriverRequestBlock::Unallocated) { return ios::Error::Invalid; } requestBlock->flags = flags.replyState(IPCKDriverRequestBlock::ReceivedReply); *outRequestBlock = requestBlock; return ios::Error::OK; }
void GetSecretCommand::process(CommandHandler &command) { QByteArray secret = command.user->readSetting("localSecret").toByteArray(); if (secret.size() != 16) { command.sendReply(ProtocolCommand::InternalError); return; } command.sendReply(replyState(true, true, 0x00), secret); }