add wearables array size checks on unpack
parent
95f0d582a5
commit
c6cdd597f3
|
@ -458,7 +458,12 @@ namespace OpenSim.Framework
|
||||||
// m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID);
|
// m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID);
|
||||||
// DEBUG OFF
|
// DEBUG OFF
|
||||||
m_wearables[wearableId].Clear();
|
m_wearables[wearableId].Clear();
|
||||||
for (int i = 0; i < wearable.Count; i++)
|
|
||||||
|
int count = wearable.Count;
|
||||||
|
if (count > AvatarWearable.MAX_WEARABLES)
|
||||||
|
count = AvatarWearable.MAX_WEARABLES;
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID);
|
m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -751,7 +756,12 @@ namespace OpenSim.Framework
|
||||||
if ((data != null) && (data["wearables"] != null) && (data["wearables"]).Type == OSDType.Array)
|
if ((data != null) && (data["wearables"] != null) && (data["wearables"]).Type == OSDType.Array)
|
||||||
{
|
{
|
||||||
OSDArray wears = (OSDArray)(data["wearables"]);
|
OSDArray wears = (OSDArray)(data["wearables"]);
|
||||||
for (int i = 0; i < wears.Count; i++)
|
|
||||||
|
int count = wears.Count;
|
||||||
|
if (count > AvatarWearable.MAX_WEARABLES)
|
||||||
|
count = AvatarWearable.MAX_WEARABLES;
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
m_wearables[i] = new AvatarWearable((OSDArray)wears[i]);
|
m_wearables[i] = new AvatarWearable((OSDArray)wears[i]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -657,7 +657,12 @@ namespace OpenSim.Framework
|
||||||
if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
|
if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
|
||||||
{
|
{
|
||||||
OSDArray wears = (OSDArray)(args["wearables"]);
|
OSDArray wears = (OSDArray)(args["wearables"]);
|
||||||
for (int i = 0; i < wears.Count / 2; i++)
|
|
||||||
|
int count = wears.Count;
|
||||||
|
if (count > AvatarWearable.MAX_WEARABLES)
|
||||||
|
count = AvatarWearable.MAX_WEARABLES;
|
||||||
|
|
||||||
|
for (int i = 0; i < count / 2; i++)
|
||||||
{
|
{
|
||||||
AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]);
|
AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]);
|
||||||
Appearance.SetWearable(i,awear);
|
Appearance.SetWearable(i,awear);
|
||||||
|
|
Loading…
Reference in New Issue