]> git.kaiwu.me - njs.git/commitdiff
String.prototype.repeat method fix.
authorAndrey Zelenkov <zelenkov@nginx.com>
Thu, 3 Nov 2016 15:12:10 +0000 (18:12 +0300)
committerAndrey Zelenkov <zelenkov@nginx.com>
Thu, 3 Nov 2016 15:12:10 +0000 (18:12 +0300)
Found with afl-fuzz.

njs/njs_string.c
njs/test/njs_unit_test.c

index ec0326f30e6f86d39a0f81b47735b22d1d146f32..a95b622f6751681ee583aba3b4905d4d0ccccba6 100644 (file)
@@ -1756,6 +1756,11 @@ njs_string_prototype_repeat(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
 
     (void) njs_string_prop(&string, &args[0]);
 
+    if (string.size == 0) {
+        vm->retval = njs_string_empty;
+        return NXT_OK;
+    }
+
     if (nargs > 1) {
         max = NJS_STRING_MAX_LENGTH / string.size;
         n = args[1].data.u.number;
index dd996236c27134018f2dc369d4a08c30bda4a5cb..1f97d83f704bbad0e2a88814b37fe78d76dc78b4 100644 (file)
@@ -3618,6 +3618,9 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("'абв'.repeat(3)"),
       nxt_string("абвабвабв") },
 
+    { nxt_string("''.repeat(3)"),
+      nxt_string("") },
+
     { nxt_string("'abc'.repeat(0)"),
       nxt_string("") },