Webdav: Wenn eine Pfadkomponente Leerzeichen enthielt (z.B. "Storno zu ..."), dann...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jul 2007 09:57:34 +0000 (09:57 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jul 2007 09:57:34 +0000 (09:57 +0000)
SL/Common.pm
doc/changelog

index 9c83c7d..c67c58c 100644 (file)
@@ -290,13 +290,24 @@ sub webdav_folder {
   } else {
     my $base_path = substr($ENV{'SCRIPT_NAME'}, 1);
     $base_path =~ s|[^/]+$||;
+    $base_path =~ s|/$||;
 
-    foreach my $file (<$path/*>) {
-      my $fname = $file;
-      $fname =~ s|.*/||;
-      $form->{WEBDAV}{$fname} =
-        ($ENV{"HTTPS"} ? "https://" : "http://") .
-        $ENV{'SERVER_NAME'} . "/" . $base_path . $file;
+    if (opendir $dir, $path) {
+      foreach my $file (readdir $dir) {
+        next if (($file eq '.') || ($file eq '..'));
+
+        my $fname = $file;
+        $fname  =~ s|.*/||;
+
+        my $physical_file = "$path/$file";
+
+        $file  = join('/', map { $form->escape($_) } grep { $_ } split m|/+|, "$path/$file");
+        $file .=  '/' if (-d $physical_file);
+
+        $form->{WEBDAV}->{$fname} = ($ENV{"HTTPS"} ? "https://" : "http://") . $ENV{'SERVER_NAME'} . "/$base_path/$file";
+      }
+
+      closedir $dir;
     }
   }
 
index 809673c..8078917 100644 (file)
 \r
   Bugfixes:\r
 \r
+  - Webdav: Wenn eine Pfadkomponente Leerzeichen enthielt\r
+    (z.B. "Storno zu ..."), dann wurden komplett falsche Links erzeugt.\r
   - Bei Einkaufsrechnungen wurde das falsche Datumsfeld zur Berechnung\r
     der Steuern herangezogen, sodass für 2006 19% benutzt wurde.\r
   - Beim Erfassen von Dienstleistungen wurde beim "Erneuern" die\r