aboutsummaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
Diffstat (limited to 'external')
-rw-r--r--external/njs_regex.c34
-rw-r--r--external/njs_webcrypto_module.c9
2 files changed, 38 insertions, 5 deletions
diff --git a/external/njs_regex.c b/external/njs_regex.c
index a118666b..cd45afc0 100644
--- a/external/njs_regex.c
+++ b/external/njs_regex.c
@@ -114,6 +114,11 @@ njs_regex_escape(njs_mp_t *mp, njs_str_t *text)
for (p = start; p < end; p++) {
switch (*p) {
+ case '\\':
+ p += 1;
+
+ break;
+
case '[':
if (p + 1 < end && p[1] == ']') {
p += 1;
@@ -122,6 +127,11 @@ njs_regex_escape(njs_mp_t *mp, njs_str_t *text)
} else if (p + 2 < end && p[1] == '^' && p[2] == ']') {
p += 2;
anychars += 1;
+
+ } else {
+ while (p < end && *p != ']') {
+ p += 1;
+ }
}
break;
@@ -146,6 +156,15 @@ njs_regex_escape(njs_mp_t *mp, njs_str_t *text)
for (p = start; p < end; p++) {
switch (*p) {
+ case '\\':
+ *dst++ = *p;
+ if (p + 1 < end) {
+ p += 1;
+ *dst++ = *p;
+ }
+
+ continue;
+
case '[':
if (p + 1 < end && p[1] == ']') {
p += 1;
@@ -156,12 +175,27 @@ njs_regex_escape(njs_mp_t *mp, njs_str_t *text)
p += 2;
dst = njs_cpymem(dst, "[\\s\\S]", 6);
continue;
+
+ } else {
+ *dst++ = *p++; /* Copy '['. */
+
+ while (p < end && *p != ']') {
+ *dst++ = *p++;
+ }
+
+ if (p < end) {
+ *dst++ = *p; /* Copy ']'. */
+ }
+
+ continue;
}
}
*dst++ = *p;
}
+ njs_assert(dst == text->start + text->length);
+
return NJS_OK;
#else
diff --git a/external/njs_webcrypto_module.c b/external/njs_webcrypto_module.c
index d9b05d09..b9a74353 100644
--- a/external/njs_webcrypto_module.c
+++ b/external/njs_webcrypto_module.c
@@ -2593,7 +2593,6 @@ static njs_int_t
njs_ext_generate_key(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
njs_index_t unused, njs_value_t *retval)
{
- int nid;
unsigned usage;
njs_int_t ret;
njs_bool_t extractable;
@@ -2730,8 +2729,7 @@ njs_ext_generate_key(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
case NJS_ALGORITHM_ECDSA:
case NJS_ALGORITHM_ECDH:
- nid = 0;
- ret = njs_algorithm_curve(vm, aobject, &nid);
+ ret = njs_algorithm_curve(vm, aobject, &key->u.a.curve);
if (njs_slow_path(ret == NJS_ERROR)) {
goto fail;
}
@@ -2747,7 +2745,7 @@ njs_ext_generate_key(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
goto fail;
}
- if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) <= 0) {
+ if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, key->u.a.curve) <= 0) {
njs_webcrypto_error(vm, "EVP_PKEY_CTX_set_ec_paramgen_curve_nid() "
"failed");
goto fail;
@@ -4854,7 +4852,8 @@ njs_algorithm_hash(njs_vm_t *vm, njs_value_t *options,
if (njs_value_is_object(options)) {
val = njs_vm_object_prop(vm, options, &string_hash, &value);
if (val == NULL) {
- return NJS_HASH_SHA256;
+ *hash = NJS_HASH_SHA256;
+ return NJS_OK;
}
} else {