From 5b76ab8ca973cadd98c9e7cbc099d75c3611fce0 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 21 Sep 2026 16:23:09 -0700 Subject: [PATCH] Webcrypto: clean up AES-CTR allocation failures --- external/njs_webcrypto_module.c | 9 ++++++--- external/qjs_webcrypto_module.c | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/external/njs_webcrypto_module.c b/external/njs_webcrypto_module.c index cc4ef26f..46e3973c 100644 --- a/external/njs_webcrypto_module.c +++ b/external/njs_webcrypto_module.c @@ -1331,7 +1331,8 @@ njs_cipher_aes_ctr(njs_vm_t *vm, njs_str_t *data, njs_webcrypto_key_t *key, blocks = BN_new(); if (njs_slow_path(blocks == NULL)) { njs_webcrypto_error(vm, "BN_new() failed"); - return NJS_ERROR; + ret = NJS_ERROR; + goto fail; } ret = BN_set_word(blocks, njs_ceil_div(data->length, AES_BLOCK_SIZE)); @@ -1351,7 +1352,8 @@ njs_cipher_aes_ctr(njs_vm_t *vm, njs_str_t *data, njs_webcrypto_key_t *key, left = BN_new(); if (njs_slow_path(left == NULL)) { njs_webcrypto_error(vm, "BN_new() failed"); - return NJS_ERROR; + ret = NJS_ERROR; + goto fail; } ret = BN_sub(left, total, ctr); @@ -1365,7 +1367,8 @@ njs_cipher_aes_ctr(njs_vm_t *vm, njs_str_t *data, njs_webcrypto_key_t *key, data->length + EVP_MAX_BLOCK_LENGTH); if (njs_slow_path(dst == NULL)) { njs_vm_memory_error(vm); - return NJS_ERROR; + ret = NJS_ERROR; + goto fail; } ret = BN_cmp(left, blocks); diff --git a/external/qjs_webcrypto_module.c b/external/qjs_webcrypto_module.c index 9a06a50f..3bc1b6a1 100644 --- a/external/qjs_webcrypto_module.c +++ b/external/qjs_webcrypto_module.c @@ -1111,7 +1111,8 @@ qjs_cipher_aes_ctr(JSContext *cx, njs_str_t *data, qjs_webcrypto_key_t *key, blocks = BN_new(); if (blocks == NULL) { qjs_webcrypto_error(cx, "BN_new() failed"); - return JS_EXCEPTION; + ret = JS_EXCEPTION; + goto fail; } if (BN_set_word(blocks, qjs_ceiling_div(data->length, AES_BLOCK_SIZE)) @@ -1131,7 +1132,8 @@ qjs_cipher_aes_ctr(JSContext *cx, njs_str_t *data, qjs_webcrypto_key_t *key, left = BN_new(); if (left == NULL) { qjs_webcrypto_error(cx, "BN_new() failed"); - return JS_EXCEPTION; + ret = JS_EXCEPTION; + goto fail; } if (BN_sub(left, total, ctr) != 1) { -- 2.47.3