[njs] WebCrypto: fixed dangling pointer warning by gcc-12.
Dmitry Volyntsev
xeioex at nginx.com
Tue Sep 6 17:36:52 UTC 2022
details: https://hg.nginx.org/njs/rev/c597cd200724
branches:
changeset: 1947:c597cd200724
user: Dmitry Volyntsev <xeioex at nginx.com>
date: Tue Sep 06 10:09:08 2022 -0700
description:
WebCrypto: fixed dangling pointer warning by gcc-12.
diffstat:
external/njs_webcrypto_module.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diffs (82 lines):
diff -r 506ba9a639b8 -r c597cd200724 external/njs_webcrypto_module.c
--- a/external/njs_webcrypto_module.c Thu Sep 01 18:12:27 2022 -0700
+++ b/external/njs_webcrypto_module.c Tue Sep 06 10:09:08 2022 -0700
@@ -121,7 +121,7 @@ static njs_int_t njs_ext_get_random_valu
static void njs_webcrypto_cleanup_pkey(void *data);
static njs_webcrypto_key_format_t njs_key_format(njs_vm_t *vm,
- njs_value_t *value, njs_str_t *format);
+ njs_value_t *value);
static njs_int_t njs_key_usage(njs_vm_t *vm, njs_value_t *value,
unsigned *mask);
static njs_webcrypto_algorithm_t *njs_key_algorithm(njs_vm_t *vm,
@@ -1649,7 +1649,7 @@ njs_ext_import_key(njs_vm_t *vm, njs_val
unsigned usage;
EVP_PKEY *pkey;
njs_int_t ret;
- njs_str_t key_data, format;
+ njs_str_t key_data;
njs_value_t value, *options;
const u_char *start;
#if (OPENSSL_VERSION_NUMBER < 0x30000000L)
@@ -1669,9 +1669,8 @@ njs_ext_import_key(njs_vm_t *vm, njs_val
pkey = NULL;
- fmt = njs_key_format(vm, njs_arg(args, nargs, 1), &format);
+ fmt = njs_key_format(vm, njs_arg(args, nargs, 1));
if (njs_slow_path(fmt == NJS_KEY_FORMAT_UNKNOWN)) {
- njs_type_error(vm, "unknown key format: \"%V\"", &format);
goto fail;
}
@@ -1746,7 +1745,7 @@ njs_ext_import_key(njs_vm_t *vm, njs_val
break;
default:
- njs_internal_error(vm, "not implemented key format: \"%V\"", &format);
+ njs_internal_error(vm, "not implemented key format: \"jwk\"");
goto fail;
}
@@ -2484,9 +2483,10 @@ njs_webcrypto_cleanup_pkey(void *data)
static njs_webcrypto_key_format_t
-njs_key_format(njs_vm_t *vm, njs_value_t *value, njs_str_t *format)
+njs_key_format(njs_vm_t *vm, njs_value_t *value)
{
njs_int_t ret;
+ njs_str_t format;
njs_uint_t fmt;
njs_value_t string;
@@ -2502,21 +2502,25 @@ njs_key_format(njs_vm_t *vm, njs_value_t
ret = njs_value_to_string(vm, &string, value);
if (njs_slow_path(ret != NJS_OK)) {
- return NJS_ERROR;
+ goto fail;
}
- njs_string_get(&string, format);
+ njs_string_get(&string, &format);
fmt = 0;
while (fmt < sizeof(formats) / sizeof(formats[0])) {
- if (njs_strstr_eq(format, &formats[fmt].name)) {
+ if (njs_strstr_eq(&format, &formats[fmt].name)) {
return formats[fmt].value;
}
fmt++;
}
+fail:
+
+ njs_type_error(vm, "unknown key format: \"%V\"", &format);
+
return NJS_KEY_FORMAT_UNKNOWN;
}
More information about the nginx-devel
mailing list