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
62static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";62static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";
63 63
64void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {64void 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));
66 67
67 if (_entityViewer.getTree() && !_shuttingDown) {68 if (_entityViewer.getTree() && !_shuttingDown) {
68 qDebug() << "Reloading: " << entityID;69 qDebug() << "Reloading: " << entityID;
69 _entitiesScriptEngine->unloadEntityScript(entityID);70 _entitiesScriptEngine->unloadEntityScript(entityID);
70 checkAndCallPreload(entityID, true);71 checkAndCallPreload(entityID, true);
72 }
71 }73 }
72}74}
73 75
74void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {76void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
75 MessageID messageID;77 if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
76 message->readPrimitive(&messageID);78 MessageID messageID;
77 auto entityID = QUuid::fromRfc4122(message->read(UUID_LENGTH_BYTES));79 message->readPrimitive(&messageID);
78 80 auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
79 auto replyPacketList = NLPacketList::create(PacketType::EntityScriptGetStatusReply, QByteArray(), true, true);81
80 replyPacketList->writePrimitive(messageID);82 auto replyPacketList = NLPacketList::create(PacketType::EntityScriptGetStatusReply, QByteArray(), true, true);
81 83 replyPacketList->writePrimitive(messageID);
82 EntityScriptDetails details;84
83 if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {85 EntityScriptDetails details;
84 replyPacketList->writePrimitive(true);86 if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {
85 replyPacketList->writePrimitive(details.status);87 replyPacketList->writePrimitive(true);
86 replyPacketList->writeString(details.errorInfo);88 replyPacketList->writePrimitive(details.status);
87 } else {89 replyPacketList->writeString(details.errorInfo);
88 replyPacketList->writePrimitive(false);90 } else {
89 }91 replyPacketList->writePrimitive(false);
92 }
90 93
91 auto nodeList = DependencyManager::get<NodeList>();94 auto nodeList = DependencyManager::get<NodeList>();
92 nodeList->sendPacketList(std::move(replyPacketList), *senderNode);95 nodeList->sendPacketList(std::move(replyPacketList), *senderNode);
96 }
93}97}
94 98
95void EntityScriptServer::run() {99void EntityScriptServer::run() {