From 979c413f04ba81c1db79114b08d8b36271297634 Mon Sep 17 00:00:00 2001 From: Mohammed Al Sahaf Date: Sat, 14 Oct 2023 00:19:22 +0300 Subject: [PATCH] cmd: upgrade: resolve symlink of the executable (#5891) --- cmd/packagesfuncs.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/packagesfuncs.go b/cmd/packagesfuncs.go index 5d77e4d5..0784f7ee 100644 --- a/cmd/packagesfuncs.go +++ b/cmd/packagesfuncs.go @@ -22,6 +22,7 @@ import ( "net/url" "os" "os/exec" + "path/filepath" "reflect" "runtime" "runtime/debug" @@ -103,6 +104,15 @@ func upgradeBuild(pluginPkgs map[string]struct{}, fl Flags) (int, error) { if err != nil { return caddy.ExitCodeFailedStartup, fmt.Errorf("retrieving current executable permission bits: %v", err) } + if thisExecStat.Mode()&os.ModeSymlink == os.ModeSymlink { + symSource := thisExecPath + // we are a symlink; resolve it + thisExecPath, err = filepath.EvalSymlinks(thisExecPath) + if err != nil { + return caddy.ExitCodeFailedStartup, fmt.Errorf("resolving current executable symlink: %v", err) + } + l.Info("this executable is a symlink", zap.String("source", symSource), zap.String("target", thisExecPath)) + } l.Info("this executable will be replaced", zap.String("path", thisExecPath)) // build the request URL to download this custom build