untrusted comment: verify with openbsd-75-base.pub
RWRGj1pRpprAfipoKgFCd+0OzLWfpp8JqOAR3LIHA4U4I8wQJcsblPv/NDpyHPB9e2fYe8YCR6f43ffhRBcPT74uUw+VLzymtwk=

OpenBSD 7.5 errata 014, November 15, 2024:

In libexpat fix crash within function XML_ResumeParser.  CVE-2024-50602

Apply by doing:
   signify -Vep /etc/signify/openbsd-75-base.pub -x 014_expat.patch.sig \
       -m - | (cd /usr/src && patch -p0)

And then rebuild and install libexpat:
   cd /usr/src/lib/libexpat
   make obj
   make
   make install

Index: lib/libexpat/Changes
===================================================================
RCS file: /cvs/src/lib/libexpat/Changes,v
diff -u -p -r1.24.4.1 Changes
--- lib/libexpat/Changes        9 Sep 2024 12:45:38 -0000       1.24.4.1
+++ lib/libexpat/Changes        12 Nov 2024 21:22:51 -0000
@@ -3,6 +3,15 @@ NOTE: We are looking for help with a few
      If you can help, please get in touch.  Thanks!

        Security fixes:
+            #915  CVE-2024-50602 -- Fix crash within function XML_ResumeParser
+                    from a NULL pointer dereference by disallowing function
+                    XML_StopParser to (stop or) suspend an unstarted parser.
+                    // CWE-476 CWE-754
+
+        Other changes:
+            #914  Fix signedness of format strings
+
+        Security fixes:
       #887 #890  CVE-2024-45490 -- Calling function XML_ParseBuffer with
                    len < 0 without noticing and then calling XML_GetBuffer
                    will have XML_ParseBuffer fail to recognize the problem
Index: lib/libexpat/examples/element_declarations.c
===================================================================
RCS file: /cvs/src/lib/libexpat/examples/element_declarations.c,v
diff -u -p -r1.1 element_declarations.c
--- lib/libexpat/examples/element_declarations.c        11 Feb 2024 00:56:28 -0000      1.1
+++ lib/libexpat/examples/element_declarations.c        12 Nov 2024 21:22:51 -0000
@@ -15,6 +15,7 @@
   Copyright (c) 2016-2024 Sebastian Pipping <[email protected]>
   Copyright (c) 2017      Rhodri James <[email protected]>
   Copyright (c) 2019      Zhongyuan Zhou <[email protected]>
+   Copyright (c) 2024      Hanno Böck <[email protected]>
   Licensed under the MIT license:

   Permission is  hereby granted,  free of charge,  to any  person obtaining
@@ -127,15 +128,15 @@ dumpContentModelElement(const XML_Conten
  }

  // Node
-  printf("[%u] type=%s(%d), quant=%s(%d)", (unsigned)(model - root),
-         contentTypeName(model->type), model->type,
-         contentQuantName(model->quant), model->quant);
+  printf("[%u] type=%s(%u), quant=%s(%u)", (unsigned)(model - root),
+         contentTypeName(model->type), (unsigned int)model->type,
+         contentQuantName(model->quant), (unsigned int)model->quant);
  if (model->name) {
    printf(", name=\"%" XML_FMT_STR "\"", model->name);
  } else {
    printf(", name=NULL");
  }
-  printf(", numchildren=%d", model->numchildren);
+  printf(", numchildren=%u", model->numchildren);
  printf("\n");
}

Index: lib/libexpat/lib/xmlparse.c
===================================================================
RCS file: /cvs/src/lib/libexpat/lib/xmlparse.c,v
diff -u -p -r1.37.2.1 xmlparse.c
--- lib/libexpat/lib/xmlparse.c 9 Sep 2024 12:45:38 -0000       1.37.2.1
+++ lib/libexpat/lib/xmlparse.c 12 Nov 2024 21:22:52 -0000
@@ -1,4 +1,4 @@
-/* 628e24d4966bedbd4800f6ed128d06d29703765b4bce12d3b7f099f90f842fc9 (2.6.0+)
+/* c5625880f4bf417c1463deee4eb92d86ff413f802048621c57e25fe483eb59e4 (2.6.4+)
                            __  __            _
                         ___\ \/ /_ __   __ _| |_
                        / _ \\  /| '_ \ / _` | __|
@@ -39,6 +39,7 @@
   Copyright (c) 2022      Sean McBride <[email protected]>
   Copyright (c) 2023      Owain Davies <[email protected]>
   Copyright (c) 2023      Sony Corporation / Snild Dolkow <[email protected]>
+   Copyright (c) 2024      Hanno Böck <[email protected]>
   Licensed under the MIT license:

   Permission is  hereby granted,  free of charge,  to any  person obtaining
@@ -2225,6 +2226,9 @@ XML_StopParser(XML_Parser parser, XML_Bo
  if (parser == NULL)
    return XML_STATUS_ERROR;
  switch (parser->m_parsingStatus.parsing) {
+  case XML_INITIALIZED:
+    parser->m_errorCode = XML_ERROR_FINISHED;
+    return XML_STATUS_ERROR;
  case XML_SUSPENDED:
    if (resumable) {
      parser->m_errorCode = XML_ERROR_SUSPENDED;
@@ -2235,7 +2239,7 @@ XML_StopParser(XML_Parser parser, XML_Bo
  case XML_FINISHED:
    parser->m_errorCode = XML_ERROR_FINISHED;
    return XML_STATUS_ERROR;
-  default:
+  case XML_PARSING:
    if (resumable) {
#ifdef XML_DTD
      if (parser->m_isParamEntity) {
@@ -2246,6 +2250,9 @@ XML_StopParser(XML_Parser parser, XML_Bo
      parser->m_parsingStatus.parsing = XML_SUSPENDED;
    } else
      parser->m_parsingStatus.parsing = XML_FINISHED;
+    break;
+  default:
+    assert(0);
  }
  return XML_STATUS_OK;
}
@@ -7852,7 +7859,7 @@ accountingReportDiff(XML_Parser rootPars
  assert(! rootParser->m_parentParser);

  fprintf(stderr,
-          " (+" EXPAT_FMT_PTRDIFF_T("6") " bytes %s|%d, xmlparse.c:%d) %*s\"",
+          " (+" EXPAT_FMT_PTRDIFF_T("6") " bytes %s|%u, xmlparse.c:%d) %*s\"",
          bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP",
          levelsAwayFromRootParser, source_line, 10, "");

@@ -7965,7 +7972,7 @@ entityTrackingReportStats(XML_Parser roo

  fprintf(
      stderr,
-      "expat: Entities(%p): Count %9d, depth %2d/%2d %*s%s%s; %s length %d (xmlparse.c:%d)\n",
+      "expat: Entities(%p): Count %9u, depth %2u/%2u %*s%s%s; %s length %d (xmlparse.c:%d)\n",
      (void *)rootParser, rootParser->m_entity_stats.countEverOpened,
      rootParser->m_entity_stats.currentDepth,
      rootParser->m_entity_stats.maximumDepthSeen,