]> git.kaiwu.me - njs.git/commitdiff
WebCrypto: fixed dangling pointer warning by gcc-12.
authorDmitry Volyntsev <xeioex@nginx.com>
Tue, 6 Sep 2022 17:09:08 +0000 (10:09 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Tue, 6 Sep 2022 17:09:08 +0000 (10:09 -0700)
external/njs_webcrypto_module.c

index dc9aa1b6dc3261f11f03f8a36adb72b7eb5109ac..38a00d7a2616fc802cc8b02dc4e33e4a88340d32 100644 (file)
@@ -121,7 +121,7 @@ static njs_int_t njs_ext_get_random_values(njs_vm_t *vm, njs_value_t *args,
 
 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_value_t *args, njs_uint_t nargs,
     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_value_t *args, njs_uint_t nargs,
 
     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_value_t *args, njs_uint_t nargs,
         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 *value, njs_str_t *format)
 
     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;
 }