perl/perl.patch

Thu, 04 Oct 2012 20:30:05 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 04 Oct 2012 20:30:05 +0200
changeset 715
c10fb90893b9
parent 358
832ab278201b
permissions
-rw-r--r--

Correct out of date build configuration, porting to Solaris 11 network
link infrastructure and new libpcap logic. This additionally allows for
device drivers in subdirectories of /dev. Correct packaged nmap
personalities and signatures to work out of the box. Finally, hack
arpd logic to properly close sockets and quit on TERM by repeating
signaling in the run command script. Sadly, all this fails to correct
the run time behaviour of honeyd which fails to bind to the IP layer.

michael@22 1 By default, the "vendor" area is not used, so Perl's installation
michael@22 2 procedure forgot to create its top-level paths, too. In OpenPKG we use
michael@22 3 the "vendor" area, so make sure it is created the same way the "site"
michael@22 4 area is.
michael@22 5
michael@22 6 Index: installperl
michael@501 7 --- installperl.orig 2012-04-25 02:18:34.000000000 +0200
michael@501 8 +++ installperl 2012-05-31 21:51:43.000000000 +0200
michael@501 9 @@ -196,6 +196,8 @@
michael@358 10 my $installarchlib = "$opts{destdir}$Config{installarchlib}";
michael@358 11 my $installsitelib = "$opts{destdir}$Config{installsitelib}";
michael@358 12 my $installsitearch = "$opts{destdir}$Config{installsitearch}";
michael@358 13 +my $installvendorlib = "$opts{destdir}$Config{installvendorlib}";
michael@358 14 +my $installvendorarch = "$opts{destdir}$Config{installvendorarch}";
michael@358 15 my $installman1dir = "$opts{destdir}$Config{installman1dir}";
michael@22 16 my $man1ext = $Config{man1ext};
michael@22 17 my $libperl = $Config{libperl};
michael@501 18 @@ -347,6 +349,8 @@
michael@358 19 mkpath($installarchlib, $opts{verbose}, 0777);
michael@358 20 mkpath($installsitelib, $opts{verbose}, 0777) if ($installsitelib);
michael@358 21 mkpath($installsitearch, $opts{verbose}, 0777) if ($installsitearch);
michael@358 22 +mkpath($installvendorlib, $opts{verbose}, 0777) if ($installvendorlib);
michael@358 23 +mkpath($installvendorarch, $opts{verbose}, 0777) if ($installvendorarch);
michael@22 24
michael@501 25 if (-d 'lib') {
michael@501 26 find({no_chdir => 1, wanted => \&installlib}, 'lib')
michael@22 27
michael@22 28 -----------------------------------------------------------------------------
michael@22 29
michael@22 30 Port to [Open]Darwin 6.6.2:
michael@22 31
michael@22 32 1. In OpenPKG, Perl does not use the vendor GCC and our GCC does not
michael@22 33 understand "-no-cpp-precomp", so remove this build option.
michael@22 34
michael@22 35 2. The <sys/mman.h> indirectly includes system specific headers
michael@22 36 which in turn have fields named "environ" while Perl uses
michael@22 37 a define of "environ" internally. So wrap the inclusion.
michael@22 38
michael@22 39 3. Darwin 6 no longer accepts the non-standard "#import" statements,
michael@22 40 so replace with "#include" and circumvent some header problem
michael@22 41 related to the non-standard "__private_extern__" attribute.
michael@22 42
michael@22 43 Index: hints/darwin.sh
michael@501 44 --- hints/darwin.sh.orig 2012-02-20 20:48:38.000000000 +0100
michael@501 45 +++ hints/darwin.sh 2012-05-31 21:51:43.000000000 +0200
michael@501 46 @@ -181,6 +181,20 @@
michael@501 47 ldflags="${ldflags} -flat_namespace"
michael@501 48 lddlflags="${ldflags} -bundle -undefined suppress"
michael@501 49 ;;
michael@501 50 +9.*)
michael@501 51 + lddlflags="${ldflags} -bundle -undefined dynamic_lookup"
michael@501 52 + case "$ld" in
michael@501 53 + *MACOSX_DEVELOPMENT_TARGET*) ;;
michael@501 54 + *) ld="env MACOSX_DEPLOYMENT_TARGET=10.5 ${ld}" ;;
michael@501 55 + esac
michael@501 56 + ;;
michael@501 57 +10.*)
michael@501 58 + lddlflags="${ldflags} -bundle -undefined dynamic_lookup"
michael@501 59 + case "$ld" in
michael@501 60 + *MACOSX_DEVELOPMENT_TARGET*) ;;
michael@501 61 + *) ld="env MACOSX_DEPLOYMENT_TARGET=10.6 ${ld}" ;;
michael@501 62 + esac
michael@501 63 + ;;
michael@501 64 *)
michael@501 65 lddlflags="${ldflags} -bundle -undefined dynamic_lookup"
michael@501 66 case "$ld" in
michael@501 67 @@ -191,8 +205,7 @@
michael@22 68 esac
michael@22 69 ldlibpthname='DYLD_LIBRARY_PATH';
michael@22 70
michael@22 71 -# useshrplib=true results in much slower startup times.
michael@22 72 -# 'false' is the default value. Use Configure -Duseshrplib to override.
michael@22 73 +useshrplib='true'
michael@22 74
michael@22 75 cat > UU/archname.cbu <<'EOCBU'
michael@22 76 # This script UU/archname.cbu will get 'called-back' by Configure
michael@501 77 @@ -326,3 +339,6 @@
michael@501 78 # makefile in the same place. Since Darwin uses GNU make, this dodges
michael@501 79 # the problem.
michael@501 80 firstmakefile=GNUmakefile;
michael@501 81 +
michael@501 82 +usenm='false'
michael@501 83 +
michael@358 84 Index: ext/DynaLoader/dl_dyld.xs
michael@501 85 --- ext/DynaLoader/dl_dyld.xs.orig 2012-02-15 05:44:47.000000000 +0100
michael@501 86 +++ ext/DynaLoader/dl_dyld.xs 2012-05-31 21:51:43.000000000 +0200
michael@358 87 @@ -47,7 +47,13 @@
michael@358 88
michael@358 89 #undef environ
michael@358 90 #undef bool
michael@358 91 +#ifdef PERL_DARWIN
michael@358 92 +#define __private_extern__ extern
michael@358 93 +#include <mach-o/dyld.h>
michael@358 94 +#undef __private_extern__
michael@358 95 +#else
michael@358 96 #import <mach-o/dyld.h>
michael@358 97 +#endif
michael@358 98
michael@358 99 static char *dlerror()
michael@358 100 {
michael@22 101
michael@22 102 -----------------------------------------------------------------------------
michael@22 103
michael@22 104 Port to Tru64 5.1:
michael@22 105
michael@22 106 Under Tru64 our gcc has to be built without binutils and the system
michael@22 107 ld(1) does not accept a "-O" option, so remove the whole passing of
michael@22 108 optimization flags to ld(1). Under a brain-dead platform like Tru64 we
michael@22 109 really don't need any more optimization because we are already happy if
michael@22 110 it works at all.
michael@22 111
michael@22 112 Index: hints/dec_osf.sh
michael@501 113 --- hints/dec_osf.sh.orig 2012-04-25 02:18:34.000000000 +0200
michael@501 114 +++ hints/dec_osf.sh 2012-05-31 21:51:43.000000000 +0200
michael@22 115 @@ -73,15 +73,6 @@
michael@22 116 *) if $test "X$optimize" = "X$undef"; then
michael@22 117 lddlflags="$lddlflags -msym"
michael@22 118 else
michael@22 119 - case "$myosvers" in
michael@22 120 - *4.0D*)
michael@22 121 - # QAR 56761: -O4 + .so may produce broken code,
michael@22 122 - # fixed in 4.0E or better.
michael@22 123 - ;;
michael@22 124 - *)
michael@22 125 - lddlflags="$lddlflags $optimize"
michael@22 126 - ;;
michael@22 127 - esac
michael@22 128 # -msym: If using a sufficiently recent /sbin/loader,
michael@22 129 # keep the module symbols with the modules.
michael@22 130 lddlflags="$lddlflags -msym $_lddlflags_strict_ansi"
michael@22 131
michael@22 132 -----------------------------------------------------------------------------
michael@22 133
michael@358 134 Linker flag change for Solaris.
michael@22 135
michael@22 136 Index: Configure
michael@501 137 --- Configure.orig 2012-04-25 02:18:30.000000000 +0200
michael@501 138 +++ Configure 2012-05-31 21:51:44.000000000 +0200
michael@501 139 @@ -8014,9 +7994,9 @@
michael@22 140 ;;
michael@22 141 linux|irix*|gnu*) dflt="-shared $optimize" ;;
michael@22 142 next) dflt='none' ;;
michael@22 143 - solaris) dflt='-G' ;;
michael@22 144 + solaris) dflt='-shared' ;;
michael@22 145 sunos) dflt='-assert nodefinitions' ;;
michael@358 146 - svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
michael@358 147 + svr4*|esix*|nonstopux) dflt="-shared $ldflags" ;;
michael@22 148 *) dflt='none' ;;
michael@358 149 esac
michael@358 150 ;;
michael@22 151
michael@22 152 -----------------------------------------------------------------------------
michael@22 153
michael@22 154 Security Fix (CVE-2005-3962, OpenPKG-SA-2005.025-perl)
michael@22 155
michael@22 156 Index: sv.c
michael@501 157 --- sv.c.orig 2012-04-25 02:18:35.000000000 +0200
michael@501 158 +++ sv.c 2012-05-31 21:51:44.000000000 +0200
michael@501 159 @@ -10283,7 +10283,10 @@
michael@22 160 if ( (width = expect_number(&q)) ) {
michael@22 161 if (*q == '$') {
michael@22 162 ++q;
michael@22 163 - efix = width;
michael@22 164 + if (width > PERL_INT_MAX)
michael@22 165 + efix = PERL_INT_MAX;
michael@22 166 + else
michael@22 167 + efix = width;
michael@22 168 } else {
michael@22 169 goto gotwidth;
michael@22 170 }
michael@22 171
michael@22 172 -----------------------------------------------------------------------------
michael@22 173
michael@358 174 Do not use -fstack-protector as it causes too much portability issues.
michael@22 175
michael@358 176 Index: Configure
michael@501 177 --- Configure.orig 2012-04-25 02:18:30.000000000 +0200
michael@501 178 +++ Configure 2012-05-31 21:51:44.000000000 +0200
michael@501 179 @@ -5103,17 +5103,6 @@
michael@358 180 ;;
michael@358 181 esac
michael@358 182
michael@358 183 - # on x86_64 (at least) we require an extra library (libssp) in the
michael@358 184 - # link command line. This library is not named, so I infer that it is
michael@358 185 - # an implementation detail that may change. Hence the safest approach
michael@358 186 - # is to add the flag to the flags passed to the compiler at link time,
michael@358 187 - # as that way the compiler can do the right implementation dependant
michael@358 188 - # thing. (NWC)
michael@358 189 - case "$gccversion" in
michael@358 190 - ?*) set stack-protector -fstack-protector
michael@358 191 - eval $checkccflag
michael@358 192 - ;;
michael@358 193 - esac
michael@22 194 ;;
michael@22 195 esac
michael@358 196
michael@501 197 @@ -5252,15 +5241,6 @@
michael@358 198 ;;
michael@358 199 *) dflt="$ldflags";;
michael@358 200 esac
michael@358 201 -# See note above about -fstack-protector
michael@358 202 -case "$ccflags" in
michael@358 203 -*-fstack-protector*)
michael@358 204 - case "$dflt" in
michael@358 205 - *-fstack-protector*) ;; # Don't add it again
michael@358 206 - *) dflt="$dflt -fstack-protector" ;;
michael@358 207 - esac
michael@358 208 - ;;
michael@358 209 -esac
michael@358 210
michael@358 211 : Try to guess additional flags to pick up local libraries.
michael@358 212 for thislibdir in $libpth; do
michael@501 213 @@ -8043,14 +8023,6 @@
michael@358 214 ''|' ') dflt='none' ;;
michael@358 215 esac
michael@358 216
michael@358 217 - case "$ldflags" in
michael@358 218 - *-fstack-protector*)
michael@358 219 - case "$dflt" in
michael@358 220 - *-fstack-protector*) ;; # Don't add it again
michael@358 221 - *) dflt="$dflt -fstack-protector" ;;
michael@358 222 - esac
michael@358 223 - ;;
michael@358 224 - esac
michael@358 225
michael@358 226
michael@358 227 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
michael@22 228
michael@23 229 -----------------------------------------------------------------------------
michael@23 230
michael@358 231 Make sure we install into <prefix>/lib/perl/ and not <prefix>/lib/perl5/
michael@23 232
michael@358 233 Index: Configure
michael@501 234 --- Configure.orig 2012-04-25 02:18:30.000000000 +0200
michael@501 235 +++ Configure 2012-05-31 21:51:44.000000000 +0200
michael@501 236 @@ -1778,7 +1778,7 @@
michael@358 237 touch posthint.sh
michael@23 238
michael@358 239 : set package name
michael@358 240 -package='perl5'
michael@358 241 +package='perl'
michael@358 242 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
michael@358 243 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
michael@358 244 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
michael@358 245
michael@358 246 -----------------------------------------------------------------------------
michael@23 247
michael@358 248 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0976
michael@358 249 Multiple scripts in the perl package in Trustix Secure Linux 1.5
michael@358 250 through 2.1, and possibly other operating systems, allows local
michael@358 251 users to overwrite files via a symlink attack on temporary files.
michael@358 252
michael@358 253 Index: cpan/CGI/lib/CGI/Cookie.pm
michael@501 254 --- cpan/CGI/lib/CGI/Cookie.pm.orig 2012-02-15 05:44:36.000000000 +0100
michael@501 255 +++ cpan/CGI/lib/CGI/Cookie.pm 2012-05-31 21:51:44.000000000 +0200
michael@358 256 @@ -464,7 +464,7 @@
michael@358 257 You may also retrieve cookies that were stored in some external
michael@358 258 form using the parse() class method:
michael@358 259
michael@358 260 - $COOKIES = `cat /usr/tmp/Cookie_stash`;
michael@358 261 + $COOKIES = `cat /var/run/www/Cookie_stash`;
michael@358 262 %cookies = CGI::Cookie->parse($COOKIES);
michael@358 263
michael@358 264 If you are in a mod_perl environment, you can save some overhead by
michael@358 265
michael@358 266 -----------------------------------------------------------------------------
michael@358 267
michael@358 268 Linking against just libgdbm_compat under at least SUSE fails
michael@358 269 because it also needs libgdbm (which Perl doesn't pick up, too)
michael@358 270
michael@358 271 Index: hints/linux.sh
michael@501 272 --- hints/linux.sh.orig 2012-05-14 21:49:22.000000000 +0200
michael@501 273 +++ hints/linux.sh 2012-05-31 21:51:44.000000000 +0200
michael@501 274 @@ -58,7 +58,9 @@
michael@358 275 libswanted="$*"
michael@358 276
michael@358 277 # Debian 4.0 puts ndbm in the -lgdbm_compat library.
michael@358 278 -libswanted="$libswanted gdbm_compat"
michael@358 279 +if [ -f /etc/debian_version -o -f /etc/ubuntu_version ]; then
michael@358 280 + libswanted="$libswanted gdbm_compat"
michael@358 281 +fi
michael@358 282
michael@358 283 # If you have glibc, then report the version for ./myconfig bug reporting.
michael@358 284 # (Configure doesn't need to know the specific version since it just uses
michael@358 285

mercurial