More fixes for snyk reports

- Update golang to v1.25.5 to address as many CVEs as possible
- Fix more instances of path traversal vulnerabilities

Can't go beyond v1.25.5 right now because that's what OpenHPC is using to build
for openEuler.

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
Jonathon Anderson
2026-03-11 17:10:02 -06:00
committed by Christian Goll
parent dab65e1134
commit 4d7a86a901
6 changed files with 23 additions and 7 deletions

View File

@@ -17,7 +17,9 @@ import (
var validOverlayName = regexp.MustCompile(`^[a-zA-Z0-9\-._:]+$`)
func validateOverlayName(name string) error {
// ValidateName validates that an overlay name consists only of safe characters.
// It does not check whether the overlay actually exists.
func ValidateName(name string) error {
if name == "" {
return fmt.Errorf("overlay name must not be empty")
}
@@ -29,7 +31,7 @@ func validateOverlayName(name string) error {
// Get returns the filesystem path of an overlay identified by its name,
func Get(name string) (overlay Overlay, err error) {
if err := validateOverlayName(name); err != nil {
if err := ValidateName(name); err != nil {
return "", err
}
overlay = getSiteOverlay(name)
@@ -47,7 +49,7 @@ func Get(name string) (overlay Overlay, err error) {
//
// Returns an error if the overlay already exists or if directory creation fails.
func Create(name string) (overlay Overlay, err error) {
if err := validateOverlayName(name); err != nil {
if err := ValidateName(name); err != nil {
return "", err
}
overlay = getSiteOverlay(name)
@@ -104,6 +106,12 @@ func (overlay Overlay) CloneToSite() (siteOverlay Overlay, err error) {
// If the context is empty and no overlays are specified, the empty
// string is returned.
func Image(nodeName string, context string, overlayNames []string) string {
for _, overlayName := range overlayNames {
if err := ValidateName(overlayName); err != nil {
wwlog.Warn("invalid overlay name: %s", overlayName)
return ""
}
}
var name string
if context != "" {
if len(overlayNames) > 0 {

View File

@@ -42,12 +42,12 @@ var validateOverlayNameTests = []struct {
{"foo\x00bar", true},
}
func Test_validateOverlayName(t *testing.T) {
func Test_ValidateName(t *testing.T) {
for _, tt := range validateOverlayNameTests {
t.Run(tt.name, func(t *testing.T) {
err := validateOverlayName(tt.name)
err := ValidateName(tt.name)
if (err != nil) != tt.wantErr {
t.Errorf("validateOverlayName(%q) error = %v, wantErr %v", tt.name, err, tt.wantErr)
t.Errorf("ValidateName(%q) error = %v, wantErr %v", tt.name, err, tt.wantErr)
}
})
}

View File

@@ -45,6 +45,11 @@ func sendFile(
}
func getOverlayFile(n node.Node, context string, stage_overlays []string, autobuild bool) (stage_file string, err error) {
for _, name := range stage_overlays {
if err := overlay.ValidateName(name); err != nil {
return "", err
}
}
stage_file = overlay.Image(n.Id(), context, stage_overlays)
build := !util.IsFile(stage_file)
wwlog.Verbose("stage file: %s", stage_file)