Your message dated Sun, 30 May 2021 13:35:57 +0000
with message-id <[email protected]>
and subject line unblock golang-golang-x-net
has caused the Debian Bug report #988983,
regarding unblock: golang-golang-x-net/1:0.0+git20210119.5f4716e+dfsg-4
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
988983: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988983
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock
X-Debbugs-Cc: [email protected]
Please unblock package golang-golang-x-net
[ Reason ]
Backport patch for CVE-2021-33194
x/net/html: infinite loop in ParseFragment
[ Impact ]
It fixes security issues.
[ Tests ]
Upstream has added a unit test for the issue in the patch.
[ Risks ]
+ Diff is small
+ Key package
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
[ Other info ]
Need rebuild packages which have built-using with old version of
golang-golang-x-net
unblock golang-golang-x-net/1:0.0+git20210119.5f4716e+dfsg-4
diff -Nru golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/changelog
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/changelog
--- golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/changelog
2021-05-08 12:12:17.000000000 +0800
+++ golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/changelog
2021-05-22 22:01:02.000000000 +0800
@@ -1,3 +1,11 @@
+golang-golang-x-net (1:0.0+git20210119.5f4716e+dfsg-4) unstable; urgency=medium
+
+ * Team upload.
+ * Backport patch for CVE-2021-33194
+ x/net/html: infinite loop in ParseFragment
+
+ -- Shengjing Zhu <[email protected]> Sat, 22 May 2021 22:01:02 +0800
+
golang-golang-x-net (1:0.0+git20210119.5f4716e+dfsg-3) unstable; urgency=medium
* Team upload.
diff -Nru
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/CVE-2021-33194.patch
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/CVE-2021-33194.patch
---
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/CVE-2021-33194.patch
1970-01-01 08:00:00.000000000 +0800
+++
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/CVE-2021-33194.patch
2021-05-22 22:01:02.000000000 +0800
@@ -0,0 +1,114 @@
+From: Nigel Tao <[email protected]>
+Date: Sun, 18 Apr 2021 21:15:27 +1000
+Subject: html: ignore templates nested within foreign content
+
+Fixes #46288
+Fixes CVE-2021-33194
+
+Change-Id: I2fe39702de8e9aab29965c1526e377a6f9cdf056
+Reviewed-on: https://go-review.googlesource.com/c/net/+/311090
+Reviewed-by: Filippo Valsorda <[email protected]>
+Run-TryBot: Filippo Valsorda <[email protected]>
+Trust: Roland Shoemaker <[email protected]>
+TryBot-Result: Go Bot <[email protected]>
+---
+ html/parse.go | 24 +++++++++++++++++++++++-
+ html/parse_test.go | 22 ++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 1 deletion(-)
+
+diff --git a/html/parse.go b/html/parse.go
+index f91466f..038941d 100644
+--- a/html/parse.go
++++ b/html/parse.go
+@@ -663,6 +663,24 @@ func inHeadIM(p *parser) bool {
+ // Ignore the token.
+ return true
+ case a.Template:
++ // TODO: remove this divergence from the HTML5 spec.
++ //
++ // We don't handle all of the corner cases when mixing
foreign
++ // content (i.e. <math> or <svg>) with <template>.
Without this
++ // early return, we can get into an infinite loop,
possibly because
++ // of the "TODO... further divergence" a little below.
++ //
++ // As a workaround, if we are mixing foreign content
and templates,
++ // just ignore the rest of the HTML. Foreign content is
rare and a
++ // relatively old HTML feature. Templates are also rare
and a
++ // relatively new HTML feature. Their combination is
very rare.
++ for _, e := range p.oe {
++ if e.Namespace != "" {
++ p.im = ignoreTheRemainingTokens
++ return true
++ }
++ }
++
+ p.addElement()
+ p.afe = append(p.afe, &scopeMarker)
+ p.framesetOK = false
+@@ -683,7 +701,7 @@ func inHeadIM(p *parser) bool {
+ if !p.oe.contains(a.Template) {
+ return true
+ }
+- // TODO: remove this divergence from the HTML5 spec.
++ // TODO: remove this further divergence from the HTML5
spec.
+ //
+ // See
https://bugs.chromium.org/p/chromium/issues/detail?id=829668
+ p.generateImpliedEndTags()
+@@ -2127,6 +2145,10 @@ func afterAfterFramesetIM(p *parser) bool {
+ return true
+ }
+
++func ignoreTheRemainingTokens(p *parser) bool {
++ return true
++}
++
+ const whitespaceOrNUL = whitespace + "\x00"
+
+ // Section 12.2.6.5
+diff --git a/html/parse_test.go b/html/parse_test.go
+index 58dce5f..019333d 100644
+--- a/html/parse_test.go
++++ b/html/parse_test.go
+@@ -267,6 +267,9 @@ func TestParser(t *testing.T) {
+ if err != nil {
+ t.Fatal(err)
+ }
++ if parseTestBlacklist[ta.text] {
++ continue
++ }
+
+ err = testParseCase(ta.text, ta.want,
ta.context, ParseOptionEnableScripting(ta.scripting))
+
+@@ -379,6 +382,14 @@ func testParseCase(text, want, context string, opts
...ParseOption) (err error)
+ return nil
+ }
+
++// Some test inputs are simply skipped - we would otherwise fail the test. We
++// blacklist such inputs from the parse test.
++var parseTestBlacklist = map[string]bool{
++ // See the a.Template TODO in inHeadIM.
++ `<math><template><mo><template>`:
true,
++ `<template><svg><foo><template><foreignObject><div></template><div>`:
true,
++}
++
+ // Some test input result in parse trees are not 'well-formed' despite
+ // following the HTML5 recovery algorithms. Rendering and re-parsing such a
+ // tree will not result in an exact clone of that tree. We blacklist such
+@@ -454,6 +465,17 @@ func TestParseFragmentWithNilContext(t *testing.T) {
+ ParseFragment(strings.NewReader("<p>hello</p>"), nil)
+ }
+
++func TestParseFragmentForeignContentTemplates(t *testing.T) {
++ srcs := []string{
++ "<math><html><template><mn><template></template></template>",
++ "<math><math><head><mi><template>",
++ }
++ for _, src := range srcs {
++ // The next line shouldn't infinite-loop.
++ ParseFragment(strings.NewReader(src), nil)
++ }
++}
++
+ func BenchmarkParser(b *testing.B) {
+ buf, err := ioutil.ReadFile("testdata/go1.html")
+ if err != nil {
diff -Nru
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/series
golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/series
--- golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/series
2021-05-08 12:12:17.000000000 +0800
+++ golang-golang-x-net-0.0+git20210119.5f4716e+dfsg/debian/patches/series
2021-05-22 22:01:02.000000000 +0800
@@ -1,2 +1,3 @@
publicsuffix.patch
CVE-2021-31525.patch
+CVE-2021-33194.patch
--- End Message ---
--- Begin Message ---
Unblocked.
--- End Message ---