<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://addonstudio.org/mw1/index.php?action=history&amp;feed=atom&amp;title=WoW%3AAPI_securecall</id>
	<title>WoW:API securecall - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://addonstudio.org/mw1/index.php?action=history&amp;feed=atom&amp;title=WoW%3AAPI_securecall"/>
	<link rel="alternate" type="text/html" href="https://addonstudio.org/mw1/index.php?title=WoW:API_securecall&amp;action=history"/>
	<updated>2026-06-01T22:24:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://addonstudio.org/mw1/index.php?title=WoW:API_securecall&amp;diff=16673&amp;oldid=prev</id>
		<title>Move page script: Move page script moved page API securecall to WoW:API securecall without leaving a redirect</title>
		<link rel="alternate" type="text/html" href="https://addonstudio.org/mw1/index.php?title=WoW:API_securecall&amp;diff=16673&amp;oldid=prev"/>
		<updated>2023-08-15T04:47:14Z</updated>

		<summary type="html">&lt;p&gt;Move page script moved page &lt;a href=&quot;/wiki/WoW:API_securecall&quot; title=&quot;WoW:API securecall&quot;&gt;API securecall&lt;/a&gt; to &lt;a href=&quot;/wiki/WoW:API_securecall&quot; title=&quot;WoW:API securecall&quot;&gt;API securecall&lt;/a&gt; without leaving a redirect&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:47, 15 August 2023&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key addonstu_asmw2:diff::1.12:old-16672:rev-16673 --&gt;
&lt;/table&gt;</summary>
		<author><name>Move page script</name></author>
	</entry>
	<entry>
		<id>https://addonstudio.org/mw1/index.php?title=WoW:API_securecall&amp;diff=16672&amp;oldid=prev</id>
		<title>WoWWiki&gt;N3rf at 23:02, 17 January 2007</title>
		<link rel="alternate" type="text/html" href="https://addonstudio.org/mw1/index.php?title=WoW:API_securecall&amp;diff=16672&amp;oldid=prev"/>
		<updated>2007-01-17T23:02:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{wowapi}}__NOTOC__&lt;br /&gt;
This function allows you to call an another function (with the possibility to pass arguments to it) and restore secure status that was active before calling this aforementionned function.&lt;br /&gt;
&lt;br /&gt;
That means that if the function that was called by securecall() was tainted by untrusted code (probably through hooking), and that prior the call the environment was secure, it&amp;#039;ll remain secure after the call, thus not breaking protected functions calls.&lt;br /&gt;
&lt;br /&gt;
This function has no particular effect if called from an unsecure (tainted) environment, as &amp;#039;unsecure&amp;#039; state is restored after the call.&lt;br /&gt;
&lt;br /&gt;
 securecall(function[, ...])&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===Arguments===&lt;br /&gt;
:;function: The function to be called.&lt;br /&gt;
The following arguments are passed to it.&lt;br /&gt;
&lt;br /&gt;
===Return===&lt;br /&gt;
:;nil&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
 function some_blizzard_func()&lt;br /&gt;
     -- Let&amp;#039;s consider that when this function is called, we&amp;#039;re in a secure environment, as it has been defined by Blizzard.&lt;br /&gt;
 &lt;br /&gt;
     -- Let&amp;#039;s do a call to some_other_blizzard_func(), passing some arguments along the way.&lt;br /&gt;
     securecall(some_other_blizzard_func,&amp;quot;foo&amp;quot;,20,&amp;quot;bar&amp;quot;);&lt;br /&gt;
     -- &amp;lt;Stop reading this function&amp;#039;s content and jump to some_other_blizzard_func() for further explanations&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     -- But! Thanks to securecall, secure status that was active before the call gets restored (in this case, &amp;#039;secure&amp;#039;), and ...&lt;br /&gt;
     Jump();&lt;br /&gt;
     -- ...protected functions and such will still continue to work.&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 function some_other_blizzard_func(a,b,c)&lt;br /&gt;
     -- This is the function called by securecall().&lt;br /&gt;
     -- The function is secure, as it&amp;#039;s defined by Blizzard, but...&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- Oh no ! Someone has hooked the function !&lt;br /&gt;
 old_blizzard_func = some_other_blizzard_func;&lt;br /&gt;
 function some_other_blizzard_func(a,b,c)&lt;br /&gt;
     -- some_other_blizzard_func has been redefined by a third-party person,&lt;br /&gt;
     -- thus is no longer Blizzard-defined, and thus unsecure.&lt;br /&gt;
     -- Calling it will break secure state, which is the case,&lt;br /&gt;
     -- so past this point the secure status has become &amp;#039;unsecure&amp;#039;.&lt;br /&gt;
     old_blizzard_func(a,b,c);&lt;br /&gt;
     &lt;br /&gt;
     -- Jump();&lt;br /&gt;
     -- Issuing calls from now on to protected functions and such will display the forbidden action popup.&lt;br /&gt;
 &lt;br /&gt;
     -- &amp;lt;Now return to some_blizzard_func() and finish reading&amp;gt;&lt;br /&gt;
 end&lt;br /&gt;
===Secure status===&lt;br /&gt;
* some_blizzard_func() (enter point) : secure&lt;br /&gt;
* When making the call to the hooked some_other_blizzard_func() : unsecure&lt;br /&gt;
* When resuming the execution of some_blizzard_func() : secure again&lt;/div&gt;</summary>
		<author><name>WoWWiki&gt;N3rf</name></author>
	</entry>
</feed>