History

Add guard against unpermitted requests to the entity script server

Ryan Huffman committed 9 years ago

Commit 3ac44e31 parent 7fc946f1 file · +26 −22Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 1 file). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+26−22
@@ -62,34 +62,38 @@ EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssig · 61 unmodified lines
6262 static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";
6363
6464 void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
65− auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
65+ if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
66+ auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
6667
67− if (_entityViewer.getTree() && !_shuttingDown) {
68− qDebug() << "Reloading: " << entityID;
69− _entitiesScriptEngine->unloadEntityScript(entityID);
70− checkAndCallPreload(entityID, true);
68+ if (_entityViewer.getTree() && !_shuttingDown) {
69+ qDebug() << "Reloading: " << entityID;
70+ _entitiesScriptEngine->unloadEntityScript(entityID);
71+ checkAndCallPreload(entityID, true);
72+ }
7173 }
7274 }
7375
7476 void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
75− MessageID messageID;
76− message->readPrimitive(&messageID);
77− auto entityID = QUuid::fromRfc4122(message->read(UUID_LENGTH_BYTES));
78−
79− auto replyPacketList = NLPacketList::create(PacketType::EntityScriptGetStatusReply, QByteArray(), true, true);
80− replyPacketList->writePrimitive(messageID);
81−
82− EntityScriptDetails details;
83− if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {
84− replyPacketList->writePrimitive(true);
85− replyPacketList->writePrimitive(details.status);
86− replyPacketList->writeString(details.errorInfo);
87− } else {
88− replyPacketList->writePrimitive(false);
89− }
77+ if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
78+ MessageID messageID;
79+ message->readPrimitive(&messageID);
80+ auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
81+
82+ auto replyPacketList = NLPacketList::create(PacketType::EntityScriptGetStatusReply, QByteArray(), true, true);
83+ replyPacketList->writePrimitive(messageID);
84+
85+ EntityScriptDetails details;
86+ if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {
87+ replyPacketList->writePrimitive(true);
88+ replyPacketList->writePrimitive(details.status);
89+ replyPacketList->writeString(details.errorInfo);
90+ } else {
91+ replyPacketList->writePrimitive(false);
92+ }
9093
91− auto nodeList = DependencyManager::get<NodeList>();
92− nodeList->sendPacketList(std::move(replyPacketList), *senderNode);
94+ auto nodeList = DependencyManager::get<NodeList>();
95+ nodeList->sendPacketList(std::move(replyPacketList), *senderNode);
96+ }
9397 }
9498
9599 void EntityScriptServer::run() {