nokogiri 1.6.7 → 1.6.7.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.ja.rdoc +16 -0
- data/CHANGELOG.rdoc +16 -0
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/lib/nokogiri/version.rb +1 -1
- data/patches/libxml2/0011-Avoid-extra-processing-of-MarkupDecl-when-EOF.patch +35 -0
- data/patches/libxml2/0012-Avoid-processing-entities-after-encoding-conversion-.patch +83 -0
- data/patches/libxml2/0013-CVE-2015-7497-Avoid-an-heap-buffer-overflow-in-xmlDi.patch +33 -0
- data/patches/libxml2/0014-CVE-2015-5312-Another-entity-expansion-issue.patch +32 -0
- data/patches/libxml2/0015-Add-xmlHaltParser-to-stop-the-parser.patch +81 -0
- data/patches/libxml2/0016-Detect-incoherency-on-GROW.patch +36 -0
- data/patches/libxml2/0017-CVE-2015-7500-Fix-memory-access-error-due-to-incorre.patch +105 -0
- data/patches/libxml2/0018-CVE-2015-8242-Buffer-overead-with-HTML-parser-in-pus.patch +43 -0
- data/test_all +4 -2
- metadata +12 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c62a0f60246bbc73ddbbb0f0ab78fb0ee835e7e0
|
4
|
+
data.tar.gz: ae8e6b78fefbbee6c0e69abab11aae9ed8f140ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89b94ebfe4326b45ebc6938c79c9fe2286ea73309d35aaf31a78e6a11e563b9dcf0ac43669d20570412ab77ce379aa55d1daa07891cbac2ae9c0933754caa0e2
|
7
|
+
data.tar.gz: e7761aaa4a148d41c0aa1eba705325557c336dbed1218e21a582eb34351cc1495dd1b967a289ccbaf815801deceff95fe21f80d76fce6f0242c82a106852a99a
|
data/CHANGELOG.ja.rdoc
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 1.6.7.1 / 2015年12月16日
|
2
|
+
|
3
|
+
This version pulls in several upstream patches to the vendored libxml2 and libxslt to address:
|
4
|
+
|
5
|
+
CVE-2015-5312
|
6
|
+
CVE-2015-7497
|
7
|
+
CVE-2015-7498
|
8
|
+
CVE-2015-7499
|
9
|
+
CVE-2015-7500
|
10
|
+
CVE-2015-8241
|
11
|
+
CVE-2015-8242
|
12
|
+
CVE-2015-8317
|
13
|
+
|
14
|
+
See also http://www.ubuntu.com/usn/usn-2834-1/
|
15
|
+
|
16
|
+
|
1
17
|
=== 1.6.7 / 2015年11月29日
|
2
18
|
|
3
19
|
==== 註
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 1.6.7.1 / 2015-12-16
|
2
|
+
|
3
|
+
This version pulls in several upstream patches to the vendored libxml2 and libxslt to address:
|
4
|
+
|
5
|
+
CVE-2015-5312
|
6
|
+
CVE-2015-7497
|
7
|
+
CVE-2015-7498
|
8
|
+
CVE-2015-7499
|
9
|
+
CVE-2015-7500
|
10
|
+
CVE-2015-8241
|
11
|
+
CVE-2015-8242
|
12
|
+
CVE-2015-8317
|
13
|
+
|
14
|
+
See also http://www.ubuntu.com/usn/usn-2834-1/
|
15
|
+
|
16
|
+
|
1
17
|
=== 1.6.7 / 2015-11-29
|
2
18
|
|
3
19
|
==== Notes
|
data/Gemfile
CHANGED
@@ -8,7 +8,7 @@ gem "mini_portile2", "~>2.0.0.rc2"
|
|
8
8
|
|
9
9
|
gem "rdoc", "~>4.0", :group => [:development, :test]
|
10
10
|
gem "hoe-bundler", ">=1.1", :group => [:development, :test]
|
11
|
-
gem "hoe-debugging", "~>1.2.
|
11
|
+
gem "hoe-debugging", "~>1.2.1", :group => [:development, :test]
|
12
12
|
gem "hoe-gemspec", ">=1.0", :group => [:development, :test]
|
13
13
|
gem "hoe-git", ">=1.4", :group => [:development, :test]
|
14
14
|
gem "minitest", "~>2.2.2", :group => [:development, :test]
|
data/Rakefile
CHANGED
data/lib/nokogiri/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
From b57e4be41ab56653d45ce212cacf4640b55dd589 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Hugh Davenport <hugh@allthethings.co.nz>
|
3
|
+
Date: Tue, 3 Nov 2015 20:40:49 +0800
|
4
|
+
Subject: [PATCH 11/18] Avoid extra processing of MarkupDecl when EOF
|
5
|
+
|
6
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756263
|
7
|
+
|
8
|
+
One place where ctxt->instate == XML_PARSER_EOF whic was set up
|
9
|
+
by entity detection issues doesn't get noticed, and even overrided
|
10
|
+
---
|
11
|
+
parser.c | 8 ++++++++
|
12
|
+
1 file changed, 8 insertions(+)
|
13
|
+
|
14
|
+
diff --git a/parser.c b/parser.c
|
15
|
+
index d67b300..134afe7 100644
|
16
|
+
--- a/parser.c
|
17
|
+
+++ b/parser.c
|
18
|
+
@@ -6972,6 +6972,14 @@ xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
|
19
|
+
xmlParsePI(ctxt);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
+
|
23
|
+
+ /*
|
24
|
+
+ * detect requirement to exit there and act accordingly
|
25
|
+
+ * and avoid having instate overriden later on
|
26
|
+
+ */
|
27
|
+
+ if (ctxt->instate == XML_PARSER_EOF)
|
28
|
+
+ return;
|
29
|
+
+
|
30
|
+
/*
|
31
|
+
* This is only for internal subset. On external entities,
|
32
|
+
* the replacement is done before parsing stage
|
33
|
+
--
|
34
|
+
2.5.0
|
35
|
+
|
@@ -0,0 +1,83 @@
|
|
1
|
+
From 17e50819d6c5b2596ec54f2ae910b7403f29e976 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Daniel Veillard <veillard@redhat.com>
|
3
|
+
Date: Mon, 9 Nov 2015 18:07:18 +0800
|
4
|
+
Subject: [PATCH 12/18] Avoid processing entities after encoding conversion
|
5
|
+
failures
|
6
|
+
|
7
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756527
|
8
|
+
and was also raised by Chromium team in the past
|
9
|
+
|
10
|
+
When we hit a convwersion failure when switching encoding
|
11
|
+
it is bestter to stop parsing there, this was treated as a
|
12
|
+
fatal error but the parser was continuing to process to extract
|
13
|
+
more errors, unfortunately that makes little sense as the data
|
14
|
+
is obviously corrupt and can potentially lead to unexpected behaviour.
|
15
|
+
---
|
16
|
+
parser.c | 7 +++++--
|
17
|
+
parserInternals.c | 11 ++++++++++-
|
18
|
+
2 files changed, 15 insertions(+), 3 deletions(-)
|
19
|
+
|
20
|
+
diff --git a/parser.c b/parser.c
|
21
|
+
index 134afe7..c79b4e8 100644
|
22
|
+
--- a/parser.c
|
23
|
+
+++ b/parser.c
|
24
|
+
@@ -10665,7 +10665,8 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
|
25
|
+
xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Blank needed here\n");
|
26
|
+
}
|
27
|
+
xmlParseEncodingDecl(ctxt);
|
28
|
+
- if (ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) {
|
29
|
+
+ if ((ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) ||
|
30
|
+
+ (ctxt->instate == XML_PARSER_EOF)) {
|
31
|
+
/*
|
32
|
+
* The XML REC instructs us to stop parsing right here
|
33
|
+
*/
|
34
|
+
@@ -10789,6 +10790,7 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
|
35
|
+
|
36
|
+
if (CUR == 0) {
|
37
|
+
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_EMPTY, NULL);
|
38
|
+
+ return(-1);
|
39
|
+
}
|
40
|
+
|
41
|
+
/*
|
42
|
+
@@ -10806,7 +10808,8 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
|
43
|
+
* Note that we will switch encoding on the fly.
|
44
|
+
*/
|
45
|
+
xmlParseXMLDecl(ctxt);
|
46
|
+
- if (ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) {
|
47
|
+
+ if ((ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) ||
|
48
|
+
+ (ctxt->instate == XML_PARSER_EOF)) {
|
49
|
+
/*
|
50
|
+
* The XML REC instructs us to stop parsing right here
|
51
|
+
*/
|
52
|
+
diff --git a/parserInternals.c b/parserInternals.c
|
53
|
+
index df204fd..c8230c1 100644
|
54
|
+
--- a/parserInternals.c
|
55
|
+
+++ b/parserInternals.c
|
56
|
+
@@ -937,6 +937,7 @@ xmlSwitchEncoding(xmlParserCtxtPtr ctxt, xmlCharEncoding enc)
|
57
|
+
{
|
58
|
+
xmlCharEncodingHandlerPtr handler;
|
59
|
+
int len = -1;
|
60
|
+
+ int ret;
|
61
|
+
|
62
|
+
if (ctxt == NULL) return(-1);
|
63
|
+
switch (enc) {
|
64
|
+
@@ -1097,7 +1098,15 @@ xmlSwitchEncoding(xmlParserCtxtPtr ctxt, xmlCharEncoding enc)
|
65
|
+
if (handler == NULL)
|
66
|
+
return(-1);
|
67
|
+
ctxt->charset = XML_CHAR_ENCODING_UTF8;
|
68
|
+
- return(xmlSwitchToEncodingInt(ctxt, handler, len));
|
69
|
+
+ ret = xmlSwitchToEncodingInt(ctxt, handler, len);
|
70
|
+
+ if ((ret < 0) || (ctxt->errNo == XML_I18N_CONV_FAILED)) {
|
71
|
+
+ /*
|
72
|
+
+ * on encoding conversion errors, stop the parser
|
73
|
+
+ */
|
74
|
+
+ xmlStopParser(ctxt);
|
75
|
+
+ ctxt->errNo = XML_I18N_CONV_FAILED;
|
76
|
+
+ }
|
77
|
+
+ return(ret);
|
78
|
+
}
|
79
|
+
|
80
|
+
/**
|
81
|
+
--
|
82
|
+
2.5.0
|
83
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
From 71ff91d66ecae4145a7c99476d1a0d1fa620b9f7 Mon Sep 17 00:00:00 2001
|
2
|
+
From: David Drysdale <drysdale@google.com>
|
3
|
+
Date: Fri, 20 Nov 2015 10:47:12 +0800
|
4
|
+
Subject: [PATCH 13/18] CVE-2015-7497 Avoid an heap buffer overflow in
|
5
|
+
xmlDictComputeFastQKey
|
6
|
+
|
7
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756528
|
8
|
+
It was possible to hit a negative offset in the name indexing
|
9
|
+
used to randomize the dictionary key generation
|
10
|
+
Reported and fix provided by David Drysdale @ Google
|
11
|
+
---
|
12
|
+
dict.c | 5 ++++-
|
13
|
+
1 file changed, 4 insertions(+), 1 deletion(-)
|
14
|
+
|
15
|
+
diff --git a/dict.c b/dict.c
|
16
|
+
index 5f71d55..8c8f931 100644
|
17
|
+
--- a/dict.c
|
18
|
+
+++ b/dict.c
|
19
|
+
@@ -486,7 +486,10 @@ xmlDictComputeFastQKey(const xmlChar *prefix, int plen,
|
20
|
+
value += 30 * (*prefix);
|
21
|
+
|
22
|
+
if (len > 10) {
|
23
|
+
- value += name[len - (plen + 1 + 1)];
|
24
|
+
+ int offset = len - (plen + 1 + 1);
|
25
|
+
+ if (offset < 0)
|
26
|
+
+ offset = len - (10 + 1);
|
27
|
+
+ value += name[offset];
|
28
|
+
len = 10;
|
29
|
+
if (plen > 10)
|
30
|
+
plen = 10;
|
31
|
+
--
|
32
|
+
2.5.0
|
33
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
From d50faeefb87856fb19aee2029e952ea095300d90 Mon Sep 17 00:00:00 2001
|
2
|
+
From: David Drysdale <drysdale@google.com>
|
3
|
+
Date: Fri, 20 Nov 2015 11:13:45 +0800
|
4
|
+
Subject: [PATCH 14/18] CVE-2015-5312 Another entity expansion issue
|
5
|
+
|
6
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756733
|
7
|
+
It is one case where the code in place to detect entities expansions
|
8
|
+
failed to exit when the situation was detected, leading to DoS
|
9
|
+
Problem reported by Kostya Serebryany @ Google
|
10
|
+
Patch provided by David Drysdale @ Google
|
11
|
+
---
|
12
|
+
parser.c | 4 ++++
|
13
|
+
1 file changed, 4 insertions(+)
|
14
|
+
|
15
|
+
diff --git a/parser.c b/parser.c
|
16
|
+
index c79b4e8..4054ed1 100644
|
17
|
+
--- a/parser.c
|
18
|
+
+++ b/parser.c
|
19
|
+
@@ -2806,6 +2806,10 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
|
20
|
+
0, 0, 0);
|
21
|
+
ctxt->depth--;
|
22
|
+
|
23
|
+
+ if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) ||
|
24
|
+
+ (ctxt->lastError.code == XML_ERR_INTERNAL_ERROR))
|
25
|
+
+ goto int_error;
|
26
|
+
+
|
27
|
+
if (rep != NULL) {
|
28
|
+
current = rep;
|
29
|
+
while (*current != 0) { /* non input consuming loop */
|
30
|
+
--
|
31
|
+
2.5.0
|
32
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
From 88c307f3f7b4767018b57e91cb07b78b43d98230 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Daniel Veillard <veillard@redhat.com>
|
3
|
+
Date: Fri, 20 Nov 2015 14:55:30 +0800
|
4
|
+
Subject: [PATCH 15/18] Add xmlHaltParser() to stop the parser
|
5
|
+
|
6
|
+
The problem is doing it in a consistent and safe fashion
|
7
|
+
It's more complex than just setting ctxt->instate = XML_PARSER_EOF
|
8
|
+
Update the public function to reuse that new internal routine
|
9
|
+
---
|
10
|
+
parser.c | 34 +++++++++++++++++++++++++++++-----
|
11
|
+
1 file changed, 29 insertions(+), 5 deletions(-)
|
12
|
+
|
13
|
+
diff --git a/parser.c b/parser.c
|
14
|
+
index 4054ed1..0b8282b 100644
|
15
|
+
--- a/parser.c
|
16
|
+
+++ b/parser.c
|
17
|
+
@@ -94,6 +94,8 @@ static xmlParserCtxtPtr
|
18
|
+
xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID,
|
19
|
+
const xmlChar *base, xmlParserCtxtPtr pctx);
|
20
|
+
|
21
|
+
+static void xmlHaltParser(xmlParserCtxtPtr ctxt);
|
22
|
+
+
|
23
|
+
/************************************************************************
|
24
|
+
* *
|
25
|
+
* Arbitrary limits set in the parser. See XML_PARSE_HUGE *
|
26
|
+
@@ -12622,25 +12624,47 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
|
27
|
+
#endif /* LIBXML_PUSH_ENABLED */
|
28
|
+
|
29
|
+
/**
|
30
|
+
- * xmlStopParser:
|
31
|
+
+ * xmlHaltParser:
|
32
|
+
* @ctxt: an XML parser context
|
33
|
+
*
|
34
|
+
- * Blocks further parser processing
|
35
|
+
+ * Blocks further parser processing don't override error
|
36
|
+
+ * for internal use
|
37
|
+
*/
|
38
|
+
-void
|
39
|
+
-xmlStopParser(xmlParserCtxtPtr ctxt) {
|
40
|
+
+static void
|
41
|
+
+xmlHaltParser(xmlParserCtxtPtr ctxt) {
|
42
|
+
if (ctxt == NULL)
|
43
|
+
return;
|
44
|
+
ctxt->instate = XML_PARSER_EOF;
|
45
|
+
- ctxt->errNo = XML_ERR_USER_STOP;
|
46
|
+
ctxt->disableSAX = 1;
|
47
|
+
if (ctxt->input != NULL) {
|
48
|
+
+ /*
|
49
|
+
+ * in case there was a specific allocation deallocate before
|
50
|
+
+ * overriding base
|
51
|
+
+ */
|
52
|
+
+ if (ctxt->input->free != NULL) {
|
53
|
+
+ ctxt->input->free((xmlChar *) ctxt->input->base);
|
54
|
+
+ ctxt->input->free = NULL;
|
55
|
+
+ }
|
56
|
+
ctxt->input->cur = BAD_CAST"";
|
57
|
+
ctxt->input->base = ctxt->input->cur;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
/**
|
62
|
+
+ * xmlStopParser:
|
63
|
+
+ * @ctxt: an XML parser context
|
64
|
+
+ *
|
65
|
+
+ * Blocks further parser processing
|
66
|
+
+ */
|
67
|
+
+void
|
68
|
+
+xmlStopParser(xmlParserCtxtPtr ctxt) {
|
69
|
+
+ if (ctxt == NULL)
|
70
|
+
+ return;
|
71
|
+
+ xmlHaltParser(ctxt);
|
72
|
+
+ ctxt->errNo = XML_ERR_USER_STOP;
|
73
|
+
+}
|
74
|
+
+
|
75
|
+
+/**
|
76
|
+
* xmlCreateIOParserCtxt:
|
77
|
+
* @sax: a SAX handler
|
78
|
+
* @user_data: The user data returned on SAX callbacks
|
79
|
+
--
|
80
|
+
2.5.0
|
81
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
From 770bbd3016efa2ed73516136d8fed5faf849cbfc Mon Sep 17 00:00:00 2001
|
2
|
+
From: Daniel Veillard <veillard@redhat.com>
|
3
|
+
Date: Fri, 20 Nov 2015 15:04:09 +0800
|
4
|
+
Subject: [PATCH 16/18] Detect incoherency on GROW
|
5
|
+
|
6
|
+
the current pointer to the input has to be between the base and end
|
7
|
+
if not stop everything we have an internal state error.
|
8
|
+
---
|
9
|
+
parser.c | 9 ++++++++-
|
10
|
+
1 file changed, 8 insertions(+), 1 deletion(-)
|
11
|
+
|
12
|
+
diff --git a/parser.c b/parser.c
|
13
|
+
index 0b8282b..aef618f 100644
|
14
|
+
--- a/parser.c
|
15
|
+
+++ b/parser.c
|
16
|
+
@@ -2075,9 +2075,16 @@ static void xmlGROW (xmlParserCtxtPtr ctxt) {
|
17
|
+
((ctxt->input->buf) && (ctxt->input->buf->readcallback != (xmlInputReadCallback) xmlNop)) &&
|
18
|
+
((ctxt->options & XML_PARSE_HUGE) == 0)) {
|
19
|
+
xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup");
|
20
|
+
- ctxt->instate = XML_PARSER_EOF;
|
21
|
+
+ xmlHaltParser(ctxt);
|
22
|
+
+ return;
|
23
|
+
}
|
24
|
+
xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
|
25
|
+
+ if ((ctxt->input->cur > ctxt->input->end) ||
|
26
|
+
+ (ctxt->input->cur < ctxt->input->base)) {
|
27
|
+
+ xmlHaltParser(ctxt);
|
28
|
+
+ xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "cur index out of bound");
|
29
|
+
+ return;
|
30
|
+
+ }
|
31
|
+
if ((ctxt->input->cur != NULL) && (*ctxt->input->cur == 0) &&
|
32
|
+
(xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0))
|
33
|
+
xmlPopInput(ctxt);
|
34
|
+
--
|
35
|
+
2.5.0
|
36
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
From d6fea24a7fa952a9d9d919431ba355f684d683ba Mon Sep 17 00:00:00 2001
|
2
|
+
From: Daniel Veillard <veillard@redhat.com>
|
3
|
+
Date: Fri, 20 Nov 2015 16:06:59 +0800
|
4
|
+
Subject: [PATCH 17/18] CVE-2015-7500 Fix memory access error due to incorrect
|
5
|
+
entities boundaries
|
6
|
+
|
7
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756525
|
8
|
+
handle properly the case where we popped out of the current entity
|
9
|
+
while processing a start tag
|
10
|
+
Reported by Kostya Serebryany @ Google
|
11
|
+
|
12
|
+
This slightly modifies the output of 754946 in regression tests
|
13
|
+
---
|
14
|
+
parser.c | 28 ++++++++++++++++++++++------
|
15
|
+
result/errors/754946.xml.err | 7 +++++--
|
16
|
+
2 files changed, 27 insertions(+), 8 deletions(-)
|
17
|
+
|
18
|
+
diff --git a/parser.c b/parser.c
|
19
|
+
index aef618f..f3c3117 100644
|
20
|
+
--- a/parser.c
|
21
|
+
+++ b/parser.c
|
22
|
+
@@ -9346,7 +9346,7 @@ xmlParseStartTag2(xmlParserCtxtPtr ctxt, const xmlChar **pref,
|
23
|
+
const xmlChar **atts = ctxt->atts;
|
24
|
+
int maxatts = ctxt->maxatts;
|
25
|
+
int nratts, nbatts, nbdef;
|
26
|
+
- int i, j, nbNs, attval, oldline, oldcol;
|
27
|
+
+ int i, j, nbNs, attval, oldline, oldcol, inputNr;
|
28
|
+
const xmlChar *base;
|
29
|
+
unsigned long cur;
|
30
|
+
int nsNr = ctxt->nsNr;
|
31
|
+
@@ -9365,6 +9365,7 @@ reparse:
|
32
|
+
SHRINK;
|
33
|
+
base = ctxt->input->base;
|
34
|
+
cur = ctxt->input->cur - ctxt->input->base;
|
35
|
+
+ inputNr = ctxt->inputNr;
|
36
|
+
oldline = ctxt->input->line;
|
37
|
+
oldcol = ctxt->input->col;
|
38
|
+
nbatts = 0;
|
39
|
+
@@ -9390,7 +9391,8 @@ reparse:
|
40
|
+
*/
|
41
|
+
SKIP_BLANKS;
|
42
|
+
GROW;
|
43
|
+
- if (ctxt->input->base != base) goto base_changed;
|
44
|
+
+ if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr))
|
45
|
+
+ goto base_changed;
|
46
|
+
|
47
|
+
while (((RAW != '>') &&
|
48
|
+
((RAW != '/') || (NXT(1) != '>')) &&
|
49
|
+
@@ -9401,7 +9403,7 @@ reparse:
|
50
|
+
|
51
|
+
attname = xmlParseAttribute2(ctxt, prefix, localname,
|
52
|
+
&aprefix, &attvalue, &len, &alloc);
|
53
|
+
- if (ctxt->input->base != base) {
|
54
|
+
+ if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr)) {
|
55
|
+
if ((attvalue != NULL) && (alloc != 0))
|
56
|
+
xmlFree(attvalue);
|
57
|
+
attvalue = NULL;
|
58
|
+
@@ -9550,7 +9552,8 @@ skip_ns:
|
59
|
+
break;
|
60
|
+
}
|
61
|
+
SKIP_BLANKS;
|
62
|
+
- if (ctxt->input->base != base) goto base_changed;
|
63
|
+
+ if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr))
|
64
|
+
+ goto base_changed;
|
65
|
+
continue;
|
66
|
+
}
|
67
|
+
|
68
|
+
@@ -9587,7 +9590,8 @@ failed:
|
69
|
+
GROW
|
70
|
+
if (ctxt->instate == XML_PARSER_EOF)
|
71
|
+
break;
|
72
|
+
- if (ctxt->input->base != base) goto base_changed;
|
73
|
+
+ if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr))
|
74
|
+
+ goto base_changed;
|
75
|
+
if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
|
76
|
+
break;
|
77
|
+
if (!IS_BLANK_CH(RAW)) {
|
78
|
+
@@ -9603,7 +9607,8 @@ failed:
|
79
|
+
break;
|
80
|
+
}
|
81
|
+
GROW;
|
82
|
+
- if (ctxt->input->base != base) goto base_changed;
|
83
|
+
+ if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr))
|
84
|
+
+ goto base_changed;
|
85
|
+
}
|
86
|
+
|
87
|
+
/*
|
88
|
+
@@ -9770,6 +9775,17 @@ base_changed:
|
89
|
+
if ((ctxt->attallocs[j] != 0) && (atts[i] != NULL))
|
90
|
+
xmlFree((xmlChar *) atts[i]);
|
91
|
+
}
|
92
|
+
+
|
93
|
+
+ /*
|
94
|
+
+ * We can't switch from one entity to another in the middle
|
95
|
+
+ * of a start tag
|
96
|
+
+ */
|
97
|
+
+ if (inputNr != ctxt->inputNr) {
|
98
|
+
+ xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
|
99
|
+
+ "Start tag doesn't start and stop in the same entity\n");
|
100
|
+
+ return(NULL);
|
101
|
+
+ }
|
102
|
+
+
|
103
|
+
ctxt->input->cur = ctxt->input->base + cur;
|
104
|
+
ctxt->input->line = oldline;
|
105
|
+
ctxt->input->col = oldcol;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
From 37bc5395ae2489db988b37b4dba070c584b516ca Mon Sep 17 00:00:00 2001
|
2
|
+
From: Hugh Davenport <hugh@allthethings.co.nz>
|
3
|
+
Date: Fri, 20 Nov 2015 17:16:06 +0800
|
4
|
+
Subject: [PATCH 18/18] CVE-2015-8242 Buffer overead with HTML parser in push
|
5
|
+
mode
|
6
|
+
|
7
|
+
For https://bugzilla.gnome.org/show_bug.cgi?id=756372
|
8
|
+
Error in the code pointing to the codepoint in the stack for the
|
9
|
+
current char value instead of the pointer in the input that the SAX
|
10
|
+
callback expects
|
11
|
+
Reported and fixed by Hugh Davenport
|
12
|
+
---
|
13
|
+
HTMLparser.c | 6 +++---
|
14
|
+
1 file changed, 3 insertions(+), 3 deletions(-)
|
15
|
+
|
16
|
+
diff --git a/HTMLparser.c b/HTMLparser.c
|
17
|
+
index bdf7807..b729197 100644
|
18
|
+
--- a/HTMLparser.c
|
19
|
+
+++ b/HTMLparser.c
|
20
|
+
@@ -5735,17 +5735,17 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
21
|
+
if (ctxt->keepBlanks) {
|
22
|
+
if (ctxt->sax->characters != NULL)
|
23
|
+
ctxt->sax->characters(
|
24
|
+
- ctxt->userData, &cur, 1);
|
25
|
+
+ ctxt->userData, &in->cur[0], 1);
|
26
|
+
} else {
|
27
|
+
if (ctxt->sax->ignorableWhitespace != NULL)
|
28
|
+
ctxt->sax->ignorableWhitespace(
|
29
|
+
- ctxt->userData, &cur, 1);
|
30
|
+
+ ctxt->userData, &in->cur[0], 1);
|
31
|
+
}
|
32
|
+
} else {
|
33
|
+
htmlCheckParagraph(ctxt);
|
34
|
+
if (ctxt->sax->characters != NULL)
|
35
|
+
ctxt->sax->characters(
|
36
|
+
- ctxt->userData, &cur, 1);
|
37
|
+
+ ctxt->userData, &in->cur[0], 1);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
ctxt->token = 0;
|
41
|
+
--
|
42
|
+
2.5.0
|
43
|
+
|
data/test_all
CHANGED
@@ -61,8 +61,10 @@ function compile {
|
|
61
61
|
|
62
62
|
for ruby in $RUBIES ; do
|
63
63
|
rvm_use ${ruby}
|
64
|
-
if ! [[ $(bundle -v) =~ "1.
|
65
|
-
|
64
|
+
if ! [[ $(bundle -v) =~ "1.10." ]] ; then
|
65
|
+
yes | gem uninstall --force bundler
|
66
|
+
gem install bundler -v 1.10.6
|
67
|
+
bundle -v
|
66
68
|
fi
|
67
69
|
bundle install --quiet --local || bundle install
|
68
70
|
clean
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.7
|
4
|
+
version: 1.6.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-
|
15
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: mini_portile2
|
@@ -62,14 +62,14 @@ dependencies:
|
|
62
62
|
requirements:
|
63
63
|
- - "~>"
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 1.2.
|
65
|
+
version: 1.2.1
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
68
|
version_requirements: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: 1.2.
|
72
|
+
version: 1.2.1
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: hoe-gemspec
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -421,6 +421,14 @@ files:
|
|
421
421
|
- patches/libxml2/0008-CVE-2015-8035-Fix-XZ-compression-support-loop.patch
|
422
422
|
- patches/libxml2/0009-Updated-config.guess.patch
|
423
423
|
- patches/libxml2/0010-Fix-parsering-short-unclosed-comment-uninitialized-access.patch
|
424
|
+
- patches/libxml2/0011-Avoid-extra-processing-of-MarkupDecl-when-EOF.patch
|
425
|
+
- patches/libxml2/0012-Avoid-processing-entities-after-encoding-conversion-.patch
|
426
|
+
- patches/libxml2/0013-CVE-2015-7497-Avoid-an-heap-buffer-overflow-in-xmlDi.patch
|
427
|
+
- patches/libxml2/0014-CVE-2015-5312-Another-entity-expansion-issue.patch
|
428
|
+
- patches/libxml2/0015-Add-xmlHaltParser-to-stop-the-parser.patch
|
429
|
+
- patches/libxml2/0016-Detect-incoherency-on-GROW.patch
|
430
|
+
- patches/libxml2/0017-CVE-2015-7500-Fix-memory-access-error-due-to-incorre.patch
|
431
|
+
- patches/libxml2/0018-CVE-2015-8242-Buffer-overead-with-HTML-parser-in-pus.patch
|
424
432
|
- patches/libxslt/0001-Adding-doc-update-related-to-1.1.28.patch
|
425
433
|
- patches/libxslt/0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch
|
426
434
|
- patches/libxslt/0003-Initialize-pseudo-random-number-generator-with-curre.patch
|