Fandom

WoWWiki

API issecurevariable

104,642pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

WoW API < issecurevariable

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)

ReturnsEdit

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 1Edit

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

ResultEdit

  • 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 2Edit

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

ResultEdit

  • 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.

NotesEdit

  • 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.

Also on Fandom

Random Wiki