summaryrefslogtreecommitdiff
path: root/quickjs-libc.c
diff options
context:
space:
mode:
authorCharlie Gordon <github@chqrlie.org>2024-03-03 14:42:01 +0100
committerCharlie Gordon <github@chqrlie.org>2024-03-03 14:42:01 +0100
commit1a5333bcb322d289eb8d48ccdd5f4dd724bf5c5d (patch)
treea35458350b75e579731f8611e4d596aae728f2ba /quickjs-libc.c
parente17cb9fc7aac2432bbefeec9a31e186329e511b0 (diff)
downloadquickjs-1a5333bcb322d289eb8d48ccdd5f4dd724bf5c5d.tar.gz
quickjs-1a5333bcb322d289eb8d48ccdd5f4dd724bf5c5d.zip
prevent 0 length allocation in `js_worker_postMessage`
Diffstat (limited to 'quickjs-libc.c')
-rw-r--r--quickjs-libc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/quickjs-libc.c b/quickjs-libc.c
index 01c9db4..b00dc16 100644
--- a/quickjs-libc.c
+++ b/quickjs-libc.c
@@ -3527,10 +3527,12 @@ static JSValue js_worker_postMessage(JSContext *ctx, JSValueConst this_val,
memcpy(msg->data, data, data_len);
msg->data_len = data_len;
- msg->sab_tab = malloc(sizeof(msg->sab_tab[0]) * sab_tab_len);
- if (!msg->sab_tab)
- goto fail;
- memcpy(msg->sab_tab, sab_tab, sizeof(msg->sab_tab[0]) * sab_tab_len);
+ if (sab_tab_len > 0) {
+ msg->sab_tab = malloc(sizeof(msg->sab_tab[0]) * sab_tab_len);
+ if (!msg->sab_tab)
+ goto fail;
+ memcpy(msg->sab_tab, sab_tab, sizeof(msg->sab_tab[0]) * sab_tab_len);
+ }
msg->sab_tab_len = sab_tab_len;
js_free(ctx, data);