Change 32683 by [EMAIL PROTECTED] on 2007/12/21 03:14:20

        Subject: [perl #37607] CGI file upload file name parsing errors
        From: [EMAIL PROTECTED] (Marko Asplund)
        Date: Fri, 4 Nov 2005 13:40:05 +0200 (EET)
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/perl/lib/CGI.pm#69 edit

Differences ...

==== //depot/perl/lib/CGI.pm#69 (text) ====
Index: perl/lib/CGI.pm
--- perl/lib/CGI.pm#68~32661~   2007-12-19 11:55:00.000000000 -0800
+++ perl/lib/CGI.pm     2007-12-20 19:14:20.000000000 -0800
@@ -19,7 +19,7 @@
 #   http://stein.cshl.org/WWW/software/CGI/
 
 $CGI::revision = '$Id: CGI.pm,v 1.240 2007/11/30 18:58:27 lstein Exp $';
-$CGI::VERSION='3.31';
+$CGI::VERSION='3.31_01';
 
 # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
 # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
@@ -3379,7 +3379,11 @@
         $param .= $TAINTED;
 
        # Bug:  Netscape doesn't escape quotation marks in file names!!!
-       my($filename) = $header{'Content-Disposition'}=~/ filename="([^"]*)"/;
+       # See RFC 1867, 2183, 2045
+       # NB: File content will be loaded into memory should
+       # content-disposition parsing fail.
+       my ($filename) = $header{'Content-Disposition'}=~/ 
filename=(("[^"]*")|([a-z\d!\#'\*\+,\.^_\`\{\}\|\~]*))/i;
+       $filename =~ s/^"([^"]*)"$/$1/;
        # Test for Opera's multiple upload feature
        my($multipart) = ( defined( $header{'Content-Type'} ) &&
                $header{'Content-Type'} =~ /multipart\/mixed/ ) ?
End of Patch.

Reply via email to