sanitize

package
v1.75.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package sanitize cleans untrusted input before use.

The names handled here are rclone remote paths, which use "/" as the only path separator. A "\" is an ordinary character in a remote path and is kept as such - it is up to each backend to make names safe for its own storage (the local backend, for example, encodes it on Windows and rejects any path which escapes its root). As defence in depth Path does however refuse names in which "\" would form a ".." component if it were a separator.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Leaf

func Leaf(name string) error

Leaf checks that the untrusted name is safe to use as a single path component (a directory entry leaf), such as a name read from an archive's directory listing.

It returns an error if the name is empty, ".", "..", or contains a "/". Such a name would otherwise fabricate hierarchy or escape its directory when joined onto a path.

func Path

func Path(name string) (string, error)

Path sanitizes the untrusted "/"-separated path name, such as an archive entry name, so that it is safe to use as an rclone remote path relative to some root.

It returns the name cleaned with path.Clean and with any leading and trailing "/" removed, or "" if the name refers to the root directory (e.g. "", "/" or "./").

It returns an error for any name with a ".." path component, which would otherwise escape the root when joined onto it (a path traversal, or "Zip Slip", attack). Both "/" and "\" are treated as separators when looking for ".." components.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL