mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
be3b8a132b
commit
be017f187e
3 changed files with 17 additions and 1 deletions
|
@ -139,7 +139,14 @@ func Slicestr(a interface{}, startEnd ...int) (string, error) {
|
||||||
return "", errors.New("too many arguments")
|
return "", errors.New("too many arguments")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(startEnd) > 0 && (startEnd[0] < 0 || startEnd[0] >= len(aStr)) {
|
||||||
|
return "", errors.New("slice bounds out of range")
|
||||||
|
}
|
||||||
|
|
||||||
if len(startEnd) == 2 {
|
if len(startEnd) == 2 {
|
||||||
|
if startEnd[1] < 0 || startEnd[1] > len(aStr) {
|
||||||
|
return "", errors.New("slice bounds out of range")
|
||||||
|
}
|
||||||
return aStr[startEnd[0]:startEnd[1]], nil
|
return aStr[startEnd[0]:startEnd[1]], nil
|
||||||
} else if len(startEnd) == 1 {
|
} else if len(startEnd) == 1 {
|
||||||
return aStr[startEnd[0]:], nil
|
return aStr[startEnd[0]:], nil
|
||||||
|
|
|
@ -291,6 +291,11 @@ func TestSlicestr(t *testing.T) {
|
||||||
{"abcdef", []int{2}, "cdef"},
|
{"abcdef", []int{2}, "cdef"},
|
||||||
{123, []int{1, 3}, "23"},
|
{123, []int{1, 3}, "23"},
|
||||||
{123, []int{1, 2, 3}, false},
|
{123, []int{1, 2, 3}, false},
|
||||||
|
{"abcdef", []int{6}, false},
|
||||||
|
{"abcdef", []int{4, 7}, false},
|
||||||
|
{"abcdef", []int{-1}, false},
|
||||||
|
{"abcdef", []int{-1, 7}, false},
|
||||||
|
{"abcdef", []int{1, -1}, false},
|
||||||
{tstNoStringer{}, []int{0, 1}, false},
|
{tstNoStringer{}, []int{0, 1}, false},
|
||||||
} {
|
} {
|
||||||
result, err := Slicestr(this.v1, this.v2...)
|
result, err := Slicestr(this.v1, this.v2...)
|
||||||
|
|
|
@ -11,7 +11,11 @@ func TestTplGoFuzzReports(t *testing.T) {
|
||||||
for i, this := range []struct {
|
for i, this := range []struct {
|
||||||
data string
|
data string
|
||||||
expectErr int
|
expectErr int
|
||||||
}{{"{{apply .C \"first\" }}", 2}} {
|
}{
|
||||||
|
// Issue #1089
|
||||||
|
{"{{apply .C \"first\" }}", 2},
|
||||||
|
// Issue #1090
|
||||||
|
{"{{ slicestr \"000000\" 10}}", 2}} {
|
||||||
templ := New()
|
templ := New()
|
||||||
|
|
||||||
d := &Data{
|
d := &Data{
|
||||||
|
|
Loading…
Reference in a new issue