From edda43ed4fae5934e05e8dc3e150c0514af53e07 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 22 Jun 2021 11:19:21 +0200 Subject: [PATCH] status: factoring out normalize_content_filename Signed-off-by: Lorenz Stechauner --- PVE/API2/Storage/Status.pm | 6 +----- PVE/Storage.pm | 12 ++++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/PVE/API2/Storage/Status.pm b/PVE/API2/Storage/Status.pm index 7069244..11ad60f 100644 --- a/PVE/API2/Storage/Status.pm +++ b/PVE/API2/Storage/Status.pm @@ -413,11 +413,7 @@ __PACKAGE__->register_method ({ my $size = -s $tmpfilename; die "temporary file '$tmpfilename' does not exist\n" if !defined($size); - my $filename = $param->{filename}; - - chomp $filename; - $filename =~ s/^.*[\/\\]//; - $filename =~ s/[^-a-zA-Z0-9_.]/_/g; + my $filename = PVE::Storage::normalize_content_filename($param->{filename}); my $path; diff --git a/PVE/Storage.pm b/PVE/Storage.pm index 719fe5b..b8e6311 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -1945,4 +1945,16 @@ sub assert_sid_unused { return undef; } +# removes leading/trailing spaces and (back)slashes completely +# substitutes every non-ASCII-alphanumerical char with '_', except '_.-' +sub normalize_content_filename { + my ($filename) = @_; + + chomp $filename; + $filename =~ s/^.*[\/\\]//; + $filename =~ s/[^a-zA-Z0-9_.-]/_/g; + + return $filename; +} + 1; -- 2.39.2