aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2018-04-28 12:43:06 +0100
committerUbitUmarov2018-04-28 12:43:06 +0100
commit44fd5bb7b5f7cab111ffc3ddbc3182b451799fad (patch)
tree1199fca3990340d56b94fe6dee4ce78c648e560b
parentmantis8309 add extra try{}catch (diff)
downloadopensim-SC-44fd5bb7b5f7cab111ffc3ddbc3182b451799fad.zip
opensim-SC-44fd5bb7b5f7cab111ffc3ddbc3182b451799fad.tar.gz
opensim-SC-44fd5bb7b5f7cab111ffc3ddbc3182b451799fad.tar.bz2
opensim-SC-44fd5bb7b5f7cab111ffc3ddbc3182b451799fad.tar.xz
mantis 8321: avoid null reference potencial caused by outdated LMs for example
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 95b1af9..b1f5122 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -2036,18 +2036,25 @@ namespace OpenSim.Region.CoreModules.World.Land
2036 { 2036 {
2037 UUID parcel = UUID.Zero; 2037 UUID parcel = UUID.Zero;
2038 UUID.TryParse(id, out parcel); 2038 UUID.TryParse(id, out parcel);
2039
2039 // assume we've got the parcelID we just computed in RemoteParcelRequest 2040 // assume we've got the parcelID we just computed in RemoteParcelRequest
2040 ExtendedLandData extLandData = new ExtendedLandData(); 2041 ExtendedLandData extLandData = new ExtendedLandData();
2041 if(!Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle, 2042 if(!Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle,
2042 out extLandData.X, out extLandData.Y)) 2043 out extLandData.X, out extLandData.Y))
2043 return null; 2044 return null;
2044 m_log.DebugFormat("[LAND MANAGEMENT MODULE]: Got parcelinfo request for regionHandle {0}, x/y {1}/{2}", 2045 m_log.DebugFormat("[LAND MANAGEMENT MODULE] : Got parcelinfo request for regionHandle {0}, x/y {1}/{2}",
2045 extLandData.RegionHandle, extLandData.X, extLandData.Y); 2046 extLandData.RegionHandle, extLandData.X, extLandData.Y);
2046 2047
2047 // for this region or for somewhere else? 2048 // for this region or for somewhere else?
2048 if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle) 2049 if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle)
2049 { 2050 {
2050 extLandData.LandData = this.GetLandObject(extLandData.X, extLandData.Y).LandData; 2051 ILandObject extLandObject = this.GetLandObject(extLandData.X, extLandData.Y);
2052 if(extLandObject == null)
2053 {
2054 m_log.DebugFormat("[LAND MANAGEMENT MODULE]: ParcelInfoRequest: a FakeParcelID points to outside the region");
2055 return null;
2056 }
2057 extLandData.LandData = extLandObject.LandData;
2051 extLandData.RegionAccess = m_scene.RegionInfo.AccessLevel; 2058 extLandData.RegionAccess = m_scene.RegionInfo.AccessLevel;
2052 } 2059 }
2053 else 2060 else