]> git.kaiwu.me - njs.git/commit
ArrayBuffer: fix copy-on-write for external data
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 30 Oct 2026 01:53:23 +0000 (18:53 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Mon, 2 Nov 2026 14:42:35 +0000 (06:42 -0800)
commit8fef12ae007c9868670fb71c9995706a908e8c7b
treeae8938547d467c0b0950671a72a1fbabda2cfec6
parent87e2d83a53d14b4d56450628642bf3d2d8afb9d1
ArrayBuffer: fix copy-on-write for external data

Previously, writes to ArrayBuffers returned by nginx body accessors
or raw exportKey() could modify the request body or key material.

Now, njs_vm_value_array_buffer_set() takes a shared argument, like
other creation APIs.  Shared data uses copy-on-write; private
WebCrypto results and joined fetch response bodies remain writable
without copying.

The issue was introduced in f6485009 (0.5.1).
external/njs_webcrypto_module.c
nginx/ngx_http_js_module.c
nginx/ngx_js_fetch.c
src/njs.h
src/njs_vm.c
src/test/njs_externals_test.c
src/test/njs_unit_test.c