]> 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)
committerSaul Wold <sgw@linux.intel.com>
Fri, 23 May 2014 17:45:07 +0000 (10:45 -0700)
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>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
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 c307b99fae24f317fe7dce53b530dc4b668a95e3..fcd665bf34e027c9bc8aa36ea25647da604c4417 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"