@tybys/wasm-util 0.10.2 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/wasm-util.js CHANGED
@@ -1207,8 +1207,18 @@
1207
1207
  const _memory = new WeakMap();
1208
1208
  const _wasi = new WeakMap();
1209
1209
  const _fs = new WeakMap();
1210
- function getMemory(wasi) {
1211
- return _memory.get(wasi);
1210
+ function ensureMemoryFor(memory, end) {
1211
+ let buffer = memory.buffer;
1212
+ if (end > buffer.byteLength) {
1213
+ memory.grow(0);
1214
+ buffer = memory.buffer;
1215
+ }
1216
+ return buffer;
1217
+ }
1218
+ function getMemory(wasi, end = 0) {
1219
+ const memory = _memory.get(wasi);
1220
+ ensureMemoryFor(memory, end);
1221
+ return memory;
1212
1222
  }
1213
1223
  function getFs(wasi) {
1214
1224
  const fs = _fs.get(wasi);
@@ -1337,9 +1347,10 @@
1337
1347
  if (argv === 0 || argv_buf === 0) {
1338
1348
  return 28 /* WasiErrno.EINVAL */;
1339
1349
  }
1340
- const { HEAPU8, view } = getMemory(this);
1341
1350
  const wasi = _wasi.get(this);
1342
1351
  const args = wasi.args;
1352
+ const argsSize = encoder.encode(args.join('\0') + '\0').length;
1353
+ const { HEAPU8, view } = getMemory(this, Math.max(argv + args.length * 4, argv_buf + argsSize));
1343
1354
  for (let i = 0; i < args.length; ++i) {
1344
1355
  const arg = args[i];
1345
1356
  view.setInt32(argv, argv_buf, true);
@@ -1356,7 +1367,7 @@
1356
1367
  if (argc === 0 || argv_buf_size === 0) {
1357
1368
  return 28 /* WasiErrno.EINVAL */;
1358
1369
  }
1359
- const { view } = getMemory(this);
1370
+ const { view } = getMemory(this, Math.max(argc + 4, argv_buf_size + 4));
1360
1371
  const wasi = _wasi.get(this);
1361
1372
  const args = wasi.args;
1362
1373
  view.setUint32(argc, args.length, true);
@@ -1369,9 +1380,10 @@
1369
1380
  if (environ === 0 || environ_buf === 0) {
1370
1381
  return 28 /* WasiErrno.EINVAL */;
1371
1382
  }
1372
- const { HEAPU8, view } = getMemory(this);
1373
1383
  const wasi = _wasi.get(this);
1374
1384
  const env = wasi.env;
1385
+ const envSize = encoder.encode(env.join('\0') + '\0').length;
1386
+ const { HEAPU8, view } = getMemory(this, Math.max(environ + env.length * 4, environ_buf + envSize));
1375
1387
  for (let i = 0; i < env.length; ++i) {
1376
1388
  const pair = env[i];
1377
1389
  view.setInt32(environ, environ_buf, true);
@@ -1388,7 +1400,7 @@
1388
1400
  if (len === 0 || buflen === 0) {
1389
1401
  return 28 /* WasiErrno.EINVAL */;
1390
1402
  }
1391
- const { view } = getMemory(this);
1403
+ const { view } = getMemory(this, Math.max(len + 4, buflen + 4));
1392
1404
  const wasi = _wasi.get(this);
1393
1405
  view.setUint32(len, wasi.env.length, true);
1394
1406
  view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true);
@@ -1399,7 +1411,7 @@
1399
1411
  if (resolution === 0) {
1400
1412
  return 28 /* WasiErrno.EINVAL */;
1401
1413
  }
1402
- const { view } = getMemory(this);
1414
+ const { view } = getMemory(this, resolution + 8);
1403
1415
  switch (id) {
1404
1416
  case 0 /* WasiClockid.REALTIME */:
1405
1417
  view.setBigUint64(resolution, BigInt(1000000), true);
@@ -1417,7 +1429,7 @@
1417
1429
  if (time === 0) {
1418
1430
  return 28 /* WasiErrno.EINVAL */;
1419
1431
  }
1420
- const { view } = getMemory(this);
1432
+ const { view } = getMemory(this, time + 8);
1421
1433
  switch (id) {
1422
1434
  case 0 /* WasiClockid.REALTIME */:
1423
1435
  view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true);
@@ -1445,7 +1457,7 @@
1445
1457
  }
1446
1458
  const wasi = _wasi.get(this);
1447
1459
  const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0));
1448
- const { view } = getMemory(this);
1460
+ const { view } = getMemory(this, fdstat + 24);
1449
1461
  view.setUint16(fdstat, fileDescriptor.type, true);
1450
1462
  view.setUint16(fdstat + 2, 0, true);
1451
1463
  view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true);
@@ -1486,7 +1498,7 @@
1486
1498
  }
1487
1499
  if (fileDescriptor.preopen !== 1)
1488
1500
  return 28 /* WasiErrno.EINVAL */;
1489
- const { view } = getMemory(this);
1501
+ const { view } = getMemory(this, prestat + 8);
1490
1502
  // preopen type is dir(0)
1491
1503
  view.setUint32(prestat, 0, true);
1492
1504
  view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true);
@@ -1506,7 +1518,7 @@
1506
1518
  const size = buffer.length;
1507
1519
  if (size > path_len)
1508
1520
  return 42 /* WasiErrno.ENOBUFS */;
1509
- const { HEAPU8 } = getMemory(this);
1521
+ const { HEAPU8 } = getMemory(this, path + size);
1510
1522
  HEAPU8.set(buffer, path);
1511
1523
  return 0 /* WasiErrno.ESUCCESS */;
1512
1524
  });
@@ -1520,7 +1532,7 @@
1520
1532
  const wasi = _wasi.get(this);
1521
1533
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0));
1522
1534
  const r = fileDescriptor.seek(offset, whence);
1523
- const { view } = getMemory(this);
1535
+ const { view } = getMemory(this, newOffset + 8);
1524
1536
  view.setBigUint64(newOffset, r, true);
1525
1537
  return 0 /* WasiErrno.ESUCCESS */;
1526
1538
  });
@@ -1528,7 +1540,7 @@
1528
1540
  const wasi = _wasi.get(this);
1529
1541
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0));
1530
1542
  const pos = BigInt(fileDescriptor.pos);
1531
- const { view } = getMemory(this);
1543
+ const { view } = getMemory(this, Number(offset) + 8);
1532
1544
  view.setBigUint64(Number(offset), pos, true);
1533
1545
  return 0 /* WasiErrno.ESUCCESS */;
1534
1546
  });
@@ -1541,7 +1553,7 @@
1541
1553
  if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) {
1542
1554
  return 28 /* WasiErrno.EINVAL */;
1543
1555
  }
1544
- const { view } = getMemory(this);
1556
+ const { view } = getMemory(this, Math.max(in_ptr + nsubscriptions * 48, out_ptr + nsubscriptions * 32, nevents + 4));
1545
1557
  view.setUint32(nevents, 0, true);
1546
1558
  let i = 0;
1547
1559
  let timer_userdata = BigInt(0);
@@ -1660,7 +1672,7 @@
1660
1672
  return 28 /* WasiErrno.EINVAL */;
1661
1673
  }
1662
1674
  buf_len = Number(buf_len);
1663
- const { HEAPU8, view } = getMemory(this);
1675
+ const { HEAPU8, view } = getMemory(this, buf + buf_len);
1664
1676
  if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) ||
1665
1677
  (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) {
1666
1678
  for (let i = buf; i < buf + buf_len; ++i) {
@@ -1682,7 +1694,7 @@
1682
1694
  return 28 /* WasiErrno.EINVAL */;
1683
1695
  }
1684
1696
  buf_len = Number(buf_len);
1685
- const { view } = getMemory(this);
1697
+ const { view } = getMemory(this, buf + buf_len);
1686
1698
  for (let i = buf; i < buf + buf_len; ++i) {
1687
1699
  view.setUint8(i, Math.floor(Math.random() * 256));
1688
1700
  }
@@ -1775,7 +1787,7 @@
1775
1787
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0));
1776
1788
  const fs = getFs(this);
1777
1789
  const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true });
1778
- const { view } = getMemory(this);
1790
+ const { view } = getMemory(this, buf + 64);
1779
1791
  toFileStat(view, buf, stat);
1780
1792
  return 0 /* WasiErrno.ESUCCESS */;
1781
1793
  }, async function fd_filestat_get(fd, buf) {
@@ -1786,7 +1798,7 @@
1786
1798
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0));
1787
1799
  const h = fileDescriptor.fd;
1788
1800
  const stat = await h.stat({ bigint: true });
1789
- const { view } = getMemory(this);
1801
+ const { view } = getMemory(this, buf + 64);
1790
1802
  toFileStat(view, buf, stat);
1791
1803
  return 0 /* WasiErrno.ESUCCESS */;
1792
1804
  }, ['i32', 'i32'], ['i32']);
@@ -1837,7 +1849,7 @@
1837
1849
  if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) {
1838
1850
  return 28 /* WasiErrno.EINVAL */;
1839
1851
  }
1840
- const { HEAPU8, view } = getMemory(this);
1852
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1841
1853
  const wasi = _wasi.get(this);
1842
1854
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0));
1843
1855
  if (!iovslen) {
@@ -1873,7 +1885,7 @@
1873
1885
  if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) {
1874
1886
  return 28 /* WasiErrno.EINVAL */;
1875
1887
  }
1876
- const { HEAPU8, view } = getMemory(this);
1888
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1877
1889
  const wasi = _wasi.get(this);
1878
1890
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0));
1879
1891
  if (!iovslen) {
@@ -1902,7 +1914,7 @@
1902
1914
  if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) {
1903
1915
  return 28 /* WasiErrno.EINVAL */;
1904
1916
  }
1905
- const { HEAPU8, view } = getMemory(this);
1917
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1906
1918
  const wasi = _wasi.get(this);
1907
1919
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0));
1908
1920
  if (!iovslen) {
@@ -1925,7 +1937,7 @@
1925
1937
  if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) {
1926
1938
  return 28 /* WasiErrno.EINVAL */;
1927
1939
  }
1928
- const { HEAPU8, view } = getMemory(this);
1940
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1929
1941
  const wasi = _wasi.get(this);
1930
1942
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0));
1931
1943
  if (!iovslen) {
@@ -1948,7 +1960,7 @@
1948
1960
  if ((iovs === 0 && iovslen) || size === 0) {
1949
1961
  return 28 /* WasiErrno.EINVAL */;
1950
1962
  }
1951
- const { HEAPU8, view } = getMemory(this);
1963
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1952
1964
  const wasi = _wasi.get(this);
1953
1965
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0));
1954
1966
  if (!iovslen) {
@@ -1995,7 +2007,7 @@
1995
2007
  if ((iovs === 0 && iovslen) || size === 0) {
1996
2008
  return 28 /* WasiErrno.EINVAL */;
1997
2009
  }
1998
- const { HEAPU8, view } = getMemory(this);
2010
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
1999
2011
  const wasi = _wasi.get(this);
2000
2012
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0));
2001
2013
  if (!iovslen) {
@@ -2039,7 +2051,7 @@
2039
2051
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0));
2040
2052
  const fs = getFs(this);
2041
2053
  const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true });
2042
- const { HEAPU8, view } = getMemory(this);
2054
+ const { HEAPU8, view } = getMemory(this, Math.max(buf + buf_len, bufused + 4));
2043
2055
  let bufferUsed = 0;
2044
2056
  for (let i = Number(cookie); i < entries.length; i++) {
2045
2057
  const nameData = encoder.encode(entries[i].name);
@@ -2089,7 +2101,7 @@
2089
2101
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0));
2090
2102
  const fs = getFs(this);
2091
2103
  const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true });
2092
- const { HEAPU8, view } = getMemory(this);
2104
+ const { HEAPU8, view } = getMemory(this, Math.max(buf + buf_len, bufused + 4));
2093
2105
  let bufferUsed = 0;
2094
2106
  for (let i = Number(cookie); i < entries.length; i++) {
2095
2107
  const nameData = encoder.encode(entries[i].name);
@@ -2157,7 +2169,7 @@
2157
2169
  if ((iovs === 0 && iovslen) || size === 0) {
2158
2170
  return 28 /* WasiErrno.EINVAL */;
2159
2171
  }
2160
- const { HEAPU8, view } = getMemory(this);
2172
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
2161
2173
  const wasi = _wasi.get(this);
2162
2174
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0));
2163
2175
  if (!iovslen) {
@@ -2187,7 +2199,7 @@
2187
2199
  if ((iovs === 0 && iovslen) || size === 0) {
2188
2200
  return 28 /* WasiErrno.EINVAL */;
2189
2201
  }
2190
- const { HEAPU8, view } = getMemory(this);
2202
+ const { HEAPU8, view } = getMemory(this, Math.max(iovs + Number(iovslen) * 8, size + 4));
2191
2203
  const wasi = _wasi.get(this);
2192
2204
  const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0));
2193
2205
  if (!iovslen) {
@@ -2217,7 +2229,7 @@
2217
2229
  if (path === 0) {
2218
2230
  return 28 /* WasiErrno.EINVAL */;
2219
2231
  }
2220
- const { HEAPU8 } = getMemory(this);
2232
+ const { HEAPU8 } = getMemory(this, path + path_len);
2221
2233
  const wasi = _wasi.get(this);
2222
2234
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0));
2223
2235
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2231,7 +2243,7 @@
2231
2243
  if (path === 0) {
2232
2244
  return 28 /* WasiErrno.EINVAL */;
2233
2245
  }
2234
- const { HEAPU8 } = getMemory(this);
2246
+ const { HEAPU8 } = getMemory(this, path + path_len);
2235
2247
  const wasi = _wasi.get(this);
2236
2248
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0));
2237
2249
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2247,7 +2259,7 @@
2247
2259
  if (path === 0 || filestat === 0) {
2248
2260
  return 28 /* WasiErrno.EINVAL */;
2249
2261
  }
2250
- const { HEAPU8, view } = getMemory(this);
2262
+ const { HEAPU8, view } = getMemory(this, Math.max(path + path_len, filestat + 64));
2251
2263
  const wasi = _wasi.get(this);
2252
2264
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0));
2253
2265
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2269,7 +2281,7 @@
2269
2281
  if (path === 0 || filestat === 0) {
2270
2282
  return 28 /* WasiErrno.EINVAL */;
2271
2283
  }
2272
- const { HEAPU8, view } = getMemory(this);
2284
+ const { HEAPU8, view } = getMemory(this, Math.max(path + path_len, filestat + 64));
2273
2285
  const wasi = _wasi.get(this);
2274
2286
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0));
2275
2287
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2290,7 +2302,7 @@
2290
2302
  path_len = Number(path_len);
2291
2303
  if (path === 0)
2292
2304
  return 28 /* WasiErrno.EINVAL */;
2293
- const { HEAPU8 } = getMemory(this);
2305
+ const { HEAPU8 } = getMemory(this, path + path_len);
2294
2306
  const wasi = _wasi.get(this);
2295
2307
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0));
2296
2308
  if (validateFstFlagsOrReturn(fst_flags)) {
@@ -2311,7 +2323,7 @@
2311
2323
  path_len = Number(path_len);
2312
2324
  if (path === 0)
2313
2325
  return 28 /* WasiErrno.EINVAL */;
2314
- const { HEAPU8 } = getMemory(this);
2326
+ const { HEAPU8 } = getMemory(this, path + path_len);
2315
2327
  const wasi = _wasi.get(this);
2316
2328
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0));
2317
2329
  if (validateFstFlagsOrReturn(fst_flags)) {
@@ -2346,7 +2358,7 @@
2346
2358
  oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0));
2347
2359
  newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0));
2348
2360
  }
2349
- const { HEAPU8 } = getMemory(this);
2361
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2350
2362
  const fs = getFs(this);
2351
2363
  const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags);
2352
2364
  const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)));
@@ -2370,7 +2382,7 @@
2370
2382
  oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0));
2371
2383
  newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0));
2372
2384
  }
2373
- const { HEAPU8 } = getMemory(this);
2385
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2374
2386
  const fs = getFs(this);
2375
2387
  const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags);
2376
2388
  const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)));
@@ -2436,7 +2448,7 @@
2436
2448
  const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags);
2437
2449
  const wasi = _wasi.get(this);
2438
2450
  const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting);
2439
- const memory = getMemory(this);
2451
+ const memory = getMemory(this, Math.max(path + path_len, fd + 4));
2440
2452
  const HEAPU8 = memory.HEAPU8;
2441
2453
  const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
2442
2454
  const fs = getFs(this);
@@ -2472,7 +2484,7 @@
2472
2484
  const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags);
2473
2485
  const wasi = _wasi.get(this);
2474
2486
  const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting);
2475
- const memory = getMemory(this);
2487
+ const memory = getMemory(this, Math.max(path + path_len, fd + 4));
2476
2488
  const HEAPU8 = memory.HEAPU8;
2477
2489
  const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
2478
2490
  const fs = getFs(this);
@@ -2504,7 +2516,7 @@
2504
2516
  if (path === 0 || buf === 0 || bufused === 0) {
2505
2517
  return 28 /* WasiErrno.EINVAL */;
2506
2518
  }
2507
- const { HEAPU8, view } = getMemory(this);
2519
+ const { HEAPU8, view } = getMemory(this, Math.max(path + path_len, buf + buf_len, bufused + 4));
2508
2520
  const wasi = _wasi.get(this);
2509
2521
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0));
2510
2522
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2528,7 +2540,7 @@
2528
2540
  if (path === 0 || buf === 0 || bufused === 0) {
2529
2541
  return 28 /* WasiErrno.EINVAL */;
2530
2542
  }
2531
- const { HEAPU8, view } = getMemory(this);
2543
+ const { HEAPU8, view } = getMemory(this, Math.max(path + path_len, buf + buf_len, bufused + 4));
2532
2544
  const wasi = _wasi.get(this);
2533
2545
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0));
2534
2546
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2550,7 +2562,7 @@
2550
2562
  if (path === 0) {
2551
2563
  return 28 /* WasiErrno.EINVAL */;
2552
2564
  }
2553
- const { HEAPU8 } = getMemory(this);
2565
+ const { HEAPU8 } = getMemory(this, path + path_len);
2554
2566
  const wasi = _wasi.get(this);
2555
2567
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0));
2556
2568
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2564,7 +2576,7 @@
2564
2576
  if (path === 0) {
2565
2577
  return 28 /* WasiErrno.EINVAL */;
2566
2578
  }
2567
- const { HEAPU8 } = getMemory(this);
2579
+ const { HEAPU8 } = getMemory(this, path + path_len);
2568
2580
  const wasi = _wasi.get(this);
2569
2581
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0));
2570
2582
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2591,7 +2603,7 @@
2591
2603
  oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0));
2592
2604
  newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0));
2593
2605
  }
2594
- const { HEAPU8 } = getMemory(this);
2606
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2595
2607
  const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)));
2596
2608
  const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)));
2597
2609
  const fs = getFs(this);
@@ -2615,7 +2627,7 @@
2615
2627
  oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0));
2616
2628
  newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0));
2617
2629
  }
2618
- const { HEAPU8 } = getMemory(this);
2630
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2619
2631
  const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)));
2620
2632
  const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)));
2621
2633
  const fs = getFs(this);
@@ -2630,7 +2642,7 @@
2630
2642
  if (old_path === 0 || new_path === 0) {
2631
2643
  return 28 /* WasiErrno.EINVAL */;
2632
2644
  }
2633
- const { HEAPU8 } = getMemory(this);
2645
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2634
2646
  const wasi = _wasi.get(this);
2635
2647
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0));
2636
2648
  const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len));
@@ -2650,7 +2662,7 @@
2650
2662
  if (old_path === 0 || new_path === 0) {
2651
2663
  return 28 /* WasiErrno.EINVAL */;
2652
2664
  }
2653
- const { HEAPU8 } = getMemory(this);
2665
+ const { HEAPU8 } = getMemory(this, Math.max(old_path + old_path_len, new_path + new_path_len));
2654
2666
  const wasi = _wasi.get(this);
2655
2667
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0));
2656
2668
  const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len));
@@ -2666,7 +2678,7 @@
2666
2678
  if (path === 0) {
2667
2679
  return 28 /* WasiErrno.EINVAL */;
2668
2680
  }
2669
- const { HEAPU8 } = getMemory(this);
2681
+ const { HEAPU8 } = getMemory(this, path + path_len);
2670
2682
  const wasi = _wasi.get(this);
2671
2683
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0));
2672
2684
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));
@@ -2680,7 +2692,7 @@
2680
2692
  if (path === 0) {
2681
2693
  return 28 /* WasiErrno.EINVAL */;
2682
2694
  }
2683
- const { HEAPU8 } = getMemory(this);
2695
+ const { HEAPU8 } = getMemory(this, path + path_len);
2684
2696
  const wasi = _wasi.get(this);
2685
2697
  const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0));
2686
2698
  let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len));