File: example_test.go

package info (click to toggle)
golang-github-alessio-shellescape 1.4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 132 kB
  • sloc: makefile: 3
file content (67 lines) | stat: -rw-r--r-- 1,700 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package shellescape_test

import (
	"fmt"
	"strings"

	"github.com/alessio/shellescape"
)

func ExampleQuote() {
	filename := "myfile; rm -rf /"
	prog := "/bin/ls -lh"
	unsafe := strings.Join([]string{prog, filename}, " ")
	safe := strings.Join([]string{prog, shellescape.Quote(filename)}, " ")

	fmt.Println("unsafe:", unsafe)
	fmt.Println("safe:", safe)

	for i, part := range strings.Split(unsafe, " ") {
		fmt.Printf("unsafe[%d] = %s\n", i, part)
	}

	for i, part := range strings.Split(safe, " ") {
		fmt.Printf("safe[%d] = %s\n", i, part)
	}
	// Output:
	// unsafe: /bin/ls -lh myfile; rm -rf /
	// safe: /bin/ls -lh 'myfile; rm -rf /'
	// unsafe[0] = /bin/ls
	// unsafe[1] = -lh
	// unsafe[2] = myfile;
	// unsafe[3] = rm
	// unsafe[4] = -rf
	// unsafe[5] = /
	// safe[0] = /bin/ls
	// safe[1] = -lh
	// safe[2] = 'myfile;
	// safe[3] = rm
	// safe[4] = -rf
	// safe[5] = /'
}

func ExampleQuoteCommand() {
	filename := "filename with space"
	prog := "/usr/bin/ls"
	args := "-lh"

	unsafe := strings.Join([]string{prog, args, filename}, " ")
	safe := strings.Join([]string{prog, shellescape.QuoteCommand([]string{args, filename})}, " ")

	fmt.Println("unsafe:", unsafe)
	fmt.Println("safe:", safe)
	// Output:
	// unsafe: /usr/bin/ls -lh filename with space
	// safe: /usr/bin/ls -lh 'filename with space'
}

func ExampleStripUnsafe() {
	safeString := `"printable!" #$%^characters '' 12321312"`
	unsafeString := "these runes shall be removed: \u0000\u0081\u001f"

	fmt.Println("safe:", shellescape.StripUnsafe(safeString))
	fmt.Println("unsafe:", shellescape.StripUnsafe(unsafeString))
	// Output:
	// safe: "printable!" #$%^characters '' 12321312"
	// unsafe: these runes shall be removed:
}