chore: Fix warnings

Fixing warnings in cloudflared log collector.

This attempts to fix errors like the ones shown below:

```
diagnostic/diagnostic.go:132:23: Error return value of `logHandle.Close` is not checked (errcheck)
	defer logHandle.Close()

diagnostic/diagnostic.go:134:26: G303: File creation in shared tmp directory without using ioutil.Tempfile (gosec)
	outputLogHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
```
This commit is contained in:
Miguel da Costa Martins Marcelino
2026-05-05 08:28:41 +00:00
parent a9b6f703f0
commit 7585e38948
6 changed files with 58 additions and 45 deletions
+14 -9
View File
@@ -126,13 +126,14 @@ func collectLogs(
if err != nil {
return "", fmt.Errorf("error opening log file while collecting logs: %w", err)
}
defer logHandle.Close()
defer func() { _ = logHandle.Close() }()
// nolint: gosec
outputLogHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
if err != nil {
return "", ErrCreatingTemporaryFile
}
defer outputLogHandle.Close()
defer func() { _ = outputLogHandle.Close() }()
_, err = io.Copy(outputLogHandle, logHandle)
if err != nil {
@@ -229,12 +230,13 @@ func networkInformationCollectors() (rawNetworkCollector, jsonNetworkCollector c
}
func rawNetworkInformationWriter(resultMap map[string]networkCollectionResult) (string, error) {
// nolint: gosec
networkDumpHandle, err := os.Create(filepath.Join(os.TempDir(), rawNetworkBaseName))
if err != nil {
return "", ErrCreatingTemporaryFile
}
defer networkDumpHandle.Close()
defer func() { _ = networkDumpHandle.Close() }()
var exitErr error
@@ -260,12 +262,13 @@ func rawNetworkInformationWriter(resultMap map[string]networkCollectionResult) (
}
func jsonNetworkInformationWriter(resultMap map[string]networkCollectionResult) (string, error) {
// nolint: gosec
networkDumpHandle, err := os.Create(filepath.Join(os.TempDir(), networkBaseName))
if err != nil {
return "", ErrCreatingTemporaryFile
}
defer networkDumpHandle.Close()
defer func() { _ = networkDumpHandle.Close() }()
encoder := newFormattedEncoder(networkDumpHandle)
@@ -290,11 +293,12 @@ func jsonNetworkInformationWriter(resultMap map[string]networkCollectionResult)
func collectFromEndpointAdapter(collect collectToWriterFunc, fileName string) collectFunc {
return func(ctx context.Context) (string, error) {
// nolint: gosec
dumpHandle, err := os.Create(filepath.Join(os.TempDir(), fileName))
if err != nil {
return "", ErrCreatingTemporaryFile
}
defer dumpHandle.Close()
defer func() { _ = dumpHandle.Close() }()
err = collect(ctx, dumpHandle)
if err != nil {
@@ -349,12 +353,12 @@ func resolveInstanceBaseURL(
if !strings.HasPrefix(metricsServerAddress, "http://") {
metricsServerAddress = "http://" + metricsServerAddress
}
url, err := url.Parse(metricsServerAddress)
baseUrl, err := url.Parse(metricsServerAddress)
if err != nil {
return nil, nil, nil, fmt.Errorf("provided address is not valid: %w", err)
}
return url, nil, nil, nil
return baseUrl, nil, nil, nil
}
tunnelState, foundTunnelStates, err := FindMetricsServer(log, client, addresses)
@@ -436,11 +440,12 @@ func createJobs(
}
func createTaskReport(taskReport map[string]taskResult) (string, error) {
// nolint: gosec
dumpHandle, err := os.Create(filepath.Join(os.TempDir(), taskResultBaseName))
if err != nil {
return "", ErrCreatingTemporaryFile
}
defer dumpHandle.Close()
defer func() { _ = dumpHandle.Close() }()
encoder := newFormattedEncoder(dumpHandle)
@@ -545,7 +550,7 @@ func RunDiagnostic(
defer func() {
if !errors.Is(v.Err, ErrCreatingTemporaryFile) {
os.Remove(v.path)
_ = os.Remove(v.path)
}
}()
}
+4 -4
View File
@@ -20,18 +20,18 @@ func NewDockerLogCollector(containerID string) *DockerLogCollector {
}
func (collector *DockerLogCollector) Collect(ctx context.Context) (*LogInformation, error) {
tmp := os.TempDir()
outputHandle, err := os.Create(filepath.Join(tmp, logFilename))
// nolint: gosec
outputHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
if err != nil {
return nil, fmt.Errorf("error opening output file: %w", err)
}
defer outputHandle.Close()
defer func() { _ = outputHandle.Close() }()
// Calculate 2 weeks ago
since := time.Now().Add(twoWeeksOffset).Format(time.RFC3339)
// nolint: gosec
command := exec.CommandContext(
ctx,
"docker",
+3 -5
View File
@@ -13,7 +13,6 @@ const (
linuxManagedLogsPath = "/var/log/cloudflared.err"
darwinManagedLogsPath = "/Library/Logs/com.cloudflare.cloudflared.err.log"
linuxServiceConfigurationPath = "/etc/systemd/system/cloudflared.service"
linuxSystemdPath = "/run/systemd/system"
)
type HostLogCollector struct {
@@ -27,14 +26,13 @@ func NewHostLogCollector(client HTTPClient) *HostLogCollector {
}
func extractLogsFromJournalCtl(ctx context.Context) (*LogInformation, error) {
tmp := os.TempDir()
outputHandle, err := os.Create(filepath.Join(tmp, logFilename))
// nolint: gosec
outputHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
if err != nil {
return nil, fmt.Errorf("error opening output file: %w", err)
}
defer outputHandle.Close()
defer func() { _ = outputHandle.Close() }()
command := exec.CommandContext(
ctx,
+5 -3
View File
@@ -22,18 +22,19 @@ func NewKubernetesLogCollector(containerID, pod string) *KubernetesLogCollector
}
func (collector *KubernetesLogCollector) Collect(ctx context.Context) (*LogInformation, error) {
tmp := os.TempDir()
outputHandle, err := os.Create(filepath.Join(tmp, logFilename))
// nolint: gosec
outputHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
if err != nil {
return nil, fmt.Errorf("error opening output file: %w", err)
}
defer outputHandle.Close()
defer func() { _ = outputHandle.Close() }()
var command *exec.Cmd
// Calculate 2 weeks ago
since := time.Now().Add(twoWeeksOffset).Format(time.RFC3339)
if collector.containerID != "" {
// nolint: gosec
command = exec.CommandContext(
ctx,
"kubectl",
@@ -47,6 +48,7 @@ func (collector *KubernetesLogCollector) Collect(ctx context.Context) (*LogInfor
collector.containerID,
)
} else {
// nolint: gosec
command = exec.CommandContext(
ctx,
"kubectl",
+13 -9
View File
@@ -67,6 +67,8 @@ func PipeCommandOutputToFile(command *exec.Cmd, outputHandle *os.File) (*LogInfo
}
func CopyFilesFromDirectory(path string) (string, error) {
const defaultLogFilename = "cloudflared.log"
// rolling logs have as suffix the current date thus
// when iterating the path files they are already in
// chronological order
@@ -75,30 +77,32 @@ func CopyFilesFromDirectory(path string) (string, error) {
return "", fmt.Errorf("error reading directory %s: %w", path, err)
}
// nolint: gosec
outputHandle, err := os.Create(filepath.Join(os.TempDir(), logFilename))
if err != nil {
return "", fmt.Errorf("creating file %s: %w", outputHandle.Name(), err)
return "", fmt.Errorf("creating temporary log file %s: %w", logFilename, err)
}
defer outputHandle.Close()
defer func() { _ = outputHandle.Close() }()
for _, file := range files {
// nolint: gosec
logHandle, err := os.Open(filepath.Join(path, file.Name()))
if err != nil {
return "", fmt.Errorf("error opening file %s:%w", file.Name(), err)
return "", fmt.Errorf("error opening file %s: %w", file.Name(), err)
}
defer logHandle.Close()
_, err = io.Copy(outputHandle, logHandle)
_ = logHandle.Close()
if err != nil {
return "", fmt.Errorf("error copying file %s:%w", logHandle.Name(), err)
return "", fmt.Errorf("error copying file %s: %w", file.Name(), err)
}
}
logHandle, err := os.Open(filepath.Join(path, "cloudflared.log"))
// nolint: gosec
logHandle, err := os.Open(filepath.Join(path, defaultLogFilename))
if err != nil {
return "", fmt.Errorf("error opening file %s:%w", logHandle.Name(), err)
return "", fmt.Errorf("error opening file %s:%w", defaultLogFilename, err)
}
defer logHandle.Close()
defer func() { _ = logHandle.Close() }()
_, err = io.Copy(outputHandle, logHandle)
if err != nil {