| Message ID | 3841818496f190e76351efeb38c6427c03977cd8.1774823430.git.yoann.congal@smile.fr |
|---|---|
| State | Not Applicable, archived |
| Delegated to: | Yoann Congal |
| Headers | show |
| Series | [scarthgap,01/16] tzdata,tzcode-native: Upgrade 2025b -> 2025c | expand |
On Mon Mar 30, 2026 at 12:37 AM CEST, Yoann Congal wrote: > From: Hitendra Prajapati <hprajapati@mvista.com> > > Pick patch from [1]. > > [1] https://security-tracker.debian.org/tracker/CVE-2006-10003 > > More details : > https://nvd.nist.gov/vuln/detail/CVE-2006-10003 > > Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com> > Signed-off-by: Yoann Congal <yoann.congal@smile.fr> > --- I did not wanted to send that patch, please ignore. > .../libxml-parser-perl/CVE-2006-10003.patch | 73 +++++++++++++++++++ > .../perl/libxml-parser-perl_2.47.bb | 1 + > 2 files changed, 74 insertions(+) > create mode 100644 meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch > > diff --git a/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch b/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch > new file mode 100644 > index 00000000000..e9a4b692d2d > --- /dev/null > +++ b/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch > @@ -0,0 +1,73 @@ > +From 08dd37c35ec5e64e26aacb8514437f54708f7fd1 Mon Sep 17 00:00:00 2001 > +From: Toddr Bot <toddbot@rinaldo.us> > +Date: Mon, 16 Mar 2026 22:16:11 +0000 > +Subject: [PATCH] fix: off-by-one heap buffer overflow in st_serial_stack > + growth check > + > +When st_serial_stackptr == st_serial_stacksize - 1, the old check > +(stackptr >= stacksize) would not trigger reallocation. The subsequent > +++stackptr then writes at index stacksize, one element past the > +allocated buffer. > + > +Fix by checking stackptr + 1 >= stacksize so the buffer is grown > +before the pre-increment write. > + > +Add a deep nesting test (600 levels) to exercise this code path. > + > +Fixes #39 > + > +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> > + > +CVE: CVE-2006-10003 > +Upstream-Status: Backport [https://github.com/cpan-authors/XML-Parser/commit/08dd37c35ec5e64e26aacb8514437f54708f7fd1] > +Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com> > +--- > + Expat/Expat.xs | 2 +- > + t/deep_nesting.t | 22 ++++++++++++++++++++++ > + 2 files changed, 23 insertions(+), 1 deletion(-) > + create mode 100644 t/deep_nesting.t > + > +diff --git a/Expat/Expat.xs b/Expat/Expat.xs > +index dbad380..f04a0cf 100644 > +--- a/Expat/Expat.xs > ++++ b/Expat/Expat.xs > +@@ -499,7 +499,7 @@ startElement(void *userData, const char *name, const char **atts) > + } > + } > + > +- if (cbv->st_serial_stackptr >= cbv->st_serial_stacksize) { > ++ if (cbv->st_serial_stackptr + 1 >= cbv->st_serial_stacksize) { > + unsigned int newsize = cbv->st_serial_stacksize + 512; > + > + Renew(cbv->st_serial_stack, newsize, unsigned int); > +diff --git a/t/deep_nesting.t b/t/deep_nesting.t > +new file mode 100644 > +index 0000000..8237b5f > +--- /dev/null > ++++ b/t/deep_nesting.t > +@@ -0,0 +1,22 @@ > ++BEGIN { print "1..1\n"; } > ++ > ++# Test for deeply nested elements to exercise st_serial_stack reallocation. > ++# This catches off-by-one errors in the stack growth check (GH #39). > ++ > ++use XML::Parser; > ++ > ++my $depth = 600; > ++ > ++my $xml = ''; > ++for my $i (1 .. $depth) { > ++ $xml .= "<e$i>"; > ++} > ++for my $i (reverse 1 .. $depth) { > ++ $xml .= "</e$i>"; > ++} > ++ > ++my $p = XML::Parser->new; > ++eval { $p->parse($xml) }; > ++ > ++print "not " if $@; > ++print "ok 1\n"; > +-- > +2.50.1 > + > diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb > index 803164f713d..6a36b763a83 100644 > --- a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb > +++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb > @@ -8,6 +8,7 @@ DEPENDS += "expat" > > SRC_URI = "${CPAN_MIRROR}/authors/id/T/TO/TODDR/XML-Parser-${PV}.tar.gz \ > file://0001-Makefile.PL-make-check_lib-cross-friendly.patch \ > + file://CVE-2006-10003.patch \ > " > > SRC_URI[sha256sum] = "ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8"
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch b/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch new file mode 100644 index 00000000000..e9a4b692d2d --- /dev/null +++ b/meta/recipes-devtools/perl/libxml-parser-perl/CVE-2006-10003.patch @@ -0,0 +1,73 @@ +From 08dd37c35ec5e64e26aacb8514437f54708f7fd1 Mon Sep 17 00:00:00 2001 +From: Toddr Bot <toddbot@rinaldo.us> +Date: Mon, 16 Mar 2026 22:16:11 +0000 +Subject: [PATCH] fix: off-by-one heap buffer overflow in st_serial_stack + growth check + +When st_serial_stackptr == st_serial_stacksize - 1, the old check +(stackptr >= stacksize) would not trigger reallocation. The subsequent +++stackptr then writes at index stacksize, one element past the +allocated buffer. + +Fix by checking stackptr + 1 >= stacksize so the buffer is grown +before the pre-increment write. + +Add a deep nesting test (600 levels) to exercise this code path. + +Fixes #39 + +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> + +CVE: CVE-2006-10003 +Upstream-Status: Backport [https://github.com/cpan-authors/XML-Parser/commit/08dd37c35ec5e64e26aacb8514437f54708f7fd1] +Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com> +--- + Expat/Expat.xs | 2 +- + t/deep_nesting.t | 22 ++++++++++++++++++++++ + 2 files changed, 23 insertions(+), 1 deletion(-) + create mode 100644 t/deep_nesting.t + +diff --git a/Expat/Expat.xs b/Expat/Expat.xs +index dbad380..f04a0cf 100644 +--- a/Expat/Expat.xs ++++ b/Expat/Expat.xs +@@ -499,7 +499,7 @@ startElement(void *userData, const char *name, const char **atts) + } + } + +- if (cbv->st_serial_stackptr >= cbv->st_serial_stacksize) { ++ if (cbv->st_serial_stackptr + 1 >= cbv->st_serial_stacksize) { + unsigned int newsize = cbv->st_serial_stacksize + 512; + + Renew(cbv->st_serial_stack, newsize, unsigned int); +diff --git a/t/deep_nesting.t b/t/deep_nesting.t +new file mode 100644 +index 0000000..8237b5f +--- /dev/null ++++ b/t/deep_nesting.t +@@ -0,0 +1,22 @@ ++BEGIN { print "1..1\n"; } ++ ++# Test for deeply nested elements to exercise st_serial_stack reallocation. ++# This catches off-by-one errors in the stack growth check (GH #39). ++ ++use XML::Parser; ++ ++my $depth = 600; ++ ++my $xml = ''; ++for my $i (1 .. $depth) { ++ $xml .= "<e$i>"; ++} ++for my $i (reverse 1 .. $depth) { ++ $xml .= "</e$i>"; ++} ++ ++my $p = XML::Parser->new; ++eval { $p->parse($xml) }; ++ ++print "not " if $@; ++print "ok 1\n"; +-- +2.50.1 + diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb index 803164f713d..6a36b763a83 100644 --- a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb +++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb @@ -8,6 +8,7 @@ DEPENDS += "expat" SRC_URI = "${CPAN_MIRROR}/authors/id/T/TO/TODDR/XML-Parser-${PV}.tar.gz \ file://0001-Makefile.PL-make-check_lib-cross-friendly.patch \ + file://CVE-2006-10003.patch \ " SRC_URI[sha256sum] = "ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8"