From c5d14e0075fbe684eaf6b068ba5f15d524b60748 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Tue, 5 Nov 2024 18:49:42 +0700 Subject: [PATCH] cmd/cli: only cleanup log file if set Otherwise, normalizeLogFilePath may return incorrect log file path, causing invalid log file/backup initialization. Thus "--cleanup" will complain about invalid files. --- cmd/cli/cli.go | 15 ++++++++------- cmd/cli/main.go | 7 ++----- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index 1e9c541..84fa2e0 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -685,13 +685,14 @@ NOTE: Uninstalling will set DNS to values provided by DHCP.`, var files []string // Config file. files = append(files, v.ConfigFileUsed()) - // Log file. - logFile := normalizeLogFilePath(cfg.Service.LogPath) - files = append(files, logFile) - // Backup log file. - oldLogFile := logFile + oldLogSuffix - if _, err := os.Stat(oldLogFile); err == nil { - files = append(files, oldLogFile) + // Log file and backup log file. + // For safety, only process if log file path is absolute. + if logFile := normalizeLogFilePath(cfg.Service.LogPath); filepath.IsAbs(logFile) { + files = append(files, logFile) + oldLogFile := logFile + oldLogSuffix + if _, err := os.Stat(oldLogFile); err == nil { + files = append(files, oldLogFile) + } } // Socket files. if dir, _ := socketDir(); dir != "" { diff --git a/cmd/cli/main.go b/cmd/cli/main.go index b8f6d8d..bafcde1 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -67,11 +67,8 @@ func Main() { } func normalizeLogFilePath(logFilePath string) string { - // In cleanup mode, we always want the full log file path. - if !cleanup { - if logFilePath == "" || filepath.IsAbs(logFilePath) || service.Interactive() { - return logFilePath - } + if logFilePath == "" || filepath.IsAbs(logFilePath) || service.Interactive() { + return logFilePath } if homedir != "" { return filepath.Join(homedir, logFilePath)