src/goToolPprof: execFile instead of exec
Fixes golang/vscode-go#1779
Change-Id: I6e5f6f91cac34c2d0195cb4f4fd564da840b7643
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/350739
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
diff --git a/src/goToolPprof.ts b/src/goToolPprof.ts
index ef1bc91..d947006 100644
--- a/src/goToolPprof.ts
+++ b/src/goToolPprof.ts
@@ -2,7 +2,7 @@
* Copyright 2021 The Go Authors. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------*/
-import { exec } from 'child_process';
+import { execFile } from 'child_process';
import { window, CancellationToken, TextDocumentContentProvider, Uri } from 'vscode';
import { outputChannel } from './goStatus';
import { getBinPath } from './util';
@@ -15,7 +15,7 @@
private pprof(uri: Uri, token: CancellationToken) {
const goBin = getBinPath('go');
return new Promise<string | undefined>((resolve) => {
- const cp = exec(`${goBin} tool pprof -tree ${uri.fsPath}`, async (err, stdout, stderr) => {
+ const cp = execFile(goBin, ['tool', 'pprof', '-tree', uri.fsPath], async (err, stdout, stderr) => {
if (err || stderr) {
const m = 'Failed to execute `go tool pprof`';
if (err) outputChannel.appendLine(`${m}: ${err}`);