If a friends identifier which is too short is given to HGFriendsModule.GetOnlineFriends() then spit out a warning rather than failing on the String.Substring().

This is to progress http://opensimulator.org/mantis/view.php?id=5789
iar_mods
Justin Clark-Casey (justincc) 2011-11-14 16:06:06 +00:00
parent 49ec85ae15
commit ff36a1bc7b
2 changed files with 10 additions and 1 deletions

View File

@ -11088,6 +11088,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText)); Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText));
return true; return true;
} }
private bool HandleGrantUserRights(IClientAPI sender, Packet Pack) private bool HandleGrantUserRights(IClientAPI sender, Packet Pack)
{ {
GrantUserRightsPacket GrantUserRights = GrantUserRightsPacket GrantUserRights =
@ -11108,6 +11109,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
GrantUserRights.Rights[0].RelatedRights); GrantUserRights.Rights[0].RelatedRights);
return true; return true;
} }
private bool HandlePlacesQuery(IClientAPI sender, Packet Pack) private bool HandlePlacesQuery(IClientAPI sender, Packet Pack)
{ {
PlacesQueryPacket placesQueryPacket = PlacesQueryPacket placesQueryPacket =

View File

@ -141,7 +141,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
{ {
List<string> fList = new List<string>(); List<string> fList = new List<string>();
foreach (string s in friendList) foreach (string s in friendList)
fList.Add(s.Substring(0, 36)); {
if (s.Length < 36)
m_log.WarnFormat(
"[HGFRIENDS MODULE]: Ignoring friend {0} ({1} chars) for {2} since identifier too short",
s, s.Length, userID);
else
fList.Add(s.Substring(0, 36));
}
PresenceInfo[] presence = PresenceService.GetAgents(fList.ToArray()); PresenceInfo[] presence = PresenceService.GetAgents(fList.ToArray());
foreach (PresenceInfo pi in presence) foreach (PresenceInfo pi in presence)