From: Sven Schöling Date: Mon, 6 Feb 2012 18:24:48 +0000 (+0100) Subject: filename checks müssen auf defined sein, weil der dateiname auch leer sein kann. X-Git-Tag: release-2.7.0beta1~10^2~4 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=1954092b8d019bbaedede98167795f08878c8a08;p=kivitendo-erp.git filename checks müssen auf defined sein, weil der dateiname auch leer sein kann. Hintergrund: Wenn bei einem fileupload in einem [+] array die letzte Zeile leer ist, wird der Dateiname leer gelassen. Dadurch wurde die Dateizeile fälschlicherweise ins target einsortiert und hat dort die letzte Zeile der echten Uploads überschrieben. --- diff --git a/SL/Request.pm b/SL/Request.pm index 38dfc1f23..a38f3c052 100644 --- a/SL/Request.pm +++ b/SL/Request.pm @@ -103,11 +103,11 @@ sub _parse_multipart_formdata { substr $line, $-[0], $+[0] - $-[0], ""; } - $previous = _store_value($filename ? $target : $temp_target, $name, '') if ($name); - $temp_target->{FILENAME} = $filename if ($filename); + $previous = _store_value(defined $filename ? $target : $temp_target, $name, '') if ($name); + $temp_target->{FILENAME} = $filename if (defined $filename); # for multiple uploads: save the attachments in a SL/Mailer like structure - if ($name && $filename) { + if ($name && defined $filename) { _store_value($target, "ATTACHMENTS.$name.data", $previous); _store_value($temp_target, "ATTACHMENTS.$name.filename", $filename); }