Loading android/paths.go +15 −9 Original line number Diff line number Diff line Loading @@ -1868,10 +1868,14 @@ func (p InstallPaths) Strings() []string { return ret } // validateSafePath validates a path that we trust (may contain ninja variables). // Ensures that each path component does not attempt to leave its component. func validateSafePath(pathComponents ...string) (string, error) { // validatePathInternal ensures that a path does not leave its component, and // optionally doesn't contain Ninja variables. func validatePathInternal(allowNinjaVariables bool, pathComponents ...string) (string, error) { for _, path := range pathComponents { if !allowNinjaVariables && strings.Contains(path, "$") { return "", fmt.Errorf("Path contains invalid character($): %s", path) } path := filepath.Clean(path) if path == ".." || strings.HasPrefix(path, "../") || strings.HasPrefix(path, "/") { return "", fmt.Errorf("Path is outside directory: %s", path) Loading @@ -1883,16 +1887,18 @@ func validateSafePath(pathComponents ...string) (string, error) { return filepath.Join(pathComponents...), nil } // validateSafePath validates a path that we trust (may contain ninja // variables). Ensures that each path component does not attempt to leave its // component. Returns a joined version of each path component. func validateSafePath(pathComponents ...string) (string, error) { return validatePathInternal(true, pathComponents...) } // validatePath validates that a path does not include ninja variables, and that // each path component does not attempt to leave its component. Returns a joined // version of each path component. func validatePath(pathComponents ...string) (string, error) { for _, path := range pathComponents { if strings.Contains(path, "$") { return "", fmt.Errorf("Path contains invalid character($): %s", path) } } return validateSafePath(pathComponents...) return validatePathInternal(false, pathComponents...) } func PathForPhony(ctx PathContext, phony string) WritablePath { Loading Loading
android/paths.go +15 −9 Original line number Diff line number Diff line Loading @@ -1868,10 +1868,14 @@ func (p InstallPaths) Strings() []string { return ret } // validateSafePath validates a path that we trust (may contain ninja variables). // Ensures that each path component does not attempt to leave its component. func validateSafePath(pathComponents ...string) (string, error) { // validatePathInternal ensures that a path does not leave its component, and // optionally doesn't contain Ninja variables. func validatePathInternal(allowNinjaVariables bool, pathComponents ...string) (string, error) { for _, path := range pathComponents { if !allowNinjaVariables && strings.Contains(path, "$") { return "", fmt.Errorf("Path contains invalid character($): %s", path) } path := filepath.Clean(path) if path == ".." || strings.HasPrefix(path, "../") || strings.HasPrefix(path, "/") { return "", fmt.Errorf("Path is outside directory: %s", path) Loading @@ -1883,16 +1887,18 @@ func validateSafePath(pathComponents ...string) (string, error) { return filepath.Join(pathComponents...), nil } // validateSafePath validates a path that we trust (may contain ninja // variables). Ensures that each path component does not attempt to leave its // component. Returns a joined version of each path component. func validateSafePath(pathComponents ...string) (string, error) { return validatePathInternal(true, pathComponents...) } // validatePath validates that a path does not include ninja variables, and that // each path component does not attempt to leave its component. Returns a joined // version of each path component. func validatePath(pathComponents ...string) (string, error) { for _, path := range pathComponents { if strings.Contains(path, "$") { return "", fmt.Errorf("Path contains invalid character($): %s", path) } } return validateSafePath(pathComponents...) return validatePathInternal(false, pathComponents...) } func PathForPhony(ctx PathContext, phony string) WritablePath { Loading