You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
292 lines
9.3 KiB
292 lines
9.3 KiB
By default, the "vendor" area is not used, so Perl's installation |
|
procedure forgot to create its top-level paths, too. In OpenPKG we use |
|
the "vendor" area, so make sure it is created the same way the "site" |
|
area is. |
|
|
|
Index: installperl |
|
--- installperl.orig 2006-08-15 14:37:41 +0200 |
|
+++ installperl 2006-08-18 21:05:05 +0200 |
|
@@ -211,6 +211,8 @@ |
|
my $installarchlib = "$destdir$Config{installarchlib}"; |
|
my $installsitelib = "$destdir$Config{installsitelib}"; |
|
my $installsitearch = "$destdir$Config{installsitearch}"; |
|
+my $installvendorlib = "$destdir$Config{installvendorlib}"; |
|
+my $installvendorarch = "$destdir$Config{installvendorarch}"; |
|
my $installman1dir = "$destdir$Config{installman1dir}"; |
|
my $man1ext = $Config{man1ext}; |
|
my $libperl = $Config{libperl}; |
|
@@ -403,6 +405,8 @@ |
|
mkpath($installarchlib, $verbose, 0777); |
|
mkpath($installsitelib, $verbose, 0777) if ($installsitelib); |
|
mkpath($installsitearch, $verbose, 0777) if ($installsitearch); |
|
+mkpath($installvendorlib, $verbose, 0777) if ($installvendorlib); |
|
+mkpath($installvendorarch, $verbose, 0777) if ($installvendorarch); |
|
|
|
if (chdir "lib") { |
|
$do_installarchlib = ! samepath($installarchlib, '.'); |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
By default, the Perl module search order is "use lib, -I, PERL[5]LIB, |
|
perl, site, vendor, other". This means that in OpenPKG both the modules |
|
installed via CPAN shell (in "site" area) and the "perl-xxx" packages |
|
(in "vendor" area) cannot override the (sometimes obsoleted) module |
|
versions distributed with Perl (in "perl" area). Hence, we change |
|
the search order to a more reasonable one for OpenPKG: "use lib, -I, |
|
PERL[5]LIB, site, vendor, perl, other". |
|
|
|
Index: perl.c |
|
--- perl.c.orig 2006-08-15 14:37:41 +0200 |
|
+++ perl.c 2006-08-18 21:08:14 +0200 |
|
@@ -4749,39 +4749,6 @@ |
|
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
-#ifdef ARCHLIB_EXP |
|
- incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
-#endif |
|
-#ifdef MACOS_TRADITIONAL |
|
- { |
|
- Stat_t tmpstatbuf; |
|
- SV * privdir = newSV(0); |
|
- char * macperl = PerlEnv_getenv("MACPERL"); |
|
- |
|
- if (!macperl) |
|
- macperl = ""; |
|
- |
|
- Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
- Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
- |
|
- SvREFCNT_dec(privdir); |
|
- } |
|
- if (!PL_tainting) |
|
- incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
-#else |
|
-#ifndef PRIVLIB_EXP |
|
-# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
-#endif |
|
-#if defined(WIN32) |
|
- incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
-#else |
|
- incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
-#endif |
|
- |
|
#ifdef SITEARCH_EXP |
|
/* sitearch is always relative to sitelib on Windows for |
|
* DLL-based path intuition to work correctly */ |
|
@@ -4824,6 +4791,39 @@ |
|
incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
+#ifdef ARCHLIB_EXP |
|
+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
+#endif |
|
+#ifdef MACOS_TRADITIONAL |
|
+ { |
|
+ Stat_t tmpstatbuf; |
|
+ SV * privdir = newSV(0); |
|
+ char * macperl = PerlEnv_getenv("MACPERL"); |
|
+ |
|
+ if (!macperl) |
|
+ macperl = ""; |
|
+ |
|
+ Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
+ Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
+ |
|
+ SvREFCNT_dec(privdir); |
|
+ } |
|
+ if (!PL_tainting) |
|
+ incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
+#else |
|
+#ifndef PRIVLIB_EXP |
|
+# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
+#endif |
|
+#if defined(WIN32) |
|
+ incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
+#else |
|
+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
+#endif |
|
+ |
|
#ifdef PERL_OTHERLIBDIRS |
|
incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Port to [Open]Darwin 6.6.2: |
|
|
|
1. In OpenPKG, Perl does not use the vendor GCC and our GCC does not |
|
understand "-no-cpp-precomp", so remove this build option. |
|
|
|
2. The <sys/mman.h> indirectly includes system specific headers |
|
which in turn have fields named "environ" while Perl uses |
|
a define of "environ" internally. So wrap the inclusion. |
|
|
|
3. Darwin 6 no longer accepts the non-standard "#import" statements, |
|
so replace with "#include" and circumvent some header problem |
|
related to the non-standard "__private_extern__" attribute. |
|
|
|
Index: hints/darwin.sh |
|
--- hints/darwin.sh.orig 2006-08-15 14:37:41 +0200 |
|
+++ hints/darwin.sh 2006-08-18 21:05:05 +0200 |
|
@@ -120,9 +120,6 @@ |
|
*-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; |
|
esac |
|
|
|
-# Avoid Apple's cpp precompiler, better for extensions |
|
-cppflags="${cppflags} -no-cpp-precomp" |
|
- |
|
# This is necessary because perl's build system doesn't |
|
# apply cppflags to cc compile lines as it should. |
|
ccflags="${ccflags} ${cppflags}" |
|
@@ -182,8 +179,7 @@ |
|
esac |
|
ldlibpthname='DYLD_LIBRARY_PATH'; |
|
|
|
-# useshrplib=true results in much slower startup times. |
|
-# 'false' is the default value. Use Configure -Duseshrplib to override. |
|
+useshrplib='true' |
|
|
|
cat > UU/archname.cbu <<'EOCBU' |
|
# This script UU/archname.cbu will get 'called-back' by Configure |
|
Index: perlio.c |
|
--- perlio.c.orig 2006-08-15 14:37:41 +0200 |
|
+++ perlio.c 2006-08-18 21:05:05 +0200 |
|
@@ -461,7 +461,14 @@ |
|
#include <unistd.h> |
|
#endif |
|
#ifdef HAS_MMAP |
|
+#ifdef PERL_DARWIN |
|
+#define environ_safe environ |
|
+#undef environ |
|
#include <sys/mman.h> |
|
+#define environ environ_safe |
|
+#else |
|
+#include <sys/mman.h> |
|
+#endif |
|
#endif |
|
|
|
void |
|
Index: ext/DynaLoader/dl_dyld.xs |
|
--- ext/DynaLoader/dl_dyld.xs.orig 2006-08-15 14:37:40 +0200 |
|
+++ ext/DynaLoader/dl_dyld.xs 2006-08-18 21:05:05 +0200 |
|
@@ -45,7 +45,13 @@ |
|
|
|
#undef environ |
|
#undef bool |
|
+#ifdef PERL_DARWIN |
|
+#define __private_extern__ extern |
|
+#include <mach-o/dyld.h> |
|
+#undef __private_extern__ |
|
+#else |
|
#import <mach-o/dyld.h> |
|
+#endif |
|
|
|
static char *dlerror() |
|
{ |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Port to Tru64 5.1: |
|
|
|
Under Tru64 our gcc has to be built without binutils and the system |
|
ld(1) does not accept a "-O" option, so remove the whole passing of |
|
optimization flags to ld(1). Under a brain-dead platform like Tru64 we |
|
really don't need any more optimization because we are already happy if |
|
it works at all. |
|
|
|
Index: hints/dec_osf.sh |
|
--- hints/dec_osf.sh.orig 2006-08-15 14:37:41 +0200 |
|
+++ hints/dec_osf.sh 2006-08-18 21:05:05 +0200 |
|
@@ -296,15 +296,6 @@ |
|
*) if $test "X$optimize" = "X$undef"; then |
|
lddlflags="$lddlflags -msym" |
|
else |
|
- case "$myosvers" in |
|
- *4.0D*) |
|
- # QAR 56761: -O4 + .so may produce broken code, |
|
- # fixed in 4.0E or better. |
|
- ;; |
|
- *) |
|
- lddlflags="$lddlflags $optimize" |
|
- ;; |
|
- esac |
|
# -msym: If using a sufficiently recent /sbin/loader, |
|
# keep the module symbols with the modules. |
|
lddlflags="$lddlflags -msym $_lddlflags_strict_ansi" |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0976 |
|
Multiple scripts in the perl package in Trustix Secure Linux 1.5 |
|
through 2.1, and possibly other operating systems, allows local |
|
users to overwrite files via a symlink attack on temporary files. |
|
|
|
Index: lib/CGI/Cookie.pm |
|
--- lib/CGI/Cookie.pm.orig 2006-08-15 14:37:41 +0200 |
|
+++ lib/CGI/Cookie.pm 2006-08-18 21:05:05 +0200 |
|
@@ -444,7 +444,7 @@ |
|
You may also retrieve cookies that were stored in some external |
|
form using the parse() class method: |
|
|
|
- $COOKIES = `cat /usr/tmp/Cookie_stash`; |
|
+ $COOKIES = `cat /var/run/www/Cookie_stash`; |
|
%cookies = parse CGI::Cookie($COOKIES); |
|
|
|
If you are in a mod_perl environment, you can save some overhead by |
|
Index: lib/Shell.pm |
|
--- lib/Shell.pm.orig 2006-08-15 14:37:41 +0200 |
|
+++ lib/Shell.pm 2006-08-18 21:05:05 +0200 |
|
@@ -154,7 +154,7 @@ |
|
use Shell qw(cat ps cp); |
|
$passwd = cat('</etc/passwd'); |
|
@pslines = ps('-ww'), |
|
- cp("/etc/passwd", "/tmp/passwd"); |
|
+ cp("/etc/passwd", "/etc/passwd.orig"); |
|
|
|
# object oriented |
|
my $sh = Shell->new; |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Index: Configure |
|
--- Configure.orig 2006-08-15 14:37:40 +0200 |
|
+++ Configure 2006-08-18 21:05:05 +0200 |
|
@@ -7787,7 +7787,7 @@ |
|
;; |
|
linux|irix*|gnu*) dflt='-shared' ;; |
|
next) dflt='none' ;; |
|
- solaris) dflt='-G' ;; |
|
+ solaris) dflt='-shared' ;; |
|
sunos) dflt='-assert nodefinitions' ;; |
|
svr4*|esix*|nonstopux) dflt="-G $ldflags" ;; |
|
*) dflt='none' ;; |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Security Fix (CVE-2005-3962, OpenPKG-SA-2005.025-perl) |
|
|
|
Index: sv.c |
|
--- sv.c.orig 2006-08-15 14:37:41 +0200 |
|
+++ sv.c 2006-08-18 21:05:05 +0200 |
|
@@ -8595,7 +8595,10 @@ |
|
if ( (width = expect_number(&q)) ) { |
|
if (*q == '$') { |
|
++q; |
|
- efix = width; |
|
+ if (width > PERL_INT_MAX) |
|
+ efix = PERL_INT_MAX; |
|
+ else |
|
+ efix = width; |
|
} else { |
|
goto gotwidth; |
|
} |
|
|
|
|