Bug ID 445985: Incorrect rewriting of JavaScript assignment operators

Last Modified: Jul 12, 2023

Affected Product(s):
BIG-IP APM(all modules)

Known Affected Versions:
11.3.0, 11.4.0, 11.4.1, 11.5.0

Fixed In:
11.6.0, 11.5.1, 11.5.0 HF1, 11.4.1 HF4, 11.4.0 HF8, 11.3.0 HF9

Opened: Jan 24, 2014

Severity: 3-Major

Related Article: K15661

Symptoms

Client-side rewriting may give incorrect results for JavaScript assignment operators if left-hand operand is index expression or dot expression: a[i]-=b; a.value*=c;

Impact

Any JavaScript code with arithmetic assignment operators may work incorrectly.

Conditions

Assignment operators -=, *=, /=, %= are handled incorrectly if the result is assigned to index expression (like a[i]) or dot expression (like a.value). The effect occurs only if JavaScript code is inside 'eval' statement or is generated by write/writeln functions. Rewritten code does not include arithmetic operation which leads to incorrect values.

Workaround

Replace arithmetic assignment operators by pairs of simple assignment and arithmetic operation, for example: a[i] -= b --> a[i] = a[i] - b

Fix Information

Now JavaScript arithmetic assignment operators are handled correctly on the server and on the client.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips