From: Andrey Zelenkov Date: Thu, 3 Nov 2016 15:12:10 +0000 (+0300) Subject: String.prototype.repeat method fix. X-Git-Tag: 0.1.5~21 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=8959e1072c5a9826354606e116aa6716dda9bd13;p=njs.git String.prototype.repeat method fix. Found with afl-fuzz. --- diff --git a/njs/njs_string.c b/njs/njs_string.c index ec0326f3..a95b622f 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -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; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index dd996236..1f97d83f 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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("") },