aboutsummaryrefslogtreecommitdiff
path: root/lang/perl5.16
diff options
context:
space:
mode:
authorOllivier Robert <roberto@FreeBSD.org>1997-05-13 16:12:55 +0000
committerOllivier Robert <roberto@FreeBSD.org>1997-05-13 16:12:55 +0000
commit2f8ef1af98e56e67977f68b735ff0c86762d4188 (patch)
tree4973847258d1158c41b9ea854249b34d24216ae5 /lang/perl5.16
parent0a0f2047fb4859e3c3d3579c7f5d73a6d3750cfb (diff)
downloadports-2f8ef1af98e56e67977f68b735ff0c86762d4188.tar.gz
ports-2f8ef1af98e56e67977f68b735ff0c86762d4188.zip
This is the Perl5 equivalent of the MNT_NOSUID patch that was put into
/usr/bin/perl a while ago. It works with 5.003 and 5.004-tobe. I can't test it on freefall (I don't have a setuid script to play with) but it works at home. I'll test on thud later. Every setuid script found on a partition mounted "nosuid" will not be executed and "Permission Denied" will be displayed. It won't be in soo-to-be-released 5.004 because it is not a FreeBSD speciific problem but it will be dealt with in 5.004_01 (maintenance release). Obtained from: Jörg's patch (edited for Perl5 by me).
Notes
Notes: svn path=/head/; revision=6446
Diffstat (limited to 'lang/perl5.16')
-rw-r--r--lang/perl5.16/files/patch-ae42
1 files changed, 42 insertions, 0 deletions
diff --git a/lang/perl5.16/files/patch-ae b/lang/perl5.16/files/patch-ae
new file mode 100644
index 000000000000..01e5a89ca562
--- /dev/null
+++ b/lang/perl5.16/files/patch-ae
@@ -0,0 +1,42 @@
+--- perl.h.old Tue May 6 12:22:21 1997
++++ perl.h Tue May 6 12:26:50 1997
+@@ -223,6 +223,15 @@
+ # include <sys/param.h>
+ #endif
+
++/* needed for IAMSUID case for 4.4BSD systems
++ * XXX there should probably be a Configure variable
++ */
++
++#ifdef I_SYS_PARAM
++#if (defined (BSD) && (BSD >= 199306))
++# include <sys/mount.h>
++#endif /* !BSD */
++#endif /* !I_SYS_PARAM */
+
+ /* Use all the "standard" definitions? */
+ #if defined(STANDARD_C) && defined(I_STDLIB)
+--- perl.c.old Sun Apr 27 15:04:13 1997
++++ perl.c Tue May 6 12:27:40 1997
+@@ -1912,6 +1912,20 @@
+ croak("Can't swap uid and euid"); /* really paranoid */
+ if (Stat(SvPVX(GvSV(curcop->cop_filegv)),&tmpstatbuf) < 0)
+ croak("Permission denied"); /* testing full pathname here */
++#if (defined(BSD) && (BSD >= 199306))
++#ifdef IAMSUID
++ {
++ struct statfs stfs;
++
++ if (fstatfs(fileno(rsfp),&stfs) < 0)
++ croak("Can't statfs filesystem of script \"%s\"",origfilename);
++
++ if (stfs.f_flags & MNT_NOSUID)
++ croak("Permission denied");
++ }
++#endif /* IAMSUID */
++#endif /* BSD */
++
+ if (tmpstatbuf.st_dev != statbuf.st_dev ||
+ tmpstatbuf.st_ino != statbuf.st_ino) {
+ (void)PerlIO_close(rsfp);
+