Skip to content

fix(oUF_AuraWatch): coerce all secret-value aura fields to prevent 'script ran too long' in Midnight 12.0 - #1868

Closed
mjodheim wants to merge 1 commit into
tukui-org:mainfrom
mjodheim:fix/secret-value-coerce-aura-fields
Closed

fix(oUF_AuraWatch): coerce all secret-value aura fields to prevent 'script ran too long' in Midnight 12.0#1868
mjodheim wants to merge 1 commit into
tukui-org:mainfrom
mjodheim:fix/secret-value-coerce-aura-fields

Conversation

@mjodheim

@mjodheim mjodheim commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

In Midnight 12.0, secret auras return secret values for several fields (applications, castByPlayer, spellID, sourceUnit). The existing fix only handled count and castByPlayer, but spellID and source were still stored raw on button frames, causing taint propagation into the FilterIcons loop.

When tainted values enter the loop's control flow, Blizzard loses execution budget tracking, causing 'script ran too long' errors.

Changes:

  • Coerce spellID0 if secret (prevents tainted table lookups in element.watched)
  • Coerce sourcenil if secret (simplifies button.isPlayer to direct comparison)
  • Also coerce count0 and castByPlayernil for completeness (already present in some forks)
  • Removes redundant oUF:NotSecretValue(source) wrapper since source is already nil-safe

Testing: Used in retail Midnight (TOC 120007), all four coercions verified necessary to prevent the error.

…cript ran too long'

In Midnight 12.0, secret auras return secret values for several fields
(applications, castByPlayer, spellID, sourceUnit). The existing fix only
handled count and castByPlayer, but spellID and source were still stored
raw on button frames, causing taint propagation into the FilterIcons loop.

When tainted values enter the loop's control flow, Blizzard loses execution
budget tracking, causing 'script ran too long' errors. Coerce all four
potentially-secret fields to safe defaults immediately after UnpackAuraData:

- count (applications) -> 0 if secret
- castByPlayer -> nil if secret
- spellID -> 0 if secret (prevents tainted table lookups in element.watched)
- source -> nil if secret (simplifies button.isPlayer to direct comparison)
@kodewdle

Copy link
Copy Markdown
Member

this is irrelevant in 12.1 - closing the issue. thanks tho 🌼

@kodewdle kodewdle closed this Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants