]> git.kaiwu.me - njs.git/commitdiff
QuickJS: fixed key usage processing with invalid values in WebCrypto.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 13 Feb 2025 02:12:38 +0000 (18:12 -0800)
committerDmitry Volyntsev <xeioexception@gmail.com>
Wed, 19 Feb 2025 00:30:00 +0000 (16:30 -0800)
external/qjs_webcrypto_module.c

index cc654c0ac7981a3adc084af36427ed7a7e5b287f..6e820887f74bfebd1385d2a3153f1ecd06ea4fb1 100644 (file)
@@ -4637,10 +4637,17 @@ qjs_key_usage(JSContext *cx, JSValue value, unsigned *mask)
         for (e = &qjs_webcrypto_usage[0]; e->name.length != 0; e++) {
             if (njs_strstr_eq(&s, &e->name)) {
                 *mask |= e->value;
-                break;
+                goto done;
             }
         }
 
+        JS_ThrowTypeError(cx, "unknown key usage: \"%.*s\"", (int) s.length,
+                          s.start);
+        JS_FreeCString(cx, (char *) s.start);
+        return JS_EXCEPTION;
+
+done:
+
         JS_FreeCString(cx, (char *) s.start);
     }