author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 11 Mar 2013 10:38:09 -0700 | |
branch | s11-update |
changeset 2520 | ceec631e74d1 |
parent 884 | cd5a2da081ff |
permissions | -rw-r--r-- |
600
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
1 |
# |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
2 |
# CVE-2011-2728 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
3 |
# http://perl5.git.perl.org/perl.git/commit/1af4051e077438976a4c12a0622feaf6715bec77 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
4 |
# https://bugzilla.redhat.com/show_bug.cgi?id=742236 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
5 |
# |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
6 |
diff -urN perl-5.12.3/ext/File-Glob/Glob.xs p/ext/File-Glob/Glob.xs |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
7 |
--- perl-5.12.3/ext/File-Glob/Glob.xs 2011-01-09 12:20:55.000000000 -0800 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
8 |
+++ perl-5.12.3/ext/File-Glob/Glob.xs 2011-11-28 00:46:10.593556922 -0800 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
9 |
@@ -1,6 +1,7 @@ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
10 |
#include "EXTERN.h" |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
11 |
#include "perl.h" |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
12 |
#include "XSUB.h" |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
13 |
+#include "strings.h" |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
14 |
|
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
15 |
#include "bsd_glob.h" |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
16 |
|
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
17 |
@@ -49,9 +50,12 @@ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
18 |
/* allow for optional flags argument */ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
19 |
if (items > 1) { |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
20 |
flags = (int) SvIV(ST(1)); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
21 |
+ /* remove unsupported flags */ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
22 |
+ flags &= ~(GLOB_APPEND | GLOB_DOOFFS | GLOB_ALTDIRFUNC | GLOB_MAGCHAR); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
23 |
} |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
24 |
|
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
25 |
/* call glob */ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
26 |
+ bzero(&pglob, sizeof(glob_t)); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
27 |
retval = bsd_glob(pattern, flags, errfunc, &pglob); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
28 |
GLOB_ERROR = retval; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
29 |
|
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
30 |
--- perl-5.12.3/ext/File-Glob/t/basic.t.orig út lis 15 13:22:27 2011 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
31 |
+++ perl-5.12.3/ext/File-Glob/t/basic.t út lis 15 13:22:54 2011 |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
32 |
@@ -15,7 +15,7 @@ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
33 |
} |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
34 |
} |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
35 |
use strict; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
36 |
-use Test::More tests => 14; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
37 |
+use Test::More tests => 15; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
38 |
BEGIN {use_ok('File::Glob', ':glob')}; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
39 |
use Cwd (); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
40 |
|
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
41 |
@@ -195,3 +195,7 @@ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
42 |
local $TODO = "home-made glob doesn't do regexes" if $^O eq 'VMS'; |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
43 |
is_deeply(\@glob_files, ['a_dej']); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
44 |
} |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
45 |
+ |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
46 |
+# This used to segfault. |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
47 |
+my $i = bsd_glob('*', GLOB_ALTDIRFUNC); |
5828c439789b
7111771 Problem with utility/perl
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
48 |
+is(&File::Glob::GLOB_ERROR, 0, "Successfuly ignored unsupported flag"); |