Fix to properly test unicode names

This commit is contained in:
Ilia Ross
2023-10-11 16:46:26 +03:00
parent 2e63031e22
commit 59b944ebff
3 changed files with 13 additions and 2 deletions

View File

@@ -209,6 +209,17 @@ else {
} }
} }
# decode_unicode_string(string)
# Decodes a string from UTF-8 if needed
sub decode_unicode_string
{
my ($str) = @_;
eval "use Encode";
if ($@) {
return $str;
}
return decode('utf8', $str);
}
# list_connections([share]) # list_connections([share])
# Uses the smbstatus program to return a list of connections a share. Each # Uses the smbstatus program to return a list of connections a share. Each

View File

@@ -57,7 +57,7 @@ if ($name ne "global") {
elsif ($in{'old_name'} ne $name && $exists{$name}) { elsif ($in{'old_name'} ne $name && $exists{$name}) {
&error(&text('savefshare_exist', $name)); &error(&text('savefshare_exist', $name));
} }
elsif ($name !~ /^[A-Za-z0-9_\$\-\. ]+$/) { elsif (&decode_unicode_string($name) !~ /^[\p{L}\p{N}_\$\-\.\s]+$/) {
&error(&text('savefshare_mode', $name)); &error(&text('savefshare_mode', $name));
} }
elsif ($name eq "global") { # unreachable code ? EB elsif ($name eq "global") { # unreachable code ? EB

View File

@@ -59,7 +59,7 @@ if ($name ne "global") {
elsif ($in{'old_name'} ne $name && $exists{$name}) { elsif ($in{'old_name'} ne $name && $exists{$name}) {
&error(&text('savepshare_exist', $name)); &error(&text('savepshare_exist', $name));
} }
elsif ($name !~ /^[\p{L}\p{N}_\$\-\.\s]+$/) { elsif (&decode_unicode_string($name) !~ /^[\p{L}\p{N}_\$\-\.\s]+$/) {
&error(&text('savepshare_name', $name)); &error(&text('savepshare_name', $name));
} }
elsif ($name eq "global") { elsif ($name eq "global") {