summaryrefslogtreecommitdiff
path: root/go/internal/executable
diff options
context:
space:
mode:
authorPatrick Bajao <ebajao@gitlab.com>2019-08-15 18:06:04 +0800
committerPatrick Bajao <ebajao@gitlab.com>2019-08-15 18:15:49 +0800
commit41f919eb86a3b1f69876f8b97572615b06521538 (patch)
treec840113cc7dc11643f5c8d7f55601322b2ee698e /go/internal/executable
parentf34e2cd5c4194aa8bb049e1ac8aa1b2f002395b5 (diff)
downloadgitlab-shell-41f919eb86a3b1f69876f8b97572615b06521538.tar.gz
Replace symlinks with actual binaries
We had `gitlab-shell-authorized-keys-check` and `gitlab-shell-authorized-principals-check` as symlinks to `gitlab-shell` before. We determine the `Command` and `CommandArgs` that we build based on the `Name` of the `Executable`. We also use that to know which fallback ruby executable should we fallback to. We use `os.Executable()` to do that. `os.Executable()` behaves differently depending on OS. It may return the symlink or the target's name. That can result to a buggy behavior. The fix is to create binaries for each instead of using a symlink. That way we don't need to rely on `os.Executable()` to get the name. We pass the `Name` of the executable instead.
Diffstat (limited to 'go/internal/executable')
-rw-r--r--go/internal/executable/executable.go4
-rw-r--r--go/internal/executable/executable_test.go4
2 files changed, 4 insertions, 4 deletions
diff --git a/go/internal/executable/executable.go b/go/internal/executable/executable.go
index ef07115..2e7d26e 100644
--- a/go/internal/executable/executable.go
+++ b/go/internal/executable/executable.go
@@ -22,7 +22,7 @@ var (
osExecutable = os.Executable
)
-func New() (*Executable, error) {
+func New(name string) (*Executable, error) {
path, err := osExecutable()
if err != nil {
return nil, err
@@ -34,7 +34,7 @@ func New() (*Executable, error) {
}
executable := &Executable{
- Name: filepath.Base(path),
+ Name: name,
RootDir: rootDir,
}
diff --git a/go/internal/executable/executable_test.go b/go/internal/executable/executable_test.go
index 4d2174b..581821d 100644
--- a/go/internal/executable/executable_test.go
+++ b/go/internal/executable/executable_test.go
@@ -59,7 +59,7 @@ func TestNewSuccess(t *testing.T) {
fake.Setup()
defer fake.Cleanup()
- result, err := New()
+ result, err := New("gitlab-shell")
require.NoError(t, err)
require.Equal(t, result.Name, "gitlab-shell")
@@ -96,7 +96,7 @@ func TestNewFailure(t *testing.T) {
fake.Setup()
defer fake.Cleanup()
- _, err := New()
+ _, err := New("gitlab-shell")
require.Error(t, err)
})