X Tutup
Skip to content

Commit 08bbf3b

Browse files
authored
Check paths safely for codespaces SSH and SCP commands
1 parent a6f6ad7 commit 08bbf3b

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

internal/codespaces/ssh.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"os/exec"
88
"strconv"
99
"strings"
10+
11+
"github.com/cli/safeexec"
1012
)
1113

1214
type printer interface {
@@ -75,7 +77,12 @@ func newSSHCommand(ctx context.Context, port int, dst string, cmdArgs []string)
7577
cmdArgs = append(cmdArgs, command...)
7678
}
7779

78-
cmd := exec.CommandContext(ctx, "ssh", cmdArgs...)
80+
exe, err := safeexec.LookPath("ssh")
81+
if err != nil {
82+
return nil, nil, fmt.Errorf("failed to execute ssh: %w", err)
83+
}
84+
85+
cmd := exec.CommandContext(ctx, exe, cmdArgs...)
7986
cmd.Stdout = os.Stdout
8087
cmd.Stdin = os.Stdin
8188
cmd.Stderr = os.Stderr
@@ -112,9 +119,14 @@ func newSCPCommand(ctx context.Context, port int, dst string, cmdArgs []string)
112119
cmdArgs = append(cmdArgs, arg)
113120
}
114121

122+
exe, err := safeexec.LookPath("scp")
123+
if err != nil {
124+
return nil, fmt.Errorf("failed to execute scp: %w", err)
125+
}
126+
115127
// Beware: invalid syntax causes scp to exit 1 with
116128
// no error message, so don't let that happen.
117-
cmd := exec.CommandContext(ctx, "scp", cmdArgs...)
129+
cmd := exec.CommandContext(ctx, exe, cmdArgs...)
118130

119131
cmd.Stdin = nil
120132
cmd.Stdout = os.Stderr

0 commit comments

Comments
 (0)
X Tutup