Hi,

ok to fix CVE-2021-3537 ?

Unfortunately libxml2 does not make security releases so we have
to pick the patches from their repository.

bluhm

Index: textproc/libxml/Makefile
===================================================================
RCS file: /data/mirror/openbsd/cvs/ports/textproc/libxml/Makefile,v
retrieving revision 1.186
diff -u -p -r1.186 Makefile
--- textproc/libxml/Makefile    27 Apr 2021 11:16:48 -0000      1.186
+++ textproc/libxml/Makefile    7 May 2021 17:39:34 -0000
@@ -4,8 +4,8 @@ COMMENT-main=           XML parsing library
 COMMENT-python=                Python bindings for libxml
 
 VERSION=               2.9.10
-REVISION-main=         3
-REVISION-python=       3
+REVISION-main=         4
+REVISION-python=       4
 DISTNAME=              libxml2-${VERSION}
 PKGNAME-main=          libxml-${VERSION}
 PKGNAME-python=                py3-libxml-${VERSION}
Index: textproc/libxml/patches/patch-parser_c
===================================================================
RCS file: 
/data/mirror/openbsd/cvs/ports/textproc/libxml/patches/patch-parser_c,v
retrieving revision 1.20
diff -u -p -r1.20 patch-parser_c
--- textproc/libxml/patches/patch-parser_c      1 Feb 2020 20:35:32 -0000       
1.20
+++ textproc/libxml/patches/patch-parser_c      7 May 2021 17:31:33 -0000
@@ -3,6 +3,10 @@ $OpenBSD: patch-parser_c,v 1.20 2020/02/
 https://gitlab.gnome.org/GNOME/libxml2/commit/0e1a49c89076
 CVE-2020-7595
 
+https://bugzilla.redhat.com/show_bug.cgi?id=1956522
+https://gitlab.gnome.org/GNOME/libxml2/commit/babe75030c7f64a37826bb3342317134568bef61
+CVE-2021-3537
+
 Index: parser.c
 --- parser.c.orig
 +++ parser.c
@@ -16,3 +20,24 @@ Index: parser.c
  
        if (c == 0) break;
          if ((c == '&') && (str[1] == '#')) {
+@@ -6194,6 +6195,8 @@ xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPt
+       SKIP_BLANKS;
+         cur = ret = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
+                                                            depth + 1);
++        if (cur == NULL)
++            return(NULL);
+       SKIP_BLANKS;
+       GROW;
+     } else {
+@@ -6327,6 +6330,11 @@ xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPt
+           SKIP_BLANKS;
+           last = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
+                                                           depth + 1);
++            if (last == NULL) {
++              if (ret != NULL)
++                  xmlFreeDocElementContent(ctxt->myDoc, ret);
++              return(NULL);
++            }
+           SKIP_BLANKS;
+       } else {
+           elem = xmlParseName(ctxt);

Reply via email to