From 12ae30e293f018492d6061272d8fad9b2bde04fd Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 25 Jan 2022 22:09:52 +0100 Subject: [PATCH] Restrict file name to AlNum only Fixes #20 --- migration/cleanname.go | 8 +++----- migration/cleanname_test.go | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/migration/cleanname.go b/migration/cleanname.go index 446fdd6..d9014f6 100644 --- a/migration/cleanname.go +++ b/migration/cleanname.go @@ -1,8 +1,8 @@ package migration import ( - "os" "strings" + "unicode" "github.com/google/uuid" ) @@ -10,12 +10,10 @@ import ( // FileName returns sanitized filename without path delimiters func (op *Payload_OtpParameters) FileName() string { return strings.Map(func(r rune) rune { - switch r { - case os.PathSeparator, os.PathListSeparator: - return '_' - default: + if unicode.IsLetter(r) || unicode.IsNumber(r) { return r } + return '_' }, op.Name+"_"+op.Issuer) } diff --git a/migration/cleanname_test.go b/migration/cleanname_test.go index 2ff3f76..0a0c531 100644 --- a/migration/cleanname_test.go +++ b/migration/cleanname_test.go @@ -19,14 +19,14 @@ func TestFileName(t *testing.T) { Name: "A/B:C.d", Issuer: "Issuer", }, - want: "A_B_C.d_Issuer", + want: "A_B_C_d_Issuer", }, { op: &Payload_OtpParameters{ Name: "A/../B:C.d", Issuer: "Issuer", }, - want: "A_.._B_C.d_Issuer", + want: "A____B_C_d_Issuer", }, }