diff options
Diffstat (limited to 'lang/perl58/patches/patch-bf')
-rw-r--r-- | lang/perl58/patches/patch-bf | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lang/perl58/patches/patch-bf b/lang/perl58/patches/patch-bf new file mode 100644 index 00000000000..057c3a2afe4 --- /dev/null +++ b/lang/perl58/patches/patch-bf @@ -0,0 +1,24 @@ +$NetBSD: patch-bf,v 1.1.2.2 2005/02/05 17:22:21 salo Exp $ + +--- perlio.c.orig 2004-09-10 03:06:52.000000000 -0400 ++++ perlio.c +@@ -448,7 +448,8 @@ PerlIO_debug(const char *fmt, ...) + va_list ap; + dSYS; + va_start(ap, fmt); +- if (!dbg) { ++ /* Tighten uid/gid checks [CAN-2005-0155] */ ++ if (!dbg && !PL_tainting && PL_uid == PL_euid && PL_gid == PL_egid) { + char *s = PerlEnv_getenv("PERLIO_DEBUG"); + if (s && *s) + dbg = PerlLIO_open3(s, O_WRONLY | O_CREAT | O_APPEND, 0666); +@@ -465,7 +466,8 @@ PerlIO_debug(const char *fmt, ...) + s = CopFILE(PL_curcop); + if (!s) + s = "(none)"; +- sprintf(buffer, "%s:%" IVdf " ", s, (IV) CopLINE(PL_curcop)); ++ /* Avoid PERLIO_DEBUG buffer overflow [CAN-2005-0156] */ ++ sprintf(buffer, "%.40s:%" IVdf " ", s, (IV) CopLINE(PL_curcop)); + len = strlen(buffer); + vsprintf(buffer+len, fmt, ap); + PerlLIO_write(dbg, buffer, strlen(buffer)); |