On 2015年10月28日 17:41, Jussi Kukkonen wrote: > > > On 28 October 2015 at 07:22, > wrote: > > From: Kai Kang > > > Backport patch from: > > https://bugzilla.gnome.org/show_bug.cgi?id=746048 > > to fix valgrind errors and unsafe memory access. > > Fix the indentation by the way. > > Signed-off-by: Kai Kang > > --- > .../libxml2/libxml2-fix-unsafe-memory-access.patch | 97 > ++++++++++++++++++++++ > meta/recipes-core/libxml/libxml2_2.9.2.bb > | 3 +- > 2 files changed, 99 insertions(+), 1 deletion(-) > create mode 100644 > meta/recipes-core/libxml/libxml2/libxml2-fix-unsafe-memory-access.patch > > diff --git > a/meta/recipes-core/libxml/libxml2/libxml2-fix-unsafe-memory-access.patch > b/meta/recipes-core/libxml/libxml2/libxml2-fix-unsafe-memory-access.patch > new file mode 100644 > index 0000000..b583032 > --- /dev/null > +++ > b/meta/recipes-core/libxml/libxml2/libxml2-fix-unsafe-memory-access.patch > @@ -0,0 +1,97 @@ > +Upstream-Status: Backport > > > This may be a nitpick but I don't think DV has taken this patch in the > six months it's been available so it's not a backport. I suppose Backport is the best choice in upstream status [ Pending Submitted Accepted Backport Denied Inappropriate ]. Though it is not from official upstream, it is from somewhere else as listed in the patch. Thanks. --Kai > > - Jussi > > + > +Backport from > + > +https://bugzilla.gnome.org/show_bug.cgi?id=746048 > + > +to fix unsafe memory access. > + > +Signed-off-by: Kai Kang > > +--- > +diff --git a/HTMLparser.c b/HTMLparser.c > +index d329d3b..6f81424 100644 > +--- a/HTMLparser.c > ++++ b/HTMLparser.c > +@@ -3245,13 +3245,20 @@ htmlParseComment(htmlParserCtxtPtr ctxt) { > + ctxt->instate = state; > + return; > + } > ++ if ((ctxt->input->end - ctxt->input->cur) < 3) { > ++ ctxt->instate = XML_PARSER_EOF; > ++ htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, > ++ "Comment not terminated\n", NULL, NULL); > ++ xmlFree(buf); > ++ return; > ++ } > + q = CUR_CHAR(ql); > + NEXTL(ql); > + r = CUR_CHAR(rl); > + NEXTL(rl); > + cur = CUR_CHAR(l); > + len = 0; > +- while (IS_CHAR(cur) && > ++ while (((ctxt->input->end - ctxt->input->cur) > 0) && > IS_CHAR(cur) && > + ((cur != '>') || > + (r != '-') || (q != '-'))) { > + if (len + 5 >= size) { > +@@ -3281,7 +3288,7 @@ htmlParseComment(htmlParserCtxtPtr ctxt) { > + } > + } > + buf[len] = 0; > +- if (!IS_CHAR(cur)) { > ++ if (!(ctxt->input->end - ctxt->input->cur) || !IS_CHAR(cur)) { > + htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, > + "Comment not terminated \n