Handle hostnames with upper-case letters
[webmin.git] / chooser.cgi
index 7a14173..1b4dbb5 100755 (executable)
@@ -18,15 +18,19 @@ use WebminCore;
 
 $trust_unknown_referers = 1;
 &init_config();
+if (&get_product_name() eq 'usermin') {
+       &switch_to_remote_user();
+       }
 %access = &get_module_acl();
 
 # Work out root directory
+local @uinfo = getpwnam($remote_user);
 if (!$access{'root'}) {
-       local @uinfo = getpwnam($remote_user);
        $rootdir = $uinfo[7] ? $uinfo[7] : "/";
        }
 else {
        $rootdir = $access{'root'};
+       $rootdir =~ s/^\~/$uinfo[7]/;
        }
 
 # Switch to correct Unix user
@@ -172,10 +176,10 @@ EOF
 
                if ($f eq "..") {
                        $dir =~ /^(.*\/)[^\/]+\/$/;
-                       $link = "<a href=\"\" onClick='parentdir(\"".&html_escape(quotemeta($1))."\"); return false'>";
+                       $link = "<a href=\"\" onClick='parentdir(\"".&quote_escape($1)."\"); return false'>";
                        }
                else {
-                       $link = "<a href=\"\" onClick='fileclick(\"".&html_escape(quotemeta("$dir$f"))."\", $isdir); return false'>";
+                       $link = "<a href=\"\" onClick='fileclick(\"".&quote_escape("$dir$f")."\", $isdir); return false'>";
                        }
                local @cols;
                push(@cols, "$link<img border=0 src=$gconfig{'webprefix'}/images/$icon></a>");