From 3a1864517efe402b71685b75ebb01436052b5983 Mon Sep 17 00:00:00 2001 From: Kris Zyp Date: Thu, 2 Jan 2025 12:38:49 -0700 Subject: [PATCH] Enforce safe access to the user shared array buffers --- read.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/read.js b/read.js index 0587d5501..7148d50f4 100644 --- a/read.js +++ b/read.js @@ -401,17 +401,23 @@ export function addReadMethods( keySize = this.writeKey(id, keyBytes, 4); } }; - setKeyBytes(); - let sharedBuffer = getUserSharedBuffer( - env.address, - keySize, - defaultBuffer, - options?.callback, - ); - sharedBuffer.notify = () => { + let userSharedBuffers = + this._userSharedBuffers || (this._userSharedBuffers = new Map()); + let sharedBuffer = userSharedBuffers.get(id.toString()); + if (!sharedBuffer) { setKeyBytes(); - return notifyUserCallbacks(env.address, keySize); - }; + sharedBuffer = getUserSharedBuffer( + env.address, + keySize, + defaultBuffer, + options?.callback, + ); + userSharedBuffers.set(id.toString(), sharedBuffer); + sharedBuffer.notify = () => { + setKeyBytes(); + return notifyUserCallbacks(env.address, keySize); + }; + } return sharedBuffer; },