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.
This implements the quick fix mentioned in #206 (comment 203949283) so you can see duplicated code in go/cmd/gitlab-shell-authorized-keys-check/main.go
and go/cmd/gitlab-shell-authorized-principals-check/main.go
.
Closes #206 (closed)