proxy_cctx_bugs.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function test1() {
  6. var func3 = function ()
  7. {
  8. var sc4 = WScript.LoadScript('function test(){ obj2.prop4 = {needMarshal:true}; }', 'samethread');
  9. var obj1=new Proxy({}, {set:function(target, property, value) { Reflect.set(value);}})
  10. sc4.obj2 = obj1;
  11. sc4.test();
  12. obj1.prop4 = {needMarshal:false};
  13. obj1.prop5 = {needMarshal:false};
  14. };
  15. func3();
  16. var bug = new Proxy(new Array(1), {has: () => true});
  17. var a = bug.concat();
  18. if (a[0] !== undefined || a.length !== 1) {
  19. print("failed");
  20. } else {
  21. print("passed");
  22. }
  23. }
  24. function test2() {
  25. function makeArrayLength() {
  26. }
  27. function leaf() {
  28. }
  29. var obj1 = {};
  30. var arrObj0 = {};
  31. var func1 = function () {
  32. };
  33. obj1.method0 = func1;
  34. obj1.method1 = func1;
  35. var protoObj1 = Object();
  36. var proxyHandler = {};
  37. var v0 = new Proxy(obj1.method0, proxyHandler);
  38. var sc9 = WScript.LoadScript('', 'samethread');
  39. sc9.arrObj0 = arrObj0;
  40. sc9.obj1 = obj1;
  41. sc9.protoObj1 = protoObj1;
  42. sc9.v0 = v0;
  43. sc9.makeArrayLength = makeArrayLength;
  44. sc9.leaf = leaf;
  45. var sc9_cctx = sc9.WScript.LoadScript('function test() {var b = 1; arrObj0.length= makeArrayLength((arrObj0.length != arrObj0.prop4));\n var d = obj1.method1.call(protoObj1 , (((new v0((protoObj1.length >>>= -866043558),(protoObj1.prop0 = 1),leaf,leaf)) , (b ? 1 : 16678541)) & (typeof(arrObj0.prop4) == \'number\') ), ((1) * (d %= (1 * obj1.length - b)) + obj1.method0.call(arrObj0 , ("a" instanceof ((typeof RegExp == \'function\' ) ? RegExp : Object)), (\'prop0\' in arrObj0), leaf, leaf)), leaf, leaf);\n var uniqobj21 = Object.create(arrObj0);\n arrObj0.length= makeArrayLength(((1 ) % -520343586));\n ;\n }');
  46. sc9_cctx.test();
  47. }
  48. function test3() {
  49. var obj1 = {};
  50. var arrObj0 = {};
  51. var x=1
  52. var proxyHandler = {};
  53. proxyHandler['get'] = function () {};
  54. proxyHandler['defineProperty'] = function (target, property, descriptor) {
  55. return Reflect.defineProperty(target, property, descriptor);
  56. };
  57. proxyHandler['isExtensible'] = function (target) {
  58. arrObj0.prop0;
  59. arrObj0 = new Proxy(arrObj0, proxyHandler);
  60. return Reflect.isExtensible(target);
  61. };
  62. arrObj0 = new Proxy(arrObj0, proxyHandler);
  63. arrObj0 = new Proxy(arrObj0, proxyHandler);
  64. do {
  65. var sc3 = WScript.LoadScript('function test(){arrObj0.length = arrObj0[obj1];}', 'samethread');
  66. sc3.obj1 = obj1;
  67. sc3.arrObj0 = arrObj0;
  68. sc3.test();
  69. } while (x--);
  70. }
  71. function test4() {
  72. var func3 = function () { };
  73. var ary = Array();
  74. var proxyHandler = {};
  75. var ownkeys = Reflect.ownKeys(ary);
  76. proxyHandler['ownKeys'] = function () {
  77. func3() == 0;
  78. return ownkeys;
  79. };
  80. ary = new Proxy(ary, proxyHandler);
  81. var sc2 = WScript.LoadScript('function test(){for (var x in ary);}', 'samethread');
  82. sc2.ary = ary;
  83. sc2.func3 = func3;
  84. sc2.test();
  85. }
  86. test1();
  87. test2();
  88. test3();
  89. test4();