Skip to content

Commit 018c6d0

Browse files
Fixed regexp undefined value of captured group.
Found by OSS-Fuzz.
1 parent 4562abc commit 018c6d0

File tree

2 files changed

+5
-17
lines changed

2 files changed

+5
-17
lines changed

src/njs_regexp.c

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,24 +1148,12 @@ njs_regexp_exec_result(njs_vm_t *vm, njs_value_t *r, njs_utf8_t utf8,
11481148
static void
11491149
njs_regexp_exec_result_free(njs_vm_t *vm, njs_array_t *result)
11501150
{
1151-
njs_uint_t n;
1152-
njs_value_t *start;
11531151
njs_flathsh_t *hash;
11541152
njs_object_prop_t *prop;
11551153
njs_flathsh_elt_t *elt;
11561154
njs_flathsh_each_t lhe;
11571155
njs_flathsh_query_t lhq;
11581156

1159-
if (result->object.fast_array) {
1160-
start = result->start;
1161-
1162-
for (n = 0; n < result->length; n++) {
1163-
if (start[n].type == NJS_STRING) {
1164-
njs_mp_free(vm->mem_pool, start[n].string.data);
1165-
}
1166-
}
1167-
}
1168-
11691157
njs_flathsh_each_init(&lhe, &njs_object_hash_proto);
11701158

11711159
hash = &result->object.hash;
@@ -1581,7 +1569,7 @@ njs_regexp_prototype_symbol_split(njs_vm_t *vm, njs_value_t *args,
15811569
njs_value_t r, z, this, s_lvalue, setval, constructor;
15821570
njs_object_t *object;
15831571
const u_char *start, *end;
1584-
njs_string_prop_t s, sv;
1572+
njs_string_prop_t s;
15851573
njs_value_t arguments[2];
15861574

15871575
rx = njs_argument(args, 0);
@@ -1771,10 +1759,7 @@ njs_regexp_prototype_symbol_split(njs_vm_t *vm, njs_value_t *args,
17711759
return NJS_ERROR;
17721760
}
17731761

1774-
(void) njs_string_prop(vm, &sv, retval);
1775-
1776-
ret = njs_array_string_add(vm, array, sv.start, sv.size,
1777-
sv.length);
1762+
ret = njs_array_add(vm, array, retval);
17781763
if (njs_slow_path(ret != NJS_OK)) {
17791764
return ret;
17801765
}

src/test/njs_unit_test.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9791,6 +9791,9 @@ static njs_unit_test_t njs_test[] =
97919791
{ njs_str("'myCamelCaseString'.split(/(?=[A-Z])/)"),
97929792
njs_str("my,Camel,Case,String") },
97939793

9794+
{ njs_str("var r = ' a'.split(/|()/); r+'|'+typeof r[0]+':'+typeof r[1]+':'+typeof r[2]"),
9795+
njs_str(" ,,a|string:undefined:string") },
9796+
97949797
{ njs_str("'мояВерблюжьяСтрока'.split(/(?=[А-Я])/)"),
97959798
njs_str("моя,Верблюжья,Строка") },
97969799

0 commit comments

Comments
 (0)