mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
Mantis #7657 and #7514. This should alleviate the problem of bad object assets being passed around via HG and archives. No guarantees that all the leaks have been found, but at least it detects and fixes these bad assets upon:
(1) storing and getting assets over HG -- assuming the core HG asset service is being used (not the case with OSGrid!) (2) importing assets via OAR and IAR Instantiation of bad assets now should also work, instead of producing an exception, but the bad assets themselves aren't being fixed in the DB. That should be done with a cleaning tool -- see Perl script in Mantis #7657. Virus!
This commit is contained in:
@@ -129,6 +129,14 @@ namespace OpenSim.Services.HypergridService
|
||||
if (!m_AssetPerms.AllowedExport(asset.Type))
|
||||
return null;
|
||||
|
||||
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
|
||||
// Fix bad assets before sending them elsewhere
|
||||
if (asset.Type == (int)AssetType.Object && asset.Data != null)
|
||||
{
|
||||
string xml = ExternalRepresentationUtils.SanitizeXml(Utils.BytesToString(asset.Data));
|
||||
asset.Data = Utils.StringToBytes(xml);
|
||||
}
|
||||
|
||||
return asset.Data;
|
||||
}
|
||||
|
||||
@@ -139,6 +147,14 @@ namespace OpenSim.Services.HypergridService
|
||||
if (!m_AssetPerms.AllowedImport(asset.Type))
|
||||
return string.Empty;
|
||||
|
||||
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
|
||||
// Fix bad assets before storing on this server
|
||||
if (asset.Type == (int)AssetType.Object && asset.Data != null)
|
||||
{
|
||||
string xml = ExternalRepresentationUtils.SanitizeXml(Utils.BytesToString(asset.Data));
|
||||
asset.Data = Utils.StringToBytes(xml);
|
||||
}
|
||||
|
||||
return base.Store(asset);
|
||||
}
|
||||
|
||||
@@ -160,9 +176,15 @@ namespace OpenSim.Services.HypergridService
|
||||
meta.CreatorID = meta.CreatorID + ";" + m_HomeURL + "/" + creator.FirstName + " " + creator.LastName;
|
||||
}
|
||||
|
||||
// Only for Object
|
||||
protected byte[] AdjustIdentifiers(byte[] data)
|
||||
{
|
||||
string xml = Utils.BytesToString(data);
|
||||
|
||||
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
|
||||
// Fix bad assets before sending them elsewhere
|
||||
xml = ExternalRepresentationUtils.SanitizeXml(xml);
|
||||
|
||||
return Utils.StringToBytes(ExternalRepresentationUtils.RewriteSOP(xml, "HGAssetService", m_HomeURL, m_Cache, UUID.Zero));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user