Skip to content

Commit 665eb1b

Browse files
committed
fix: sanitize repo path and add trailing newline in dependency updater
1 parent 4e715e4 commit 665eb1b

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

dependency_updater/dependency_updater.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7+
"path/filepath"
78
"slices"
89
"time"
910

@@ -82,7 +83,13 @@ func updater(token string, repoPath string, commit bool, githubAction bool) erro
8283
var dependencies Dependencies
8384
var updatedDependencies []VersionUpdateInfo
8485

85-
f, err := os.ReadFile(repoPath + "/versions.json")
86+
// Sanitize repoPath to prevent path traversal (CWE-22)
87+
repoPath, err = filepath.Abs(filepath.Clean(repoPath))
88+
if err != nil {
89+
return fmt.Errorf("error resolving repo path: %s", err)
90+
}
91+
92+
f, err := os.ReadFile(filepath.Join(repoPath, "versions.json"))
8693
if err != nil {
8794
return fmt.Errorf("error reading versions JSON: %s", err)
8895
}
@@ -336,7 +343,7 @@ func writeToVersionsJson(repoPath string, dependencies Dependencies) error {
336343
return fmt.Errorf("error marshaling dependencies json: %s", err)
337344
}
338345

339-
e := os.WriteFile(repoPath+"/versions.json", updatedJson, 0644)
346+
e := os.WriteFile(filepath.Join(repoPath, "versions.json"), updatedJson, 0644)
340347
if e != nil {
341348
return fmt.Errorf("error writing to versions.json: %s", e)
342349
}
@@ -368,13 +375,13 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error {
368375

369376
slices.Sort(envLines)
370377

371-
file, err := os.Create(repoPath + "/versions.env")
378+
file, err := os.Create(filepath.Join(repoPath, "versions.env"))
372379
if err != nil {
373380
return fmt.Errorf("error creating versions.env file: %s", err)
374381
}
375382
defer file.Close()
376383

377-
_, err = file.WriteString(strings.Join(envLines, "\n"))
384+
_, err = file.WriteString(strings.Join(envLines, "\n") + "\n")
378385
if err != nil {
379386
return fmt.Errorf("error writing to versions.env file: %s", err)
380387
}

0 commit comments

Comments
 (0)