From e436a6b05600897aed8c5420d44bf4e1b39cb74f Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 5 Jul 2007 09:57:34 +0000 Subject: [PATCH] Webdav: Wenn eine Pfadkomponente Leerzeichen enthielt (z.B. "Storno zu ..."), dann wurden komplett falsche Links erzeugt. --- SL/Common.pm | 23 +++++++++++++++++------ doc/changelog | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/SL/Common.pm b/SL/Common.pm index 9c83c7d17..c67c58c00 100644 --- a/SL/Common.pm +++ b/SL/Common.pm @@ -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; } } diff --git a/doc/changelog b/doc/changelog index 809673cd1..80789179e 100644 --- a/doc/changelog +++ b/doc/changelog @@ -117,6 +117,8 @@ Bugfixes: + - Webdav: Wenn eine Pfadkomponente Leerzeichen enthielt + (z.B. "Storno zu ..."), dann wurden komplett falsche Links erzeugt. - Bei Einkaufsrechnungen wurde das falsche Datumsfeld zur Berechnung der Steuern herangezogen, sodass für 2006 19% benutzt wurde. - Beim Erfassen von Dienstleistungen wurde beim "Erneuern" die -- 2.20.1