]> code.ossystems Code Review - openembedded-core.git/commitdiff
perl: fix for CVE-2010-4777
authoryanjun.zhu <yanjun.zhu@windriver.com>
Tue, 20 May 2014 01:27:47 +0000 (09:27 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 10 Oct 2014 14:05:52 +0000 (15:05 +0100)
The Perl_reg_numbered_buff_fetch function in Perl 5.10.0, 5.12.0,
5.14.0, and other versions, when running with debugging enabled,
allows context-dependent attackers to cause a denial of service
(assertion failure and application exit) via crafted input that
is not properly handled when using certain regular expressions,
as demonstrated by causing SpamAssassin and OCSInventory to
crash.

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4777
(From OE-Core rev: 368df9f13ddf124e6aaaec06c02ab698c9e0b6c3)

Signed-off-by: yanjun.zhu <yanjun.zhu@windriver.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/perl/perl-5.14.3/perl-5.14.3-fix-CVE-2010-4777.patch [new file with mode: 0644]
meta/recipes-devtools/perl/perl-native_5.14.3.bb
meta/recipes-devtools/perl/perl_5.14.3.bb

diff --git a/meta/recipes-devtools/perl/perl-5.14.3/perl-5.14.3-fix-CVE-2010-4777.patch b/meta/recipes-devtools/perl/perl-5.14.3/perl-5.14.3-fix-CVE-2010-4777.patch
new file mode 100644 (file)
index 0000000..e0dcf41
--- /dev/null
@@ -0,0 +1,45 @@
+perl:fix for CVE-2010-4777
+
+Upstream-Status: Backport
+    
+The Perl_reg_numbered_buff_fetch function in Perl 5.10.0, 5.12.0,
+5.14.0, and other versions, when running with debugging enabled,
+allows context-dependent attackers to cause a denial of service
+(assertion failure and application exit) via crafted input that
+is not properly handled when using certain regular expressions,
+as demonstrated by causing SpamAssassin and OCSInventory to
+crash.
+
+http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4777
+
+Signed-off-by: yanjun.zhu <yanjun.zhu@windriver.com>
+--- a/regcomp.c
++++ b/regcomp.c
+@@ -11868,8 +11868,25 @@ Perl_save_re_context(pTHX)
+               if (gvp) {
+                   GV * const gv = *gvp;
+-                  if (SvTYPE(gv) == SVt_PVGV && GvSV(gv))
+-                      save_scalar(gv);
++                  if (SvTYPE(gv) == SVt_PVGV && GvSV(gv)) {
++                      /* this is a copy of save_scalar() without the GETMAGIC call, RT#76538 */
++                      SV ** const sptr = &GvSVn(gv);
++                      SV * osv = *sptr;
++                      SV * nsv = newSV(0);
++                      save_pushptrptr(SvREFCNT_inc_simple(gv),
++                      SvREFCNT_inc(osv), SAVEt_SV);
++                      if (SvTYPE(osv) >= SVt_PVMG && SvMAGIC(osv) &&
++                          SvTYPE(osv) != SVt_PVGV) {
++                          if (SvGMAGICAL(osv)) {
++                              const bool oldtainted = PL_tainted;
++                              SvFLAGS(osv) |= (SvFLAGS(osv) &
++                                  (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
++                              PL_tainted = oldtainted;
++                          }
++                          mg_localize(osv, nsv, 1);
++                      }
++                      *sptr = nsv;
++                  }
+               }
+           }
+       }
index 2ef0a5135c354bb9bd438ba4111985cf4ddeb6cf..c38be41d497898ea0642aeae93c3b365be2a5b45 100644 (file)
@@ -17,7 +17,8 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
            file://MM_Unix.pm.patch \
            file://debian/errno_ver.diff \
            file://dynaloaderhack.patch \
-           file://perl-build-in-t-dir.patch"
+           file://perl-build-in-t-dir.patch \
+           file://perl-5.14.3-fix-CVE-2010-4777.patch "
 
 SRC_URI[md5sum] = "f6a3d878c688d111b495c87db56c5be5"
 SRC_URI[sha256sum] = "03638a4f01bc26b81231233671524b4163849a3a9ea5cc2397293080c4ea339f"
index 09a3f3b531d980825d10fecc180aa525126951c0..681638234504c297f2f20f430f8da1f95e86b9ba 100644 (file)
@@ -74,7 +74,8 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
         file://config.sh-32-be \
         file://config.sh-64 \
         file://config.sh-64-le \
-        file://config.sh-64-be"
+        file://config.sh-64-be \
+        file://perl-5.14.3-fix-CVE-2010-4777.patch "
 #      file://debian/fakeroot.diff
 
 SRC_URI[md5sum] = "f6a3d878c688d111b495c87db56c5be5"