]> git.kaiwu.me - njs.git/commitdiff
Segfaults in Date have been fixed.
authorIgor Sysoev <igor@sysoev.ru>
Tue, 11 Oct 2016 10:01:41 +0000 (13:01 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 11 Oct 2016 10:01:41 +0000 (13:01 +0300)
njs/njs_date.c
njs/test/njs_unit_test.c

index 20ec407a616e171610eb040c2dbb0402b4024972..9cb2a59161045def832f07f896a0c7d2b1d5b521 100644 (file)
@@ -108,6 +108,7 @@ njs_date_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
 
             for (i = 1; i < n; i++) {
                 if (!njs_is_numeric(&args[i])) {
+                    vm->frame->trap_scratch.data.u.value = &args[i];
                     return NJS_TRAP_NUMBER_ARG;
                 }
 
@@ -186,6 +187,7 @@ njs_date_utc(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
 
         for (i = 1; i < n; i++) {
             if (!njs_is_numeric(&args[i])) {
+                vm->frame->trap_scratch.data.u.value = &args[i];
                 return NJS_TRAP_NUMBER_ARG;
             }
 
index d7114de844460bc44f4fd8cdafc7e0a7f53309ad..c0e700fc2ffef071416ee3da16d0b202fde43543 100644 (file)
@@ -5030,6 +5030,12 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("var d = new Date(); d.__proto__ === Date.prototype"),
       nxt_string("true") },
 
+    { nxt_string("new Date(eval)"),
+      nxt_string("Invalid Date") },
+
+    { nxt_string("Date.UTC(eval)"),
+      nxt_string("NaN") },
+
     { nxt_string("Date.name"),
       nxt_string("Date") },