Hello community,

here is the log from the commit of package perl-CGI for openSUSE:Factory 
checked in at 2019-05-03 22:27:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-CGI (Old)
 and      /work/SRC/openSUSE:Factory/.perl-CGI.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-CGI"

Fri May  3 22:27:46 2019 rev:12 rq:700229 version:4.43

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-CGI/perl-CGI.changes        2019-03-28 
22:44:52.723090854 +0100
+++ /work/SRC/openSUSE:Factory/.perl-CGI.new.5148/perl-CGI.changes      
2019-05-03 22:27:51.984355388 +0200
@@ -1,0 +2,11 @@
+Thu May  2 05:03:14 UTC 2019 - Stephan Kulow <[email protected]>
+
+- updated to 4.43
+   see /usr/share/doc/packages/perl-CGI/Changes
+
+  4.43 2019-05-01
+  
+      [ FIX / TESTING ]
+      - support unquoted multipart/form-data name values (GH #234)
+
+-------------------------------------------------------------------

Old:
----
  CGI-4.42.tar.gz

New:
----
  CGI-4.43.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-CGI.spec ++++++
--- /var/tmp/diff_new_pack.kUugy2/_old  2019-05-03 22:27:52.556355199 +0200
+++ /var/tmp/diff_new_pack.kUugy2/_new  2019-05-03 22:27:52.556355199 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           perl-CGI
-Version:        4.42
+Version:        4.43
 Release:        0
 %define cpan_name CGI
 Summary:        Handle Common Gateway Interface requests and responses

++++++ CGI-4.42.tar.gz -> CGI-4.43.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/Changes new/CGI-4.43/Changes
--- old/CGI-4.42/Changes        2019-03-26 17:27:01.000000000 +0100
+++ new/CGI-4.43/Changes        2019-05-01 09:58:26.000000000 +0200
@@ -1,3 +1,8 @@
+4.43 2019-05-01
+
+    [ FIX / TESTING ]
+    - support unquoted multipart/form-data name values (GH #234)
+
 4.42 2019-03-26
 
     [ DOCUMENTATION ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/MANIFEST new/CGI-4.43/MANIFEST
--- old/CGI-4.42/MANIFEST       2019-03-26 17:29:14.000000000 +0100
+++ new/CGI-4.43/MANIFEST       2019-05-01 16:27:11.000000000 +0200
@@ -82,6 +82,8 @@
 t/upload.t
 t/uploadInfo.t
 t/upload_post_text.txt
+t/upload_post_quoted_unquoted.txt
+t/upload_quoted_unquoted.t
 t/url.t
 t/user_agent.t
 t/utf8.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/META.json new/CGI-4.43/META.json
--- old/CGI-4.42/META.json      2019-03-26 17:29:14.000000000 +0100
+++ new/CGI-4.43/META.json      2019-05-01 16:27:11.000000000 +0200
@@ -79,6 +79,6 @@
          "web" : "https://github.com/leejo/CGI.pm";
       }
    },
-   "version" : "4.42",
+   "version" : "4.43",
    "x_serialization_backend" : "JSON::PP version 2.97001"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/META.yml new/CGI-4.43/META.yml
--- old/CGI-4.42/META.yml       2019-03-26 17:29:14.000000000 +0100
+++ new/CGI-4.43/META.yml       2019-05-01 16:27:10.000000000 +0200
@@ -48,5 +48,5 @@
   homepage: https://metacpan.org/module/CGI
   license: http://dev.perl.org/licenses/
   repository: https://github.com/leejo/CGI.pm
-version: '4.42'
+version: '4.43'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/Carp.pm new/CGI-4.43/lib/CGI/Carp.pm
--- old/CGI-4.42/lib/CGI/Carp.pm        2019-03-26 17:26:14.000000000 +0100
+++ new/CGI-4.43/lib/CGI/Carp.pm        2019-05-01 09:58:26.000000000 +0200
@@ -327,7 +327,7 @@
 
 $main::SIG{__WARN__}=\&CGI::Carp::warn;
 
-$CGI::Carp::VERSION     = '4.42';
+$CGI::Carp::VERSION     = '4.43';
 $CGI::Carp::CUSTOM_MSG  = undef;
 $CGI::Carp::DIE_HANDLER = undef;
 $CGI::Carp::TO_BROWSER  = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/Cookie.pm 
new/CGI-4.43/lib/CGI/Cookie.pm
--- old/CGI-4.42/lib/CGI/Cookie.pm      2019-03-26 17:26:19.000000000 +0100
+++ new/CGI-4.43/lib/CGI/Cookie.pm      2019-05-01 09:58:26.000000000 +0200
@@ -5,7 +5,7 @@
 
 use if $] >= 5.019, 'deprecate';
 
-our $VERSION='4.42';
+our $VERSION='4.43';
 
 use CGI::Util qw(rearrange unescape escape);
 use overload '""' => \&as_string, 'cmp' => \&compare, 'fallback' => 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/File/Temp.pm 
new/CGI-4.43/lib/CGI/File/Temp.pm
--- old/CGI-4.42/lib/CGI/File/Temp.pm   2019-03-26 17:26:11.000000000 +0100
+++ new/CGI-4.43/lib/CGI/File/Temp.pm   2019-05-01 09:58:26.000000000 +0200
@@ -3,7 +3,7 @@
 # you use it directly and your code breaks horribly.
 package CGI::File::Temp;
 
-$CGI::File::Temp::VERSION = '4.42';
+$CGI::File::Temp::VERSION = '4.43';
 
 use parent File::Temp;
 use parent Fh;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/Pretty.pm 
new/CGI-4.43/lib/CGI/Pretty.pm
--- old/CGI-4.42/lib/CGI/Pretty.pm      2019-03-26 17:26:22.000000000 +0100
+++ new/CGI-4.43/lib/CGI/Pretty.pm      2019-05-01 09:58:26.000000000 +0200
@@ -6,7 +6,7 @@
 use if $] >= 5.019, 'deprecate';
 use CGI ();
 
-$CGI::Pretty::VERSION = '4.42';
+$CGI::Pretty::VERSION = '4.43';
 $CGI::DefaultClass = __PACKAGE__;
 @CGI::Pretty::ISA = qw( CGI );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/Push.pm new/CGI-4.43/lib/CGI/Push.pm
--- old/CGI-4.42/lib/CGI/Push.pm        2019-03-26 17:26:24.000000000 +0100
+++ new/CGI-4.43/lib/CGI/Push.pm        2019-05-01 09:58:26.000000000 +0200
@@ -6,7 +6,7 @@
 use warnings;
 #/;
 
-$CGI::Push::VERSION='4.42';
+$CGI::Push::VERSION='4.43';
 use CGI;
 use CGI::Util 'rearrange';
 @ISA = ('CGI');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI/Util.pm new/CGI-4.43/lib/CGI/Util.pm
--- old/CGI-4.42/lib/CGI/Util.pm        2019-03-26 17:26:17.000000000 +0100
+++ new/CGI-4.43/lib/CGI/Util.pm        2019-05-01 09:58:26.000000000 +0200
@@ -6,7 +6,7 @@
 our @EXPORT_OK = qw(rearrange rearrange_header make_attributes unescape escape
         expires ebcdic2ascii ascii2ebcdic);
 
-our $VERSION = '4.42';
+our $VERSION = '4.43';
 
 our $_EBCDIC = "\t" ne "\011";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/CGI.pm new/CGI-4.43/lib/CGI.pm
--- old/CGI-4.42/lib/CGI.pm     2019-03-26 17:26:32.000000000 +0100
+++ new/CGI-4.43/lib/CGI.pm     2019-05-01 09:58:26.000000000 +0200
@@ -8,7 +8,7 @@
 use warnings;
 #/;
 
-$CGI::VERSION='4.42';
+$CGI::VERSION='4.43';
 
 use CGI::Util qw(rearrange rearrange_header make_attributes unescape escape 
expires ebcdic2ascii ascii2ebcdic);
 
@@ -3343,7 +3343,7 @@
 
        $header{'Content-Disposition'} ||= ''; # quench uninit variable warning
 
-       my($param)= $header{'Content-Disposition'}=~/[\s;]name="([^"]*)"/;
+       my $param = _mp_value_parse( $header{'Content-Disposition'},'name' );
         $param .= $TAINTED;
 
         # See RFC 1867, 2183, 2045
@@ -3450,6 +3450,28 @@
     }
 }
 
+sub _mp_value_parse {
+       my ( $string,$field ) = @_;
+
+       my $is_quoted = $string =~/[\s;]$field="/ ? 1 : 0;
+       my $param;
+
+       if ( $is_quoted ) {
+               # a quoted token cannot contain anything but an unescaped quote
+               ($param) = $string =~/[\s;]$field="((?:\\"|[^"])*)"/;
+       } else {
+               # a plain token cannot contain any reserved characters
+               # https://tools.ietf.org/html/rfc2616#section-2.2
+               # separators     = "(" | ")" | "<" | ">" | "@"
+               #                | "," | ";" | ":" | "\" | <">
+               #                | "/" | "[" | "]" | "?" | "="
+               #                | "{" | "}" | SP | HT
+               ($param) = $string 
=~/[\s;]$field=([^\(\)<>\@,;:\\"\/\[\]\?=\{\} \015\n\t]*)/;
+       }
+
+       return $param;
+}
+
 #####
 # subroutine: read_multipart_related
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/lib/Fh.pm new/CGI-4.43/lib/Fh.pm
--- old/CGI-4.42/lib/Fh.pm      2019-03-26 17:26:09.000000000 +0100
+++ new/CGI-4.43/lib/Fh.pm      2019-05-01 09:58:26.000000000 +0200
@@ -5,6 +5,6 @@
 use strict;
 use warnings;
 
-$Fh::VERSION = '4.42';
+$Fh::VERSION = '4.43';
 
 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/t/upload_post_quoted_unquoted.txt 
new/CGI-4.43/t/upload_post_quoted_unquoted.txt
--- old/CGI-4.42/t/upload_post_quoted_unquoted.txt      1970-01-01 
01:00:00.000000000 +0100
+++ new/CGI-4.43/t/upload_post_quoted_unquoted.txt      2019-05-01 
09:58:26.000000000 +0200
@@ -0,0 +1,27 @@
+------MyGreatBoundary
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: form-data; name=code
+
+4019300163786
+------MyGreatBoundary
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: form-data; name="word"
+
+squeaky
+------MyGreatBoundary
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: form-data; name="why do \"this\""
+
+because
+------MyGreatBoundary
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: form-data; name="hate ()<>@,;:[]?={}      /\""
+
+really hateful
+------MyGreatBoundary
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: form-data; name=éttu
+
+oui
+------MyGreatBoundary--
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CGI-4.42/t/upload_quoted_unquoted.t 
new/CGI-4.43/t/upload_quoted_unquoted.t
--- old/CGI-4.42/t/upload_quoted_unquoted.t     1970-01-01 01:00:00.000000000 
+0100
+++ new/CGI-4.43/t/upload_quoted_unquoted.t     2019-05-01 09:58:26.000000000 
+0200
@@ -0,0 +1,78 @@
+#!/usr/local/bin/perl -w
+
+use strict;
+use Test::More 'no_plan';
+use CGI qw/ :cgi /;
+use utf8;
+
+my %myenv;
+
+BEGIN {
+    %myenv = (
+        'SCRIPT_NAME'       => '/test.cgi',
+        'SERVER_NAME'       => 'perl.org',
+        'HTTP_CONNECTION'   => 'TE, close',
+        'REQUEST_METHOD'    => 'POST',
+        'SCRIPT_URI'        => 'http://www.perl.org/test.cgi',
+        'CONTENT_LENGTH'    => 3285,
+        'SCRIPT_FILENAME'   => '/home/usr/test.cgi',
+        'SERVER_SOFTWARE'   => 'Apache/1.3.27 (Unix) ',
+        'HTTP_TE'           => 'deflate,gzip;q=0.3',
+        'QUERY_STRING'      => '',
+        'REMOTE_PORT'       => '1855',
+        'HTTP_USER_AGENT'   => 'Mozilla/5.0 (compatible; Konqueror/2.1.1; 
X11)',
+        'SERVER_PORT'       => '80',
+        'REMOTE_ADDR'       => '127.0.0.1',
+        'CONTENT_TYPE'      => 'multipart/form-data; 
boundary="----MyGreatBoundary',
+        'SERVER_PROTOCOL'   => 'HTTP/1.1',
+        'PATH'              => '/usr/local/bin:/usr/bin:/bin',
+        'REQUEST_URI'       => '/test.cgi',
+        'GATEWAY_INTERFACE' => 'CGI/1.1',
+        'SCRIPT_URL'        => '/test.cgi',
+        'SERVER_ADDR'       => '127.0.0.1',
+        'DOCUMENT_ROOT'     => '/home/develop',
+        'HTTP_HOST'         => 'www.perl.org'
+    );
+
+    for my $key (keys %myenv) {
+        $ENV{$key} = $myenv{$key};
+    }
+}
+
+END {
+    for my $key (keys %myenv) {
+        delete $ENV{$key};
+    }
+}
+
+my $q;
+
+{
+    local *STDIN;
+    open STDIN, '<t/upload_post_quoted_unquoted.txt'
+        or die 'missing test file t/upload_post_quoted_unquoted.txt';
+    binmode STDIN;
+    $q = CGI->new;
+}
+
+note explain $q;
+
+# simple names
+is( $q->param('code'),'4019300163786','code' );
+is( $q->param('word'),'squeaky','word' );
+
+TODO: {
+       # may need to MIME encode the name value in this case
+       local $TODO = "->param borked with non-ascii?";
+       is( $q->param('éttu'),'oui','éttu' );
+};
+
+# hateful names
+is( $q->param('why do \"this\"'),'because','quoted with quote' );
+is(
+       $q->param("hate ()<>@,;:[]?={}\t/\\\""),
+       'really hateful',
+       'reserved chars',
+);
+
+# vim: nospell


Reply via email to