mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 05:11:06 +02:00
ValidFileName returns error
This commit is contained in:
parent
907f2b3824
commit
3e804a4a09
2 changed files with 16 additions and 19 deletions
|
@ -571,20 +571,16 @@ func UnzipDirectory(destination string, source string) error {
|
||||||
|
|
||||||
// ValidFileName checks if a filename is valid
|
// ValidFileName checks if a filename is valid
|
||||||
// by making sure it has no invisible characters
|
// by making sure it has no invisible characters
|
||||||
func ValidFileName(fname string) bool {
|
func ValidFileName(fname string) (err error) {
|
||||||
clean1 := strings.Map(func(r rune) rune {
|
for _, r := range fname {
|
||||||
if unicode.IsGraphic(r) {
|
if !unicode.IsGraphic(r) {
|
||||||
return r
|
err = fmt.Errorf("non-graphical unicode: %x U+%d in '%s'", string(r), r, fname)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
return -1
|
if !unicode.IsPrint(r) {
|
||||||
}, fname)
|
err = fmt.Errorf("non-printable unicode: %x U+%d in '%s'", string(r), r, fname)
|
||||||
|
return
|
||||||
clean2 := strings.Map(func(r rune) rune {
|
|
||||||
if unicode.IsPrint(r) {
|
|
||||||
return r
|
|
||||||
}
|
}
|
||||||
return -1
|
}
|
||||||
}, fname)
|
return
|
||||||
|
|
||||||
return (fname == clean1) && (fname == clean2)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -252,12 +252,13 @@ func TestIsLocalIP(t *testing.T) {
|
||||||
|
|
||||||
func TestValidFileName(t *testing.T) {
|
func TestValidFileName(t *testing.T) {
|
||||||
// contains regular characters
|
// contains regular characters
|
||||||
assert.True(t, ValidFileName("中文.csl"))
|
assert.Nil(t, ValidFileName("中文.csl"))
|
||||||
// contains regular characters
|
// contains regular characters
|
||||||
assert.True(t, ValidFileName("[something].csl"))
|
assert.Nil(t, ValidFileName("[something].csl"))
|
||||||
// contains regular characters
|
// contains regular characters
|
||||||
assert.True(t, ValidFileName("[(something)].csl"))
|
assert.Nil(t, ValidFileName("[(something)].csl"))
|
||||||
assert.True(t, ValidFileName("_index_slash_ssl.html"))
|
|
||||||
// contains invisible character
|
// contains invisible character
|
||||||
assert.False(t, ValidFileName("D中文.cslouglas"))
|
err := ValidFileName("D中文.cslouglas")
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, "non-graphical unicode: e2808b U+8203 in 'D中文.cslouglas'", err.Error())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue