Files
orca/internal/daemon/validate.go
T

29 lines
832 B
Go

package daemon
import (
"fmt"
"regexp"
"strings"
)
// idPattern constrains path IDs to a safe subset: alphanumerics, hyphens,
// and underscores. UUIDs and our internal IDs both fit. We reject anything
// that smells like a path-traversal, control character, or shell metachar.
var idPattern = regexp.MustCompile(`^[A-Za-z0-9_-]{1,128}$`)
// validateID checks that an ID is well-formed and within length limits.
// It exists primarily as a defense-in-depth measure against path traversal
// and accidental log-injection when the ID is echoed back in error messages.
func validateID(id string) error {
if id == "" {
return fmt.Errorf("id required")
}
if strings.ContainsAny(id, "\r\n\t\x00") {
return fmt.Errorf("invalid id")
}
if !idPattern.MatchString(id) {
return fmt.Errorf("invalid id format")
}
return nil
}