From a056eb1973d6f547b689e05a617016e7f0532941 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sat, 17 Oct 2009 20:50:10 -0700 Subject: Ported notecard security fix from LL's 1.23.5 viewer --- ChangeLog.txt | 9 ++++++++ linden/indra/newview/llassetuploadresponders.cpp | 2 +- linden/indra/newview/llpreview.cpp | 29 ++++++++++++++++++++++++ linden/indra/newview/llpreview.h | 1 + 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index a029365..4cdab70 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,12 @@ +2009-10-17 McCabe Maxsted + + * Ported notecard security fix from LL's 1.23.5 viewer. + + modified: linden/indra/newview/llassetuploadresponders.cpp + modified: linden/indra/newview/llpreview.cpp + modified: linden/indra/newview/llpreview.h + + 2009-10-16 McCabe Maxsted * Applied RLVa-1.0.4e_20091010_SL-1.22.11-diff.patch. diff --git a/linden/indra/newview/llassetuploadresponders.cpp b/linden/indra/newview/llassetuploadresponders.cpp index be3882e..311ff64 100644 --- a/linden/indra/newview/llassetuploadresponders.cpp +++ b/linden/indra/newview/llassetuploadresponders.cpp @@ -440,7 +440,6 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content) { case LLAssetType::AT_NOTECARD: { - // Update the UI with the new asset. LLPreviewNotecard* nc; nc = (LLPreviewNotecard*)LLPreview::find(item_id); @@ -459,6 +458,7 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content) LLAssetType::AT_NOTECARD); } + nc->setAssetId(content["new_asset"].asUUID()); nc->refreshFromInventory(); } } diff --git a/linden/indra/newview/llpreview.cpp b/linden/indra/newview/llpreview.cpp index 1a6d2ca..055851b 100644 --- a/linden/indra/newview/llpreview.cpp +++ b/linden/indra/newview/llpreview.cpp @@ -596,3 +596,32 @@ void LLMultiPreview::setAutoOpenInstance(LLMultiPreview* previewp, const LLUUID& sAutoOpenPreviewHandles[id] = previewp->getHandle(); } } + +void LLPreview::setAssetId(const LLUUID& asset_id) +{ + const LLViewerInventoryItem* item = getItem(); + if(NULL == item) + { + return; + } + + if(mObjectUUID.isNull()) + { + // Update avatar inventory asset_id. + LLPointer new_item = new LLViewerInventoryItem(item); + new_item->setAssetUUID(asset_id); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } + else + { + // Update object inventory asset_id. + LLViewerObject* object = gObjectList.findObject(mObjectUUID); + if(NULL == object) + { + llwarns << "LLPreview::setAssetId() called on unrecognized object, UUID : " << mObjectUUID << llendl; + return; + } + object->updateViewerInventoryAsset(item, asset_id); + } +} diff --git a/linden/indra/newview/llpreview.h b/linden/indra/newview/llpreview.h index 74daca6..4e159f3 100644 --- a/linden/indra/newview/llpreview.h +++ b/linden/indra/newview/llpreview.h @@ -83,6 +83,7 @@ public: void setItemID(const LLUUID& item_id); void setObjectID(const LLUUID& object_id); void setSourceID(const LLUUID& source_id); + void setAssetId(const LLUUID& asset_id); const LLViewerInventoryItem *getItem() const; // searches if not constructed with it static LLPreview* find(const LLUUID& item_uuid); -- cgit v1.1