[njs] WebCrypto: fixed retval of crypto.getRandomValues().
Dmitry Volyntsev
xeioex at nginx.com
Fri Apr 28 00:30:04 UTC 2023
details: https://hg.nginx.org/njs/rev/4fa5ddc91108
branches:
changeset: 2095:4fa5ddc91108
user: Dmitry Volyntsev <xeioex at nginx.com>
date: Thu Apr 27 17:28:52 2023 -0700
description:
WebCrypto: fixed retval of crypto.getRandomValues().
Previously, crypto.getRandomValues() did not return any value,
but it has to return its buffer argument.
diffstat:
external/njs_webcrypto_module.c | 13 +++++++++----
src/test/njs_unit_test.c | 4 ++++
2 files changed, 13 insertions(+), 4 deletions(-)
diffs (44 lines):
diff -r a868f772ef16 -r 4fa5ddc91108 external/njs_webcrypto_module.c
--- a/external/njs_webcrypto_module.c Wed Apr 26 21:19:48 2023 -0700
+++ b/external/njs_webcrypto_module.c Thu Apr 27 17:28:52 2023 -0700
@@ -4034,10 +4034,13 @@ static njs_int_t
njs_ext_get_random_values(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
njs_index_t unused, njs_value_t *retval)
{
- njs_int_t ret;
- njs_str_t fill;
-
- ret = njs_vm_value_to_bytes(vm, &fill, njs_arg(args, nargs, 1));
+ njs_int_t ret;
+ njs_str_t fill;
+ njs_value_t *buffer;
+
+ buffer = njs_arg(args, nargs, 1);
+
+ ret = njs_vm_value_to_bytes(vm, &fill, buffer);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
@@ -4052,6 +4055,8 @@ njs_ext_get_random_values(njs_vm_t *vm,
return NJS_ERROR;
}
+ njs_value_assign(retval, buffer);
+
return NJS_OK;
}
diff -r a868f772ef16 -r 4fa5ddc91108 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Wed Apr 26 21:19:48 2023 -0700
+++ b/src/test/njs_unit_test.c Thu Apr 27 17:28:52 2023 -0700
@@ -21923,6 +21923,10 @@ static njs_unit_test_t njs_webcrypto_te
"let condition = bits1 > (mean - 10 * stddev) && bits1 < (mean + 10 * stddev);"
"condition ? true : [buf, nbits, bits1, mean, stddev]"),
njs_str("true") },
+
+ { njs_str("let buf = new Uint32Array(4);"
+ "buf === crypto.getRandomValues(buf)"),
+ njs_str("true") },
};
More information about the nginx-devel
mailing list