aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/shim/main.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/internal/shim/main.go b/internal/shim/main.go
index e5bca6fd..5b3303b4 100644
--- a/internal/shim/main.go
+++ b/internal/shim/main.go
@@ -7,6 +7,7 @@ import (
"fmt"
"net"
"os"
+ "path"
"strconv"
"syscall"
@@ -18,6 +19,14 @@ import (
// proceed with caution!
func shim(socket string) {
+ // re-exec
+ if len(os.Args) > 0 && os.Args[0] != "fortify" && path.IsAbs(os.Args[0]) {
+ if err := syscall.Exec(os.Args[0], []string{"fortify", "shim"}, os.Environ()); err != nil {
+ fmt.Println("fortify-shim: cannot re-exec self:", err)
+ // continue anyway
+ }
+ }
+
verbose.Prefix = "fortify-shim:"
// dial setup socket