OpenBSD/src OapiK6wsys/nfs nfs_subs.c

   only allow an NFS server to set file type on a new vnode

   Otherwise, a malicous server could aid a local user in avoiding access
   controls.

   This reverts nfs_subs.c rev 1.3.  Which was part of a commit to fix the
   use of automount with direct maps.

   reported by Andrew Griffiths
   from jsg@

   this is errata/7.9/016_nfs.patch.sig
VersionDeltaFile
1.151.10.2+2-2sys/nfs/nfs_subs.c
+2-21 files

OpenBSD/src T49Kj4ksys/nfs nfs_subs.c

   only allow an NFS server to set file type on a new vnode

   Otherwise, a malicous server could aid a local user in avoiding access
   controls.

   This reverts nfs_subs.c rev 1.3.  Which was part of a commit to fix the
   use of automount with direct maps.

   reported by Andrew Griffiths
   from jsg@

   this is errata/7.8/052_nfs.patch.sig
VersionDeltaFile
1.151.4.2+2-2sys/nfs/nfs_subs.c
+2-21 files

OpenBSD/src 9ybGWAZsys/dev/wscons wsemul_vt100var.h wsemul_sun.c

   Clamp numeric arguments of terminal escape sequences to an arbitrary value of
   100,000. The existing logic would happily process as many digits as provided,
   which could make the values wraparound at 2**32, or be considered as negative
   values if cast to a signed type, leading to incorrect processing.

   Bug report by Acts1631.
   from miod@

   this is errata/7.9/017_wscons.patch.sig
VersionDeltaFile
1.48.6.1+28-6sys/dev/wscons/wsemul_vt100.c
1.37.12.1+17-4sys/dev/wscons/wsemul_sun.c
1.14.6.1+4-2sys/dev/wscons/wsemul_vt100var.h
+49-123 files

OpenBSD/src pw88066sys/dev/wscons wsemul_vt100var.h wsemul_sun.c

   Clamp numeric arguments of terminal escape sequences to an arbitrary value of
   100,000. The existing logic would happily process as many digits as provided,
   which could make the values wraparound at 2**32, or be considered as negative
   values if cast to a signed type, leading to incorrect processing.

   Bug report by Acts1631.
   from miod@

   this is errata/7.8/053_wscons.patch.sig
VersionDeltaFile
1.48.2.1+28-6sys/dev/wscons/wsemul_vt100.c
1.37.8.1+17-4sys/dev/wscons/wsemul_sun.c
1.14.2.1+4-2sys/dev/wscons/wsemul_vt100var.h
+49-123 files

OpenBSD/src jqMiVuWsys/uvm uvm_aobj.c

   sys/uvm: validate anonymous object pager requests

   uao_get() trusts the requested page range before allocating pages and
   looking up swap slots; an invalid request can therefore allocate a page
   outside the object and read beyond its swap slot array. Validate the
   request before page lookup or allocation, preserving optional fault
   clustering at the object boundary.

   Reject nonpositive page counts and starting page indices outside the
   object; require the entire range for PGO_ALLPAGES, or a centeridx within
   both the request and the object otherwise. Compare against the remaining
   page count in voff_t and derive pageidx from the validated firstpage,
   avoiding overflow in the bounds check and unchecked narrowing.

   Reported by Andrew Griffiths, thanks!
   from kirill@; OK kettenis@

   this is errata/7.9/018_shmat.patch.sig
VersionDeltaFile
1.122.2.1+36-3sys/uvm/uvm_aobj.c
+36-31 files

OpenBSD/src 7RgTghDsys/uvm uvm_aobj.c

   sys/uvm: validate anonymous object pager requests

   uao_get() trusts the requested page range before allocating pages and
   looking up swap slots; an invalid request can therefore allocate a page
   outside the object and read beyond its swap slot array. Validate the
   request before page lookup or allocation, preserving optional fault
   clustering at the object boundary.

   Reject nonpositive page counts and starting page indices outside the
   object; require the entire range for PGO_ALLPAGES, or a centeridx within
   both the request and the object otherwise. Compare against the remaining
   page count in voff_t and derive pageidx from the validated firstpage,
   avoiding overflow in the bounds check and unchecked narrowing.

   Reported by Andrew Griffiths, thanks!
   from kirill@; OK kettenis@

   this is errata/7.8/054_shmat.patch.sig
VersionDeltaFile
1.116.2.1+36-3sys/uvm/uvm_aobj.c
+36-31 files

OpenBSD/src tDu871Ysbin/fsck_ffs fsck.h extern.h

   use mode_t and symbolic settings; ok millert
VersionDeltaFile
1.36+4-3sbin/fsck_ffs/dir.c
1.36+2-2sbin/fsck_ffs/fsck.h
1.15+2-2sbin/fsck_ffs/extern.h
+8-73 files

OpenBSD/src pb2c37Klib/libexpat Changes, lib/libexpat/lib internal.h xmltok.h

   Backport all changes from libexpat version 2.8.4.

   Relevant for OpenBSD are security fixes #1321 #1331 #1322, other
   changes #1315 #1325 #1334 #1340 #1319 #1320.  Library bump is not
   necessary.
   CVE-2026-66046 CVE-2026-76641 CVE-2026-76957

   from bluhm@; OK tb@

   this is errata/7.9/019_expat.patch.sig
VersionDeltaFile
1.47.2.2+189-64lib/libexpat/lib/xmlparse.c
1.9.4.2+79-0lib/libexpat/tests/basic_tests.c
1.35.2.2+65-0lib/libexpat/Changes
1.10.4.2+56-0lib/libexpat/tests/misc_tests.c
1.9.6.2+2-2lib/libexpat/lib/xmltok.h
1.17.2.2+1-0lib/libexpat/lib/internal.h
+392-666 files

OpenBSD/src njnLW5Ilib/libexpat Changes, lib/libexpat/lib internal.h xmltok.h

   Backport all changes from libexpat version 2.8.4.

   Relevant for OpenBSD are security fixes #1321 #1331 #1322, other
   changes #1315 #1325 #1334 #1340 #1319 #1320.  Library bump is not
   necessary.
   CVE-2026-66046 CVE-2026-76641 CVE-2026-76957

   from bluhm@; OK tb@

   this is errata/7.8/055_expat.patch.sig
VersionDeltaFile
1.44.2.5+189-64lib/libexpat/lib/xmlparse.c
1.7.2.4+79-0lib/libexpat/tests/basic_tests.c
1.32.2.5+65-0lib/libexpat/Changes
1.8.2.3+56-0lib/libexpat/tests/misc_tests.c
1.9.2.2+2-2lib/libexpat/lib/xmltok.h
1.15.2.3+1-0lib/libexpat/lib/internal.h
+392-666 files

OpenBSD/src 8A63RCwusr.sbin/ldapd ldapd.c auth.c

   Assign connections a 64 bit identifier rather than using the socket fd to
   identify them between subprocesses.

   Based on a report from Franz Bettag of Bettag Systems
   from jmatthew@; OK deraadt@

   this is errata/7.9/021_ldapd.patch.sig
VersionDeltaFile
1.40.4.1+7-4usr.sbin/ldapd/ldape.c
1.37.8.1+6-4usr.sbin/ldapd/ldapd.h
1.21.12.1+5-3usr.sbin/ldapd/conn.c
1.32.18.1+2-2usr.sbin/ldapd/ldapd.c
1.16.4.1+2-2usr.sbin/ldapd/auth.c
+22-155 files

OpenBSD/src kHEW1ngusr.sbin/ldapd ldapd.c auth.c

   Assign connections a 64 bit identifier rather than using the socket fd to
   identify them between subprocesses.

   Based on a report from Franz Bettag of Bettag Systems
   from jmatthew@; OK deraadt@

   this is errata/7.8/057_ldapd.patch.sig
VersionDeltaFile
1.40.2.1+7-4usr.sbin/ldapd/ldape.c
1.37.4.1+6-4usr.sbin/ldapd/ldapd.h
1.21.8.1+5-3usr.sbin/ldapd/conn.c
1.32.14.1+2-2usr.sbin/ldapd/ldapd.c
1.16.2.1+2-2usr.sbin/ldapd/auth.c
+22-155 files

OpenBSD/src mhG6opIdistrib/sets/lists/comp md.arm64

   sync
VersionDeltaFile
1.28+2-0distrib/sets/lists/comp/md.arm64
+2-01 files

OpenBSD/src SllgGUYsys/net if_ppp.c bpf_filter.c

   bpf_validate: change len argument to u_int

   All callers of bpf_validate use unsigned values and bpf_validate
   does the same internally.

   OK tb@
VersionDeltaFile
1.124+2-2sys/net/if_ppp.c
1.42+2-2sys/net/bpf_filter.c
1.78+2-2sys/net/bpf.h
1.238+2-2sys/net/bpf.c
+8-84 files

OpenBSD/src 0GveYDmregress/usr.bin/mandoc/mdoc/Bl Makefile colEQ.out_ascii

   test eqn(7) at the end of a column list with no .It macros;
   related to mdoc_validate.c rev. 1.312
VersionDeltaFile
1.1+14-0regress/usr.bin/mandoc/mdoc/Bl/colEQ.in
1.42+6-4regress/usr.bin/mandoc/mdoc/Bl/Makefile
1.1+10-0regress/usr.bin/mandoc/mdoc/Bl/colEQ.out_ascii
+30-43 files

OpenBSD/src tpdtpakusr.bin/mandoc mdoc_validate.c

   Fix a logic error in post_bl() that could cause a NULL pointer access.

   When a column list does not use explicit .It macros and contains
   at least one text line followed by a node generated on the roff(7)
   level, for example an eqn(7) node, and then nothing more, in
   particular no following .It macro, the code wraps the node generated
   on the roff level in an implicit .It macro.  After moving the node
   into the new .It macro, the loop variable "nchild" iterating over
   the children of .Bl must be set to NULL to exit the while loop.
   Instead, the loop variable remained pointing at the moved node, and
   the loop tried to move it again, resulting in an access to its
   "prev" pointer, which is of course NULL in this situation.

   Hippolyte Doncieu de la Batie <hippolyte.doncieu at gmail.com>
   found this bug using clang-14 with libFuzzer
   and drafted an almost correct patch to fix it.
   The first half of his patch was correct;
   i slightly rearranged it with no functional change
   to make the code two lines shorter and easier to read.

    [4 lines not shown]
VersionDeltaFile
1.312+3-3usr.bin/mandoc/mdoc_validate.c
+3-31 files

OpenBSD/src fO9ns9Zusr.sbin/tcpdump interface.h tcpdump.c

   use getprogname() instead of manually repeating the argv deconstruction
VersionDeltaFile
1.102+5-7usr.sbin/tcpdump/tcpdump.c
1.89+3-3usr.sbin/tcpdump/interface.h
+8-102 files

OpenBSD/src roTrhn5sbin/iked proc.c, usr.sbin/bgpd bgpd.c

   iked, ntpd, and bgpd are the final 3 programs to move to getexecpath(3)
   and execv(3).
VersionDeltaFile
1.294+13-13usr.sbin/bgpd/bgpd.c
1.148+12-9usr.sbin/ntpd/ntpd.c
1.57+9-9sbin/iked/proc.c
1.186+7-2usr.sbin/ntpd/ntp.c
1.31+4-4usr.sbin/ntpd/util.c
1.65+4-4usr.sbin/ntpd/constraint.c
+49-413 files not shown
+60-489 files

OpenBSD/src sZUyzdnusr.sbin/rpki-client cms.c

   rpki-client: rework cms_parse_validate() further

   This diff pulls the signed object handling into cms_parse_validate(),
   thereby simplifying the signature quite a bit. signed_object_parse()
   remains as a thin wrapper of cms_parse_validate() for now. Perhaps we
   will need a signed_object_parse_filemode(), for example.

   One benefit of doing this is that the CMS_ContentInfo object lives
   during the entire signd object validation, so we no longer need to
   create a copy of its eContent OCTET STRING for further processing.

   ok claudio
VersionDeltaFile
1.68+29-61usr.sbin/rpki-client/cms.c
+29-611 files

OpenBSD/src 6q7cbvIusr.sbin/rpki-client cms.c

   rpki-client: move cms_object_from_rtype() a bit up

   ok claudio
VersionDeltaFile
1.67+22-22usr.sbin/rpki-client/cms.c
+22-221 files

OpenBSD/src GaqJrFQusr.sbin/rpki-client validate.c

   rpki-client: fix handling of inherited resources in leaves

   It's been publicly known at least since Frank Denis's "security audit"
   dumps back in May that the RFC 3779 inheritance handling in libcrypto's
   path validation is broken. Namely, if the certificate to be validated
   inherits resources, X509v3_asid_validate_path(3) and friends can succeed
   even if one of the certs on the path does not have the corresponding
   resource delegation extension at all. RFC 3779's sections 2.3 and 3.3
   clearly require that every cert on the entire validating path have the
   relevant INR delegation extensions. Frank Denis flagged this for ASIDs,
   but it is obvious that IP addresses have the same problem.

   For rpki-client, one of the very few (if not the only) consumers of this
   code in libcrypto, this doesn't matter all that much because it duplicates
   much of the work on INR validation. Per the specification, EE certs with
   inherit elements are only in MFTs, TAKs (of which there are none) and
   the no longer supported GBRs (of which there is one - malformed). Correct
   nesting and presence of RFC 3779 extensions is ensured by rpki-client
   except for the leaf.

    [33 lines not shown]
VersionDeltaFile
1.85+31-5usr.sbin/rpki-client/validate.c
+31-51 files

OpenBSD/src zZFlxg7usr.sbin/httpd httpd.h httpd.c

   Another relatively simple getexecpath(3) + execv(3) conversion.
   ok rsadowski
VersionDeltaFile
1.60+8-8usr.sbin/httpd/proc.c
1.83+6-2usr.sbin/httpd/httpd.c
1.184+2-2usr.sbin/httpd/httpd.h
+16-123 files

OpenBSD/src 4MwLuiBsys/net pfvar_priv.h pf.c

   Johann Hoepfner found 5 places where un-terminated strings in pf ioctl's
   were handled incorrectly but his solution of silently truncating them and
   potentially acting on the wrong object decided from the string didn't
   satisfy me.  I started over, and identified all un-terminated strings
   using strlnen and made them return ENAMETOOLONG. There were roughly 40
   occurances of this type of bug.
   ok sashan
VersionDeltaFile
1.434+129-61sys/net/pf_ioctl.c
1.149+82-70sys/net/pf_table.c
1.49+11-6sys/net/pf_osfp.c
1.1241+6-2sys/net/pf.c
1.43+2-2sys/net/pfvar_priv.h
+230-1415 files

OpenBSD/src liIbfsVsys/net bpf_filter.c

   Move code around to result in the same list of case statements in
   _bpf_filter and bpf_validate.

   Also encode BPF_LDX|BPF_MSH|BPF_B as BPF_LDX|BPF_B|BPF_MSH, all other
   BPF_LD / BPD_LDX instructions have BPF_{W,H,B} in 2nd position.

   OK tb@
VersionDeltaFile
1.41+49-49sys/net/bpf_filter.c
+49-491 files

OpenBSD/src RzyHLPMusr.bin/tmux tmux.h server-fn.c

   Add remain-on-exit failed-key and a -D flag to new-pane to have a modal
   pane wait for Escape/C-c. Both to allow better compatibility with
   popups.
VersionDeltaFile
1.512+20-9usr.bin/tmux/server-client.c
1.1169+15-4usr.bin/tmux/tmux.1
1.151+5-3usr.bin/tmux/cmd-split-window.c
1.245+4-3usr.bin/tmux/options-table.c
1.1439+2-1usr.bin/tmux/tmux.h
1.153+2-1usr.bin/tmux/server-fn.c
+48-216 files

OpenBSD/src OZqIVF4usr.sbin/ospfd ospfd.h ospfd.c

   Change imsg handling for kroute change and delete imsg messages

   Pass the imsg to kr_delete() and kr_change(). For kr_delete() a simple
   imsg_get_data call can be used. In kr_change() it is a bit more complex
   since the imsg is an array of struct kroute. So take the ibuf, validate
   the len and pull the first value in kr_change.

   Put the single OSPF route codepath into its own kr_change_one() function
   and simplify kr_change_fib() since it now only does RTM_ADD.
   kr_change_fib still uses ibuf_data internally since it needs to access the
   array of kroutes over and over again.

   Reads ok to tb@
VersionDeltaFile
1.122+108-77usr.sbin/ospfd/kroute.c
1.129+4-6usr.sbin/ospfd/ospfd.c
1.111+3-3usr.sbin/ospfd/ospfd.h
+115-863 files

OpenBSD/src XjT3e9Vlib/libc/sys connect.2, lib/libevent event.3

   use .Va for errno variable
VersionDeltaFile
1.14+8-4lib/libutil/ibuf_add.3
1.59+5-4lib/libevent/event.3
1.4+5-3lib/libpthread/man/sched_get_priority_min.3
1.35+5-3lib/libc/sys/connect.2
+23-144 files

OpenBSD/src vyeArfesys/kern kern_pledge.c

   Allow IPPROTO_IP / IP_TOS on AF_INET6 sockets to go through to the
   netinet6 code, which will quickly return EINVAL.  Too much software
   tries this.  Issue noticed in chrome by kirill
   discussions with kirill and robert.
VersionDeltaFile
1.366+10-2sys/kern/kern_pledge.c
+10-21 files

OpenBSD/src eEGEB9elib/libc/dlfcn init.c

   Learn the execpath executable from either of AUX_execpath or
   AUX_openbsd_execpath (the first will be deleted in about a week
   when kernels have crossed over)
   ok kettenis
VersionDeltaFile
1.28+3-2lib/libc/dlfcn/init.c
+3-21 files

OpenBSD/src D3SLF6Isys/kern exec_elf.c

   Export the new AUX_openbsd_execpath 4001 as well as the (soon to be removed)
   AUX_execpath.
   ok kettenis
VersionDeltaFile
1.204+6-2sys/kern/exec_elf.c
+6-21 files

OpenBSD/src a1REAEWsys/sys exec_elf.h

   Using AUX_execpath 15 collides with Linux use of the portable space,
   so let's use AUX_openbsd_execpath 4001 instead so that tools can tell
   the difference.
   Expand ELF_AUX_ENTRIES to 13 temporarily, and keep providing 15 for
   a while until people's kernels are updated through this phase.
   ok kettenis
VersionDeltaFile
1.110+4-3sys/sys/exec_elf.h
+4-31 files