|
4 | 4 | "context" |
5 | 5 | "encoding/json" |
6 | 6 | "fmt" |
| 7 | + "path/filepath" |
7 | 8 | "slices" |
8 | 9 | "time" |
9 | 10 |
|
@@ -82,7 +83,13 @@ func updater(token string, repoPath string, commit bool, githubAction bool) erro |
82 | 83 | var dependencies Dependencies |
83 | 84 | var updatedDependencies []VersionUpdateInfo |
84 | 85 |
|
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")) |
86 | 93 | if err != nil { |
87 | 94 | return fmt.Errorf("error reading versions JSON: %s", err) |
88 | 95 | } |
@@ -336,7 +343,7 @@ func writeToVersionsJson(repoPath string, dependencies Dependencies) error { |
336 | 343 | return fmt.Errorf("error marshaling dependencies json: %s", err) |
337 | 344 | } |
338 | 345 |
|
339 | | - e := os.WriteFile(repoPath+"/versions.json", updatedJson, 0644) |
| 346 | + e := os.WriteFile(filepath.Join(repoPath, "versions.json"), updatedJson, 0644) |
340 | 347 | if e != nil { |
341 | 348 | return fmt.Errorf("error writing to versions.json: %s", e) |
342 | 349 | } |
@@ -368,13 +375,13 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error { |
368 | 375 |
|
369 | 376 | slices.Sort(envLines) |
370 | 377 |
|
371 | | - file, err := os.Create(repoPath + "/versions.env") |
| 378 | + file, err := os.Create(filepath.Join(repoPath, "versions.env")) |
372 | 379 | if err != nil { |
373 | 380 | return fmt.Errorf("error creating versions.env file: %s", err) |
374 | 381 | } |
375 | 382 | defer file.Close() |
376 | 383 |
|
377 | | - _, err = file.WriteString(strings.Join(envLines, "\n")) |
| 384 | + _, err = file.WriteString(strings.Join(envLines, "\n") + "\n") |
378 | 385 | if err != nil { |
379 | 386 | return fmt.Errorf("error writing to versions.env file: %s", err) |
380 | 387 | } |
|
0 commit comments