refuse to perform mapping operations in /.baked/

This commit is contained in:
Stephen Birarda 2017-08-29 16:40:43 -07:00
parent f89459525e
commit f2997c0997

View file

@ -533,11 +533,18 @@ void AssetServer::handleSetMappingOperation(ReceivedMessage& message, SharedNode
auto assetHash = message.read(SHA256_HASH_LENGTH).toHex(); auto assetHash = message.read(SHA256_HASH_LENGTH).toHex();
if (setMapping(assetPath, assetHash)) { // don't process a set mapping operation that is inside the hidden baked folder
replyPacket.writePrimitive(AssetServerError::NoError); if (assetPath.startsWith(HIDDEN_BAKED_CONTENT_FOLDER)) {
qCDebug(asset_server) << "Refusing to process a set mapping operation inside" << HIDDEN_BAKED_CONTENT_FOLDER;
replyPacket.writePrimitive(AssetServerError::PermissionDenied);
} else { } else {
replyPacket.writePrimitive(AssetServerError::MappingOperationFailed); if (setMapping(assetPath, assetHash)) {
replyPacket.writePrimitive(AssetServerError::NoError);
} else {
replyPacket.writePrimitive(AssetServerError::MappingOperationFailed);
}
} }
} else { } else {
replyPacket.writePrimitive(AssetServerError::PermissionDenied); replyPacket.writePrimitive(AssetServerError::PermissionDenied);
} }
@ -551,7 +558,14 @@ void AssetServer::handleDeleteMappingsOperation(ReceivedMessage& message, Shared
QStringList mappingsToDelete; QStringList mappingsToDelete;
for (int i = 0; i < numberOfDeletedMappings; ++i) { for (int i = 0; i < numberOfDeletedMappings; ++i) {
mappingsToDelete << message.readString(); auto mapping = message.readString();
if (!mapping.startsWith(HIDDEN_BAKED_CONTENT_FOLDER)) {
mappingsToDelete << mapping;
} else {
qCDebug(asset_server) << "Refusing to delete mapping" << mapping
<< "that is inside" << HIDDEN_BAKED_CONTENT_FOLDER;
}
} }
if (deleteMappings(mappingsToDelete)) { if (deleteMappings(mappingsToDelete)) {
@ -569,11 +583,18 @@ void AssetServer::handleRenameMappingOperation(ReceivedMessage& message, SharedN
QString oldPath = message.readString(); QString oldPath = message.readString();
QString newPath = message.readString(); QString newPath = message.readString();
if (renameMapping(oldPath, newPath)) { if (oldPath.startsWith(HIDDEN_BAKED_CONTENT_FOLDER) || newPath.startsWith(HIDDEN_BAKED_CONTENT_FOLDER)) {
replyPacket.writePrimitive(AssetServerError::NoError); qCDebug(asset_server) << "Cannot rename" << oldPath << "to" << newPath
<< "since one of the paths is inside" << HIDDEN_BAKED_CONTENT_FOLDER;
replyPacket.writePrimitive(AssetServerError::PermissionDenied);
} else { } else {
replyPacket.writePrimitive(AssetServerError::MappingOperationFailed); if (renameMapping(oldPath, newPath)) {
replyPacket.writePrimitive(AssetServerError::NoError);
} else {
replyPacket.writePrimitive(AssetServerError::MappingOperationFailed);
}
} }
} else { } else {
replyPacket.writePrimitive(AssetServerError::PermissionDenied); replyPacket.writePrimitive(AssetServerError::PermissionDenied);
} }