diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 15469db..5b634e0 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -278,10 +278,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
278 | { | 278 | { |
279 | if (!m_FunctionPerms[function].Contains(UUID.Zero)) | 279 | if (!m_FunctionPerms[function].Contains(UUID.Zero)) |
280 | { | 280 | { |
281 | if (!m_FunctionPerms[function].Contains(m_host.OwnerID)) | 281 | TaskInventoryItem ti = m_host.Inventory.GetInventoryItem(m_itemID); |
282 | if (ti == null) | ||
283 | { | ||
284 | OSSLError( | ||
285 | String.Format("{0} permission error. Can't find script in prim inventory.", | ||
286 | function)); | ||
287 | } | ||
288 | if (!m_FunctionPerms[function].Contains(ti.CreatorID)) | ||
282 | OSSLError( | 289 | OSSLError( |
283 | String.Format("{0} permission denied. Prim owner is not in the list of users allowed to execute this function.", | 290 | String.Format("{0} permission denied. Script creator is not in the list of users allowed to execute this function.", |
284 | function)); | 291 | function)); |
292 | if (ti.CreatorID != ti.OwnerID) | ||
293 | { | ||
294 | if ((ti.CurrentPermissions & (uint)PermissionMask.Modify) != 0) | ||
295 | OSSLError( | ||
296 | String.Format("{0} permission denied. Script permissions error.", | ||
297 | function)); | ||
298 | |||
299 | } | ||
285 | } | 300 | } |
286 | } | 301 | } |
287 | } | 302 | } |
@@ -2137,4 +2152,4 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2137 | } | 2152 | } |
2138 | } | 2153 | } |
2139 | } | 2154 | } |
2140 | } \ No newline at end of file | 2155 | } |