node-pty 1.2.0-beta.3 → 1.2.0-beta.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.
Files changed (34) hide show
  1. package/lib/unixTerminal.test.js +37 -7
  2. package/lib/unixTerminal.test.js.map +1 -1
  3. package/package.json +1 -1
  4. package/prebuilds/darwin-arm64/pty.node +0 -0
  5. package/prebuilds/darwin-arm64/spawn-helper +0 -0
  6. package/prebuilds/darwin-x64/pty.node +0 -0
  7. package/prebuilds/darwin-x64/spawn-helper +0 -0
  8. package/prebuilds/linux-arm64/pty.node +0 -0
  9. package/prebuilds/linux-x64/pty.node +0 -0
  10. package/prebuilds/win32-arm64/conpty.node +0 -0
  11. package/prebuilds/win32-arm64/conpty.pdb +0 -0
  12. package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  13. package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  14. package/prebuilds/win32-arm64/pty.node +0 -0
  15. package/prebuilds/win32-arm64/pty.pdb +0 -0
  16. package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  17. package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  18. package/prebuilds/win32-arm64/winpty.dll +0 -0
  19. package/prebuilds/win32-arm64/winpty.pdb +0 -0
  20. package/prebuilds/win32-x64/conpty.node +0 -0
  21. package/prebuilds/win32-x64/conpty.pdb +0 -0
  22. package/prebuilds/win32-x64/conpty_console_list.node +0 -0
  23. package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  24. package/prebuilds/win32-x64/pty.node +0 -0
  25. package/prebuilds/win32-x64/pty.pdb +0 -0
  26. package/prebuilds/win32-x64/winpty-agent.exe +0 -0
  27. package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  28. package/prebuilds/win32-x64/winpty.dll +0 -0
  29. package/prebuilds/win32-x64/winpty.pdb +0 -0
  30. package/scripts/linux/install-sysroot.js +9 -8
  31. package/scripts/linux/verify-glibc-requirements.sh +1 -1
  32. package/scripts/prebuild.js +0 -8
  33. package/src/unix/pty.cc +39 -0
  34. package/src/unixTerminal.test.ts +37 -6
@@ -248,6 +248,32 @@ if (process.platform !== 'win32') {
248
248
  });
249
249
  });
250
250
  describe('spawn', function () {
251
+ if (process.platform === 'linux') {
252
+ it('should not leak pty file descriptors to child processes', function (done) {
253
+ // Spawn 3 ptys - the 3rd should not see FDs from the first two
254
+ var ptys = [];
255
+ for (var i = 0; i < 3; i++) {
256
+ ptys.push(new unixTerminal_1.UnixTerminal('/bin/bash', [], {}));
257
+ }
258
+ var output = '';
259
+ ptys[2].onData(function (data) {
260
+ output += data;
261
+ });
262
+ // Check for ptmx FDs in the 3rd terminal's shell
263
+ ptys[2].write('echo "PTMX_COUNT:$(file /proc/$$/fd/* 2>/dev/null | grep -c ptmx)"\n');
264
+ setTimeout(function () {
265
+ for (var _i = 0, ptys_1 = ptys; _i < ptys_1.length; _i++) {
266
+ var pty = ptys_1[_i];
267
+ pty.kill();
268
+ }
269
+ // Extract the count from output - should be 0
270
+ var match = output.match(/PTMX_COUNT:(\d+)/);
271
+ assert.ok(match, "Could not find PTMX_COUNT in output: " + output);
272
+ assert.strictEqual(match[1], '0', "Expected 0 ptmx FDs but got " + match[1]);
273
+ done();
274
+ }, 1000);
275
+ });
276
+ }
251
277
  if (process.platform === 'darwin') {
252
278
  it('should return the name of the process', function (done) {
253
279
  var term = new unixTerminal_1.UnixTerminal('/bin/echo');
@@ -261,13 +287,17 @@ if (process.platform !== 'win32') {
261
287
  var sub = '';
262
288
  var pid = '';
263
289
  p.stdout.on('data', function (data) {
264
- if (!data.toString().indexOf('title')) {
265
- sub = data.toString().split(' ')[1].slice(0, -1);
266
- }
267
- else if (!data.toString().indexOf('ready')) {
268
- pid = data.toString().split(' ')[1].slice(0, -1);
269
- process.kill(parseInt(pid), 'SIGINT');
270
- p.kill('SIGINT');
290
+ var lines = data.toString().split('\n');
291
+ for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
292
+ var line = lines_1[_i];
293
+ if (line.startsWith('title ')) {
294
+ sub = line.split(' ')[1];
295
+ }
296
+ else if (line.startsWith('ready ')) {
297
+ pid = line.split(' ')[1];
298
+ process.kill(parseInt(pid), 'SIGINT');
299
+ p.kill('SIGINT');
300
+ }
271
301
  }
272
302
  });
273
303
  p.on('exit', function () {
@@ -1 +1 @@
1
- {"version":3,"file":"unixTerminal.test.js","sourceRoot":"","sources":["../src/unixTerminal.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unixTerminal.test.js","sourceRoot":"","sources":["../src/unixTerminal.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": {
5
5
  "name": "Microsoft Corporation"
6
6
  },
7
- "version": "1.2.0-beta.3",
7
+ "version": "1.2.0-beta.4",
8
8
  "license": "MIT",
9
9
  "main": "./lib/index.js",
10
10
  "types": "./typings/node-pty.d.ts",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -18,6 +18,7 @@ const ghApiHeaders = {
18
18
 
19
19
  if (process.env.GITHUB_TOKEN) {
20
20
  ghApiHeaders.Authorization = 'Basic ' + Buffer.from(process.env.GITHUB_TOKEN).toString('base64');
21
+ console.error('Using GITHUB_TOKEN for authenticated requests to GitHub API.');
21
22
  }
22
23
 
23
24
  const ghDownloadHeaders = {
@@ -48,29 +49,29 @@ async function fetchUrl(options, retries = 10, retryDelay = 1000) {
48
49
  signal: controller.signal
49
50
  });
50
51
  if (response.ok && (response.status >= 200 && response.status < 300)) {
51
- console.log(`Fetch completed: Status ${response.status}.`);
52
+ console.error(`Fetch completed: Status ${response.status}.`);
52
53
  const contents = Buffer.from(await response.arrayBuffer());
53
54
  const asset = JSON.parse(contents.toString()).assets.find((a) => a.name === options.assetName);
54
55
  if (!asset) {
55
56
  throw new Error(`Could not find asset in release of Microsoft/vscode-linux-build-agent @ ${version}`);
56
57
  }
57
- console.log(`Found asset ${options.assetName} @ ${asset.url}.`);
58
+ console.error(`Found asset ${options.assetName} @ ${asset.url}.`);
58
59
  const assetResponse = await fetch(asset.url, {
59
60
  headers: ghDownloadHeaders
60
61
  });
61
62
  if (assetResponse.ok && (assetResponse.status >= 200 && assetResponse.status < 300)) {
62
63
  const assetContents = Buffer.from(await assetResponse.arrayBuffer());
63
- console.log(`Fetched response body buffer: ${assetContents.byteLength} bytes`);
64
+ console.error(`Fetched response body buffer: ${assetContents.byteLength} bytes`);
64
65
  if (options.checksumSha256) {
65
66
  const actualSHA256Checksum = createHash('sha256').update(assetContents).digest('hex');
66
67
  if (actualSHA256Checksum !== options.checksumSha256) {
67
68
  throw new Error(`Checksum mismatch for ${asset.url} (expected ${options.checksumSha256}, actual ${actualSHA256Checksum})`);
68
69
  }
69
70
  }
70
- console.log(`Verified SHA256 checksums match for ${asset.url}`);
71
+ console.error(`Verified SHA256 checksums match for ${asset.url}`);
71
72
  const tarCommand = `tar -xz -C ${options.dest}`;
72
73
  execSync(tarCommand, { input: assetContents });
73
- console.log(`Fetch complete!`);
74
+ console.error(`Fetch complete!`);
74
75
  return;
75
76
  }
76
77
  throw new Error(`Request ${asset.url} failed with status code: ${assetResponse.status}`);
@@ -81,7 +82,7 @@ async function fetchUrl(options, retries = 10, retryDelay = 1000) {
81
82
  }
82
83
  } catch (e) {
83
84
  if (retries > 0) {
84
- console.log(`Fetching failed: ${e}`);
85
+ console.error(`Fetching failed: ${e}`);
85
86
  await new Promise(resolve => setTimeout(resolve, retryDelay));
86
87
  return fetchUrl(options, retries - 1, retryDelay);
87
88
  }
@@ -122,7 +123,7 @@ async function getSysroot(arch) {
122
123
  return result;
123
124
  }
124
125
 
125
- console.log(`Installing ${arch} root image: ${sysroot}`);
126
+ console.error(`Installing ${arch} root image: ${sysroot}`);
126
127
  fs.rmSync(sysroot, { recursive: true, force: true });
127
128
  fs.mkdirSync(sysroot, { recursive: true });
128
129
 
@@ -139,7 +140,7 @@ async function getSysroot(arch) {
139
140
 
140
141
  async function main() {
141
142
  const arch = process.argv[2] || process.env.ARCH || 'x64';
142
- console.log(`Installing sysroot for architecture: ${arch}`);
143
+ console.error(`Installing sysroot for architecture: ${arch}`);
143
144
 
144
145
  try {
145
146
  const sysrootPath = await getSysroot(arch);
@@ -24,7 +24,7 @@ for file in $files; do
24
24
  glibcxx_version=$version
25
25
  fi
26
26
  fi
27
- done < <("$SYSROOT_PATH/../bin/objdump" -T "$file")
27
+ done < <(objdump -T "$file")
28
28
 
29
29
  if [[ "$glibc_version" != "$EXPECTED_GLIBC_VERSION" ]]; then
30
30
  echo "Error: File $file has dependency on GLIBC > $EXPECTED_GLIBC_VERSION, found $glibc_version"
@@ -31,12 +31,4 @@ if (!fs.existsSync(PREBUILD_DIR)) {
31
31
  process.exit(1);
32
32
  }
33
33
 
34
- // Ensure spawn-helper has execute permission (may be stripped by npm pack)
35
- if (process.platform === 'darwin') {
36
- const spawnHelper = path.join(PREBUILD_DIR, 'spawn-helper');
37
- if (fs.existsSync(spawnHelper)) {
38
- fs.chmodSync(spawnHelper, 0o755);
39
- }
40
- }
41
-
42
34
  process.exit(0);
package/src/unix/pty.cc CHANGED
@@ -37,6 +37,8 @@
37
37
  /* http://www.gnu.org/software/gnulib/manual/html_node/forkpty.html */
38
38
  #if defined(__linux__)
39
39
  #include <pty.h>
40
+ #include <dirent.h>
41
+ #include <sys/syscall.h>
40
42
  #elif defined(__APPLE__)
41
43
  #include <util.h>
42
44
  #elif defined(__FreeBSD__)
@@ -110,6 +112,40 @@ struct ExitEvent {
110
112
  int exit_code = 0, signal_code = 0;
111
113
  };
112
114
 
115
+ #if defined(__linux__)
116
+
117
+ static int
118
+ SetCloseOnExec(int fd) {
119
+ int flags = fcntl(fd, F_GETFD, 0);
120
+ if (flags == -1)
121
+ return flags;
122
+ if (flags & FD_CLOEXEC)
123
+ return 0;
124
+ return fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
125
+ }
126
+
127
+ /**
128
+ * Close all file descriptors >= 3 to prevent FD leakage to child processes.
129
+ * Uses close_range() syscall on Linux 5.9+, falls back to /proc/self/fd iteration.
130
+ */
131
+ static void
132
+ pty_close_inherited_fds() {
133
+ // Try close_range() first (Linux 5.9+, glibc 2.34+)
134
+ #if defined(SYS_close_range)
135
+ if (syscall(SYS_close_range, 3, ~0U, CLOSE_RANGE_CLOEXEC) == 0) {
136
+ return;
137
+ }
138
+ #endif
139
+
140
+ int fd;
141
+ // Set the CLOEXEC flag on all open descriptors. Unconditionally try the first
142
+ // 16 file descriptors. After that, bail out after the first error.
143
+ for (fd = 3; ; fd++)
144
+ if (SetCloseOnExec(fd) && fd > 15)
145
+ break;
146
+ }
147
+ #endif
148
+
113
149
  void SetupExitCallback(Napi::Env env, Napi::Function cb, pid_t pid) {
114
150
  std::thread *th = new std::thread;
115
151
  // Don't use Napi::AsyncWorker which is limited by UV_THREADPOOL_SIZE.
@@ -433,6 +469,9 @@ Napi::Value PtyFork(const Napi::CallbackInfo& info) {
433
469
  }
434
470
  }
435
471
 
472
+ // Close inherited FDs to prevent leaking pty master FDs to child
473
+ pty_close_inherited_fds();
474
+
436
475
  {
437
476
  char **old = environ;
438
477
  environ = env;
@@ -256,6 +256,34 @@ if (process.platform !== 'win32') {
256
256
  });
257
257
  });
258
258
  describe('spawn', () => {
259
+ if (process.platform === 'linux') {
260
+ it('should not leak pty file descriptors to child processes', (done) => {
261
+ // Spawn 3 ptys - the 3rd should not see FDs from the first two
262
+ const ptys: UnixTerminal[] = [];
263
+ for (let i = 0; i < 3; i++) {
264
+ ptys.push(new UnixTerminal('/bin/bash', [], {}));
265
+ }
266
+
267
+ let output = '';
268
+ ptys[2].onData((data) => {
269
+ output += data;
270
+ });
271
+
272
+ // Check for ptmx FDs in the 3rd terminal's shell
273
+ ptys[2].write('echo "PTMX_COUNT:$(file /proc/$$/fd/* 2>/dev/null | grep -c ptmx)"\n');
274
+
275
+ setTimeout(() => {
276
+ for (const pty of ptys) {
277
+ pty.kill();
278
+ }
279
+ // Extract the count from output - should be 0
280
+ const match = output.match(/PTMX_COUNT:(\d+)/);
281
+ assert.ok(match, `Could not find PTMX_COUNT in output: ${output}`);
282
+ assert.strictEqual(match![1], '0', `Expected 0 ptmx FDs but got ${match![1]}`);
283
+ done();
284
+ }, 1000);
285
+ });
286
+ }
259
287
  if (process.platform === 'darwin') {
260
288
  it('should return the name of the process', (done) => {
261
289
  const term = new UnixTerminal('/bin/echo');
@@ -280,12 +308,15 @@ if (process.platform !== 'win32') {
280
308
  let sub = '';
281
309
  let pid = '';
282
310
  p.stdout.on('data', (data) => {
283
- if (!data.toString().indexOf('title')) {
284
- sub = data.toString().split(' ')[1].slice(0, -1);
285
- } else if (!data.toString().indexOf('ready')) {
286
- pid = data.toString().split(' ')[1].slice(0, -1);
287
- process.kill(parseInt(pid), 'SIGINT');
288
- p.kill('SIGINT');
311
+ const lines = data.toString().split('\n');
312
+ for (const line of lines) {
313
+ if (line.startsWith('title ')) {
314
+ sub = line.split(' ')[1];
315
+ } else if (line.startsWith('ready ')) {
316
+ pid = line.split(' ')[1];
317
+ process.kill(parseInt(pid), 'SIGINT');
318
+ p.kill('SIGINT');
319
+ }
289
320
  }
290
321
  });
291
322
  p.on('exit', () => {