diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index a6f6a80..b3bd8c4 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -260,7 +260,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
260 | wComm.DeliverMessage(ChatTypeEnum.Shout, ScriptBaseClass.DEBUG_CHANNEL, m_host.Name, m_host.UUID, message); | 260 | wComm.DeliverMessage(ChatTypeEnum.Shout, ScriptBaseClass.DEBUG_CHANNEL, m_host.Name, m_host.UUID, message); |
261 | } | 261 | } |
262 | 262 | ||
263 | // Returns of the function is allowed. Throws a script exception if not allowed. | 263 | // Returns if OSSL is enabled. Throws a script exception if OSSL is not allowed.. |
264 | // for safe funtions always active | ||
265 | public void CheckThreatLevel() | ||
266 | { | ||
267 | if (!m_OSFunctionsEnabled) | ||
268 | OSSLError(String.Format("{0} permission denied. All OS functions are disabled.")); // throws | ||
269 | } | ||
270 | |||
271 | // Returns if the function is allowed. Throws a script exception if not allowed. | ||
264 | public void CheckThreatLevel(ThreatLevel level, string function) | 272 | public void CheckThreatLevel(ThreatLevel level, string function) |
265 | { | 273 | { |
266 | if (!m_OSFunctionsEnabled) | 274 | if (!m_OSFunctionsEnabled) |
@@ -1716,7 +1724,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1716 | 1724 | ||
1717 | public LSL_Integer osCheckODE() | 1725 | public LSL_Integer osCheckODE() |
1718 | { | 1726 | { |
1727 | CheckThreatLevel(); | ||
1719 | m_host.AddScriptLPS(1); | 1728 | m_host.AddScriptLPS(1); |
1729 | |||
1720 | LSL_Integer ret = 0; // false | 1730 | LSL_Integer ret = 0; // false |
1721 | if (m_ScriptEngine.World.PhysicsScene != null) | 1731 | if (m_ScriptEngine.World.PhysicsScene != null) |
1722 | { | 1732 | { |
@@ -1757,10 +1767,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1757 | 1767 | ||
1758 | public string osGetPhysicsEngineName() | 1768 | public string osGetPhysicsEngineName() |
1759 | { | 1769 | { |
1760 | // not doing security checks | 1770 | CheckThreatLevel(); |
1761 | // this whould limit the use of this | ||
1762 | |||
1763 | m_host.AddScriptLPS(1); | 1771 | m_host.AddScriptLPS(1); |
1772 | |||
1764 | string ret = "NoEngine"; | 1773 | string ret = "NoEngine"; |
1765 | if (m_ScriptEngine.World.PhysicsScene != null) | 1774 | if (m_ScriptEngine.World.PhysicsScene != null) |
1766 | { | 1775 | { |
@@ -1771,6 +1780,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1771 | } | 1780 | } |
1772 | return ret; | 1781 | return ret; |
1773 | } | 1782 | } |
1783 | |||
1774 | public string osGetSimulatorVersion() | 1784 | public string osGetSimulatorVersion() |
1775 | { | 1785 | { |
1776 | // High because it can be used to target attacks to known weaknesses | 1786 | // High because it can be used to target attacks to known weaknesses |
@@ -4364,6 +4374,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4364 | 4374 | ||
4365 | public void osCollisionSound(string impact_sound, double impact_volume) | 4375 | public void osCollisionSound(string impact_sound, double impact_volume) |
4366 | { | 4376 | { |
4377 | CheckThreatLevel(); | ||
4367 | m_host.AddScriptLPS(1); | 4378 | m_host.AddScriptLPS(1); |
4368 | 4379 | ||
4369 | if(impact_sound == "") | 4380 | if(impact_sound == "") |
@@ -4396,6 +4407,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4396 | // still not very usefull, detector is lost on rez, restarts, etc | 4407 | // still not very usefull, detector is lost on rez, restarts, etc |
4397 | public void osVolumeDetect(int detect) | 4408 | public void osVolumeDetect(int detect) |
4398 | { | 4409 | { |
4410 | CheckThreatLevel(); | ||
4399 | m_host.AddScriptLPS(1); | 4411 | m_host.AddScriptLPS(1); |
4400 | 4412 | ||
4401 | if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment) | 4413 | if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment) |
@@ -4418,6 +4430,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4418 | /// </returns> | 4430 | /// </returns> |
4419 | public LSL_List osGetInertiaData() | 4431 | public LSL_List osGetInertiaData() |
4420 | { | 4432 | { |
4433 | CheckThreatLevel(); | ||
4421 | m_host.AddScriptLPS(1); | 4434 | m_host.AddScriptLPS(1); |
4422 | 4435 | ||
4423 | LSL_List result = new LSL_List(); | 4436 | LSL_List result = new LSL_List(); |
@@ -4465,7 +4478,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4465 | 4478 | ||
4466 | public void osSetInertia(LSL_Float mass, LSL_Vector centerOfMass, LSL_Vector principalInertiaScaled, LSL_Rotation lslrot) | 4479 | public void osSetInertia(LSL_Float mass, LSL_Vector centerOfMass, LSL_Vector principalInertiaScaled, LSL_Rotation lslrot) |
4467 | { | 4480 | { |
4481 | CheckThreatLevel(); | ||
4468 | m_host.AddScriptLPS(1); | 4482 | m_host.AddScriptLPS(1); |
4483 | |||
4469 | SceneObjectGroup sog = m_host.ParentGroup; | 4484 | SceneObjectGroup sog = m_host.ParentGroup; |
4470 | if(sog== null || sog.IsDeleted) | 4485 | if(sog== null || sog.IsDeleted) |
4471 | return; | 4486 | return; |
@@ -4502,6 +4517,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4502 | /// </remarks> | 4517 | /// </remarks> |
4503 | public void osSetInertiaAsBox(LSL_Float mass, LSL_Vector boxSize, LSL_Vector centerOfMass, LSL_Rotation lslrot) | 4518 | public void osSetInertiaAsBox(LSL_Float mass, LSL_Vector boxSize, LSL_Vector centerOfMass, LSL_Rotation lslrot) |
4504 | { | 4519 | { |
4520 | CheckThreatLevel(); | ||
4505 | m_host.AddScriptLPS(1); | 4521 | m_host.AddScriptLPS(1); |
4506 | 4522 | ||
4507 | SceneObjectGroup sog = m_host.ParentGroup; | 4523 | SceneObjectGroup sog = m_host.ParentGroup; |
@@ -4543,7 +4559,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4543 | /// </remarks> | 4559 | /// </remarks> |
4544 | public void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, LSL_Vector centerOfMass) | 4560 | public void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, LSL_Vector centerOfMass) |
4545 | { | 4561 | { |
4562 | CheckThreatLevel(); | ||
4546 | m_host.AddScriptLPS(1); | 4563 | m_host.AddScriptLPS(1); |
4564 | |||
4547 | SceneObjectGroup sog = m_host.ParentGroup; | 4565 | SceneObjectGroup sog = m_host.ParentGroup; |
4548 | if(sog== null || sog.IsDeleted) | 4566 | if(sog== null || sog.IsDeleted) |
4549 | return; | 4567 | return; |
@@ -4581,7 +4599,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4581 | /// </remarks> | 4599 | /// </remarks> |
4582 | public void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float lenght, LSL_Vector centerOfMass, LSL_Rotation lslrot) | 4600 | public void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float lenght, LSL_Vector centerOfMass, LSL_Rotation lslrot) |
4583 | { | 4601 | { |
4602 | CheckThreatLevel(); | ||
4584 | m_host.AddScriptLPS(1); | 4603 | m_host.AddScriptLPS(1); |
4604 | |||
4585 | SceneObjectGroup sog = m_host.ParentGroup; | 4605 | SceneObjectGroup sog = m_host.ParentGroup; |
4586 | if(sog== null || sog.IsDeleted) | 4606 | if(sog== null || sog.IsDeleted) |
4587 | return; | 4607 | return; |
@@ -4618,7 +4638,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4618 | /// </summary> | 4638 | /// </summary> |
4619 | public void osClearInertia() | 4639 | public void osClearInertia() |
4620 | { | 4640 | { |
4641 | CheckThreatLevel(); | ||
4621 | m_host.AddScriptLPS(1); | 4642 | m_host.AddScriptLPS(1); |
4643 | |||
4622 | SceneObjectGroup sog = m_host.ParentGroup; | 4644 | SceneObjectGroup sog = m_host.ParentGroup; |
4623 | if(sog== null || sog.IsDeleted) | 4645 | if(sog== null || sog.IsDeleted) |
4624 | return; | 4646 | return; |
@@ -4666,7 +4688,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4666 | 4688 | ||
4667 | public LSL_Integer osGetLinkNumber(LSL_String name) | 4689 | public LSL_Integer osGetLinkNumber(LSL_String name) |
4668 | { | 4690 | { |
4691 | CheckThreatLevel(); | ||
4669 | m_host.AddScriptLPS(1); | 4692 | m_host.AddScriptLPS(1); |
4693 | |||
4670 | SceneObjectGroup sog = m_host.ParentGroup; | 4694 | SceneObjectGroup sog = m_host.ParentGroup; |
4671 | if(sog== null || sog.IsDeleted) | 4695 | if(sog== null || sog.IsDeleted) |
4672 | return -1; | 4696 | return -1; |