@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/LICENSE +21 -0
- package/dist/wasm-util.esm-bundler.js +60 -48
- package/dist/wasm-util.esm.js +60 -48
- package/dist/wasm-util.esm.min.js +1 -1
- package/dist/wasm-util.js +60 -48
- package/dist/wasm-util.min.js +1 -1
- package/lib/cjs/wasi/preview1.js +62 -49
- package/lib/mjs/wasi/preview1.mjs +60 -48
- package/package.json +1 -1
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
|
|
1211
|
-
|
|
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));
|