WoW:API issecurevariable: Difference between revisions
Jump to navigation
Jump to search
m (I played around with this a little bit and this is what I got. :)) |
(second return value) |
||
Line 2: | Line 2: | ||
Determines if given variable or table is [[secure]] or "[[Tainted (Addons)|tainted]]." Any usage of a "[[Tainted (Addons)|tainted]]" (= non-secure) variable, be it a function or simply data, will break [[secure]] state and prevent further access to Protected functions. | Determines if given variable or table is [[secure]] or "[[Tainted (Addons)|tainted]]." Any usage of a "[[Tainted (Addons)|tainted]]" (= non-secure) variable, be it a function or simply data, will break [[secure]] state and prevent further access to Protected functions. | ||
isSecure, | isSecure, taint = issecurevariable([table], variable) | ||
== | ==Returns== | ||
;isSecure : "boolean" flag: 1 if variable is secure, nil if it is tainted. | |||
: | ;taint : string: addon that tainted the variable (possibly nil if not tainted by an addon). | ||
: | |||
: | |||
==Example 1== | ==Example 1== | ||
Line 35: | Line 31: | ||
end | end | ||
===Result=== | ===Result=== | ||
*[[API_UnitName|UnitName]] is not a protected Blizzard-defined function, but will still become tainted when hooked. | * [[API_UnitName|UnitName]] is not a protected Blizzard-defined function, but will still become tainted when hooked. | ||
*Message "Given variable tainted. :s" will get displayed in your chat frame. | * Message "Given variable tainted. :s" will get displayed in your chat frame. | ||
==Notes== | ==Notes== |
Revision as of 20:57, 6 April 2009
Determines if given variable or table is secure or "tainted." Any usage of a "tainted" (= non-secure) variable, be it a function or simply data, will break secure state and prevent further access to Protected functions.
isSecure, taint = issecurevariable([table], variable)
Returns
- isSecure
- "boolean" flag: 1 if variable is secure, nil if it is tainted.
- taint
- string: addon that tainted the variable (possibly nil if not tainted by an addon).
Example 1
local secure = issecurevariable( "JumpOrAscendStart" ); if secure then DEFAULT_CHAT_FRAME:AddMessage("OK! Given variable is secure!"); else DEFAULT_CHAT_FRAME:AddMessage("Given variable tainted. :s"); end
Result
- JumpOrAscendStart is a protected Blizzard-defined function, thus secure. Calling it will not break secure status.
- Message "OK! Given variable is secure!" will get displayed in your chat frame.
Example 2
local Old_UnitName = UnitName function UnitName(unit) return Old_UnitName(unit or "player") end local secure = issecurevariable( "UnitName" ); if secure then DEFAULT_CHAT_FRAME:AddMessage("OK! Given variable is secure!"); else DEFAULT_CHAT_FRAME:AddMessage("Given variable tainted. :s"); end
Result
- UnitName is not a protected Blizzard-defined function, but will still become tainted when hooked.
- Message "Given variable tainted. :s" will get displayed in your chat frame.
Notes
- Returns
1, nil
for undefined variables. This is because an undefined variable is secure since you have not tainted it. - Returns
1, nil
for all untainted variables (i.e. Blizzard variables). - Returns
nil
for any global variable that is hooked insecurely (tainted), even unprotected ones like UnitName(). - Returns
nil
for all user defined global variables. - If a table is passed first, it checks table.variable (e.g.
issecurevariable(PlayerFrame, "Show")
checks PlayerFrame["Show"] or PlayerFrame.Show (they are the same thing)). - Does not work for local variables.