{"article":{"slug":"openbsd-8-0","title":"OpenBSD 8.0","subtitle":null,"summary":"OpenBSD 8.0, the project's 61st release, shipped on October 20, 2026. Highlights include a 512G amd64 kernel virtual address space, arm64 hibernate support, RISC-V vector, AIA and Sstc support, sparc64 moving to LLVM and loongson retired, drm(4) updated to Linux 6.18.53 with Intel Arc A-Series support, MP guests in vmm, and refreshed packages and third-party components.","content_type":"changelog","language":"en","canonical_url":"https://www.openbsd.org/80.html","author":{"name":"OpenBSD","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"OpenBSD","url":"https://www.openbsd.org/","listing_slug":null,"listing":null},"topics":[{"name":"OpenBSD","slug":"openbsd","url":"https://listedarticles.com/topics/openbsd"},{"name":"Operating Systems","slug":"operating-systems","url":"https://listedarticles.com/topics/operating-systems"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Security","slug":"security","url":"https://listedarticles.com/topics/security"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":6144,"reading_minutes":27,"published_at":"2026-10-20T00:00:00.000Z","added_at":"2026-10-20T11:18:39.249Z","updated_at":"2026-10-20T11:18:39.249Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/openbsd-8-0","markdown_url":"https://listedarticles.com/articles/openbsd-8-0.md","example":false,"citation":"OpenBSD, OpenBSD. \"OpenBSD 8.0.\" 20 Oct 2026. https://www.openbsd.org/80.html (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://www.openbsd.org/80.html"},"body_markdown":"# OpenBSD 8.0\n\nReleased October 20, 2026. (61st OpenBSD release)\n\nCopyright 1997-2026, Theo de Raadt.\n\n8.0 Song: \"[The Simps on AI](https://www.openbsd.org/lyrics.html#80)\"\n\n- See the information on [the FTP page](https://www.openbsd.org/ftp.html) for a list of mirror machines.\n- Go to the `pub/OpenBSD/8.0/` directory on one of the mirror sites.\n- Have a look at [the 8.0 errata page](https://www.openbsd.org/errata80.html) for a list of bugs and workarounds.\n- See a [detailed log of changes](https://www.openbsd.org/plus80.html) between the 7.9 and 8.0 releases.\n\n## What's New\n\nThis is a partial list of new features and systems included in OpenBSD 8.0.\nFor a comprehensive list, see the [changelog](https://www.openbsd.org/plus80.html) leading to 8.0.\n\n- Platforms specific improvements:\n  - [amd64](https://www.openbsd.org/amd64.html):\n    - Raised the size of amd64 kernel virtual address space from 4G to 512G.\n    - [pmap(9)](https://man.openbsd.org/pmap.9) direct map now placed at a random location.\n    - Sped up swap encryption by using AES cpu instructions.\n  - [arm64](https://www.openbsd.org/arm64.html):\n    - Added hibernate support.\n    - Sped up swap encryption by using AES cpu instructions.\n    - Implemented bounce buffers.\n  - [luna88k](https://www.openbsd.org/luna88k.html):\n    - Fixed m88k multiple CMMU register writes.\n    - Extended m88k kernel-mode CMMU fault handling to handle write protection faults.\n    - Ensure luna88k m8820x\\_initialize\\_cpu() initializes logical CPU #0 on non-MP kernels.\n    - Faster CMMU walk in luna88k m8820x\\_cpu\\_number().\n  - [riscv64](https://www.openbsd.org/riscv64.html):\n    - Detect CPU extensions and advertise those usable by userland through elf\\_aux\\_info(3) AT\\_HWCAP and AT\\_HWCAP2 queries.\n    - Added kernel support for the 'V' vector extension.\n    - Implemented bounce buffers.\n    - Added support for RISC-V Advanced Interrupt Architecture; added [imsic(4)](https://man.openbsd.org/imsic.4) and [aplic(4)](https://man.openbsd.org/aplic.4) drivers.\n    - Added kernel support for the Sstc timer extension.\n  - [sparc64](https://www.openbsd.org/sparc64.html):\n    - Added bounds check for the sparc64 relocation flags table.\n    - Switched sparc64 to LLVM toolchain.\n    - Improved memory alignment on SPARCV9.\n  - Other [architectures](https://www.openbsd.org/plat.html):\n    - Retired support for loongson architecture (not working with Clang 22).\n    - Various RISC-V and MIPS bugfixes for LLVM.\n    - Fixed encoding of hppa protection bits.\n  - More platform specific changes can be found in the [hardware support](#hardware_support) section below.\n- Various kernel improvements:\n  - Fixed memory size calculation in [open\\_wmemstream(3)](https://man.openbsd.org/open_wmemstream.3).\n  - Fixed [semop(2)](https://man.openbsd.org/semop.2) semaphore id being destroyed/replaced during context switch.\n  - Improved inactive page queue heuristics for pagedaemon swapping pages/freeing memory.\n  - Added [getexecpath(3)](https://man.openbsd.org/getexecpath.3) to provide copy of the [elf(5)](https://man.openbsd.org/elf.5) program's execution path.\n  - More preparations for larger disklabel.\n- Suspend/Hibernate Support:\n  - Enabled suspend/resume for [qwz(4)](https://man.openbsd.org/qwz.4).\n  - Made [ufshci(4)](https://man.openbsd.org/ufshci.4) survive a suspend on the Samsung Galaxy Book4 Edge and HONOR MagicBook Art 14 Snapdragon.\n  - Stopped waking a suspended laptop when lid is closed and machdep.lidaction=0.\n  - Added a global sleep mode variable to distinguish hibernate from 'normal' suspend.\n  - Added suspend/resume support for [qcuart(4)](https://man.openbsd.org/qcuart.4).\n  - Added support for wakeup interrupts to [bytgpio(4)](https://man.openbsd.org/bytgpio.4), fixes IdeaPad resuming from suspend.\n  - Validate size of chunks copied to piglet during hibernate unpacking of disk image.\n  - Validate on-disk image sizes against integer overflow when reading chunks in unhibernate.\n  - Prevent disk image overreads when reading the chunktable in unhibernate.\n  - Clean up the framebuffer after unhibernate.\n  - Made failure to allocate a dedicated queue for [nvme(4)](https://man.openbsd.org/nvme.4) hibernate support non-fatal.\n- Direct Rendering Manager and graphics drivers:\n  - Updated [drm(4)](https://man.openbsd.org/drm.4) to\n    Linux 6.18.53.\n  - Support for Intel Arc A-Series (DG2/Alchemist) graphics cards\n    in [inteldrm(4)](https://man.openbsd.org/inteldrm.4).\n  - Increased kernel virtual address space on amd64 allows mapping\n    more than 4GB of VRAM.\n  - Workaround\n    [inteldrm(4)](https://man.openbsd.org/inteldrm.4)\n    GuC timeout errors seen on some Alder Lake systems.\n- VMM/VMD improvements:\n  - Added MP support for up to 64 VCPUs per guest VM.\n  - Redesigned to use files to manage VM ownership.\n  - Added x2apic mode support for guest virtual machines.\n  - Fix for when [vmd(8)](https://man.openbsd.org/vmd.8) does not detect kernel on startup.\n  - Provide faulting GPA to [vmd(8)](https://man.openbsd.org/vmd.8) for MMIO exits from [vmm(4)](https://man.openbsd.org/vmm.4).\n  - Refactored [vmm(4)](https://man.openbsd.org/vmm.4) exit handling and correct RIP adjustment.\n  - Added support for variable length instructions in VMX paths to [vmm(4)](https://man.openbsd.org/vmm.4).\n  - Prevent OOB reads by [vmd(8)](https://man.openbsd.org/vmd.8) in 32 and 64-bit [elf(5)](https://man.openbsd.org/elf.5) loaders with malformed [elf(5)](https://man.openbsd.org/elf.5) files.\n  - Implemented missing lapic/ioapic modes to fix [vmd(8)](https://man.openbsd.org/vmd.8) support for 32-bit linux guests.\n  - Added checksum offload for [vmd(8)](https://man.openbsd.org/vmd.8) guests.\n  - MSI/MSI-X virtio device interrupt support added.\n  - Support actually split split-virtqueues in [vmd(8)](https://man.openbsd.org/vmd.8).\n  - Added i82093aa ioapic and i82489dx-compatible lapic emulation to [vmd(8)](https://man.openbsd.org/vmd.8).\n  - Improved qcow handling.\n- Various new userland features:\n  - [netstat(1)](https://man.openbsd.org/netstat.1) can now print interface multicast counter; made '-q' more specific.\n  - Adjusted [ddb(4)](https://man.openbsd.org/ddb.4) default 'ps' output, print 'struct process' and 'struct proc' separately.\n  - Made [mount(8)](https://man.openbsd.org/mount.8) support DUIDs with -u; preserve DUID when updating file system.\n  - Implemented control of midithru ports with [sndioctl(1)](https://man.openbsd.org/sndioctl.1).\n  - Allow list elements to be added or removed by [sndioctl(1)](https://man.openbsd.org/sndioctl.1).\n  - Added the [sndiod(8)](https://man.openbsd.org/sndiod.8) server.mode control making the setting dynamic, changeable via [sndioctl(1)](https://man.openbsd.org/sndioctl.1).\n- More bugfixes and tweaks in userland:\n  - Ensure [elf(5)](https://man.openbsd.org/elf.5) header and program header fit into the shared library when loading.\n  - Fixed leak of key memory in [getpwent(3)](https://man.openbsd.org/getpwent.3) yp\\_next().\n  - In [patch(1)](https://man.openbsd.org/patch.1), solved an infinite loop on malformed [ed(1)](https://man.openbsd.org/ed.1) script input.\n  - Use [execv(3)](https://man.openbsd.org/execv.3) absolute-path in [authpf(8)](https://man.openbsd.org/authpf.8), [pflogd(8)](https://man.openbsd.org/pflogd.8), [ldapd(8)](https://man.openbsd.org/ldapd.8), [ldpd(8)](https://man.openbsd.org/ldpd.8), [lpd(8)](https://man.openbsd.org/lpd.8), [radiusd(8)](https://man.openbsd.org/radiusd.8), [snmpd(8)](https://man.openbsd.org/snmpd.8).\n  - [uaudio(4)](https://man.openbsd.org/uaudio.4) now tests the reported format and channels are usable.\n  - Stopped [sndiod(8)](https://man.openbsd.org/sndiod.8) aborting if a MIDI endpoint connects with non-empty buffers.\n  - Fixed two missing checks of file\\_new() return value in [sndiod(8)](https://man.openbsd.org/sndiod.8).\n  - Fixed [npppd(8)](https://man.openbsd.org/npppd.8) LCP MRU option handing.\n  - Adjust [pstat(8)](https://man.openbsd.org/pstat.8) to return the pid of the session leader process; allow '-t -M' to work.\n  - Made [eigrpd(8)](https://man.openbsd.org/eigrpd.8) validate the prefixlen to avoid overflow.\n  - Made [sndiod(8)](https://man.openbsd.org/sndiod.8) allocate all midithru structures on the heap.\n- Improved hardware support and driver bugfixes, including:\n  - Enabled the GXTP7936 touchscreen on the Samsung Galaxy Book4 Edge.\n  - Added support for the riscv64 K3 PCIe/USB3 combo PHY.\n  - Enabled [gpioleds(4)](https://man.openbsd.org/gpioleds.4) on riscv64.\n  - In [smte(4)](https://man.openbsd.org/smte.4) (SpacemiT K1 Ethernet device), improved error checking of received packets.\n  - Fixed regular MSI interrupts on the SpacemiT K1 SoC.\n  - Added support for the SpacemiT K3 SoC to [smtclock(4)](https://man.openbsd.org/smtclock.4).\n  - Added SC7280 support to [qcgpio(4)](https://man.openbsd.org/qcgpio.4).\n  - Added support for the SpacemiT K3 [dwpcie(4)](https://man.openbsd.org/dwpcie.4) PCIe controller.\n  - Added RK3528 I2C5 clock, used in the Radxa E24C.\n  - Added ACPI hardware IDS for Qualcomm Glymur (X2) SoC.\n  - Implemented page table mirroring in [apldart(4)](https://man.openbsd.org/apldart.4); enable IOMMU for Apple USB controllers.\n  - New [samsabi(4)](https://man.openbsd.org/samsabi.4) driver for\n    the Samsung Advanced BIOS Interface (SABI).\n  - New [sambat(4)](https://man.openbsd.org/sambat.4) driver for\n    Samsung laptop battery monitor.\n  - New [rkotp(4)](https://man.openbsd.org/rkotp.4) driver for\n    Rockchip OTP memory.\n  - Added support for the RK8600 regulator used for CPU voltage on Radxa Zero 3 boards.\n  - Added more AMD \"Krackan Point\" device ids.\n  - Fixed HONOR MagicBook Touchpad multitouch support.\n  - Fixed [esp(4)](https://man.openbsd.org/esp.4) FIFO memory overflow.\n  - Fixed potential memory leak in [softraid(4)](https://man.openbsd.org/softraid.4) rebuild.\n  - Fixed [softraid(4)](https://man.openbsd.org/softraid.4) rebuild on disks with 4096-byte sectors.\n  - Fixed high memory mbufs for 64-bit DMA capable [re(4)](https://man.openbsd.org/re.4).\n- New or improved network hardware support:\n  - Added support for Panther Lake and Wildcat Lake Ethernet devices to\n    [em(4)](https://man.openbsd.org/em.4).\n  - Added support for Intel E610 Ethernet devices to the [ix(4)](https://man.openbsd.org/ix.4) driver.\n- Added or improved wireless network drivers:\n  - Properly handle potential case of empty packets returned from [qwx(4)](https://man.openbsd.org/qwx.4) hardware.\n  - Added missing DMA syncs for [qwx(4)](https://man.openbsd.org/qwx.4) SRNG DMA descriptor memory.\n  - Properly handle [qwx(4)](https://man.openbsd.org/qwx.4) VIF DMA map allocation failures at attach time.\n  - Fixed use of stale pointers on the [qwx(4)](https://man.openbsd.org/qwx.4) vif list which caused crashes.\n  - Properly reset [qwx(4)](https://man.openbsd.org/qwx.4) driver and device state if it fails to get RUNNING in qwx\\_init().\n  - Avoid race condition in [qwx(4)](https://man.openbsd.org/qwx.4) device during power-on.\n  - Use the ioctl rwlock correctly in [qwx(4)](https://man.openbsd.org/qwx.4) qwx\\_activate().\n  - Ensure [qwx(4)](https://man.openbsd.org/qwx.4) rx\\_ring->bufs\\_max and freemap are always initialised correctly.\n  - Stopped [qwx(4)](https://man.openbsd.org/qwx.4) init task waiting for the ioctl lock to become available.\n  - Made [qwx(4)](https://man.openbsd.org/qwx.4) properly errors which occur in qwx\\_qmi\\_fw\\_init\\_done().\n  - Fixed roaming between APs with [qwx(4)](https://man.openbsd.org/qwx.4).\n  - Always allow data frame interrupts in [qwx(4)](https://man.openbsd.org/qwx.4) while the interface is UP.\n  - Added support for 40MHz channels to [qwx(4)](https://man.openbsd.org/qwx.4).\n  - Made [qwx(4)](https://man.openbsd.org/qwx.4) only allocate a new mbuf when a free Rx ring slot is available.\n  - Avoid calling bus\\_dmamap\\_create() from interrupt context in [qwx(4)](https://man.openbsd.org/qwx.4).\n  - Handle country code events sent by [qwx(4)](https://man.openbsd.org/qwx.4) firmware to make association more reliable.\n  - Reset [qwx(4)](https://man.openbsd.org/qwx.4) command ring 'queued' counter when the command ring gets reset.\n  - Ensure that [qwx(4)](https://man.openbsd.org/qwx.4) nq flags are always cleared when switching net80211 state.\n  - Fixed number of tx/rx streams set in [qwx(4)](https://man.openbsd.org/qwx.4) mac config.\n  - Made [qwx(4)](https://man.openbsd.org/qwx.4) send the PMF good-bye deauth frame when hopping out of RUN state.\n  - Ensure no new tasks get scheduled while IFF\\_RUNNING is in qwx\\_stop(). Prevents [qwz(4)](https://man.openbsd.org/qwz.4) crash.\n  - Make [qwx(4)](https://man.openbsd.org/qwx.4) prefer ic\\_bss over the ephemeral node in the scan tree.\n  - Add peer to [qwx(4)](https://man.openbsd.org/qwx.4) firmware after starting the vdev, not before. Fixes a firmware crash.\n  - Add 802.11n support to [qwx(4)](https://man.openbsd.org/qwx.4). Advertise HT capabilities and pass HT/QoS peer association.\n  - Ask [qwx(4)](https://man.openbsd.org/qwx.4) firmware to move into M3 state before resetting the device.\n  - Avoid calling bus\\_dmamap\\_destroy() from interrupt context in [qwx(4)](https://man.openbsd.org/qwx.4).\n  - Added 802.11n with 40MHz width to [qwz(4)](https://man.openbsd.org/qwz.4).\n  - Let [qwz(4)](https://man.openbsd.org/qwz.4) handle QoS in native WiFi frames.\n- Installer, upgrade, bootloader, and pkg-tools improvements:\n  - Harmonise [installurl(5)](https://man.openbsd.org/installurl.5) handling in [pkg\\_add(1)](https://man.openbsd.org/pkg_add.1), [sysupgrade(8)](https://man.openbsd.org/sysupgrade.8), and [syspatch(8)](https://man.openbsd.org/syspatch.8).\n  - Fixed free space check by [fw\\_update(8)](https://man.openbsd.org/fw_update.8) for unqualified filenames.\n  - Set limit on the size of files [fw\\_update(8)](https://man.openbsd.org/fw_update.8) can download.\n  - Stricter validation in [fw\\_update(8)](https://man.openbsd.org/fw_update.8) to no longer treat untrusted comments as data.\n  - [pkg\\_add(1)](https://man.openbsd.org/pkg_add.1) now detects and overcomes some endless loops with merge-sets.\n  - Clean trailing slashes from [fw\\_update(8)](https://man.openbsd.org/fw_update.8) FWURL.\n  - Removed current directory from default [pkg\\_add(1)](https://man.openbsd.org/pkg_add.1) search path.\n  - Improved downloading of firmware by filename in [fw\\_update(8)](https://man.openbsd.org/fw_update.8).\n  - Improved [fw\\_update(8)](https://man.openbsd.org/fw_update.8) error when SHA256.sig is not found.\n  - [fw\\_update(8)](https://man.openbsd.org/fw_update.8) now checks signature of local SHA256.sig.\n  - In [fw\\_update(8)](https://man.openbsd.org/fw_update.8), made [tar(1)](https://man.openbsd.org/tar.1) skip files outside expected locations.\n  - Stopped [syspatch(8)](https://man.openbsd.org/syspatch.8) downloading entire tgz file when looking for a potential update.\n- Security improvements:\n  - Fixed a [pledge(2)](https://man.openbsd.org/pledge.2) in [vfs(9)](https://man.openbsd.org/vfs.9).\n  - Fixed out-of-bounds access attempts on [aplmca(4)](https://man.openbsd.org/aplmca.4) SOCs.\n  - Stopped use of non-standard UID\\_MAX and GID\\_MAX in various utilities.\n  - Improved [ipsec(4)](https://man.openbsd.org/ipsec.4) AES GMAC crypto.\n  - Made [iked(8)](https://man.openbsd.org/iked.8) reject malformed and out-of-state IKEv2 messages.\n  - Plugged memleak in x509\\_verify (CID 656293).\n  - Avoid overflow in [sysctl(2)](https://man.openbsd.org/sysctl.2) KERN\\_PROC\\_ARGS.\n  - Prevent bogus or malicious iaddr data from crashing [dhcpd(8)](https://man.openbsd.org/dhcpd.8).\n  - Avoid potential memory exhaustion via DHCPINFORM in [dhcpd(8)](https://man.openbsd.org/dhcpd.8).\n  - Properly use saltlen and min\\_saltlen in libcrypto RSA-PSS.\n  - Reject invalid delta CRLs in libcrypto x509.\n  - Fixed RFC 3779 inheritance handling in libcrypto's path validation.\n  - Use [execve(2)](https://man.openbsd.org/execve.2) as $ORIGIN in [ld.so(1)](https://man.openbsd.org/ld.so.1) (otherwise fallback to realpath).\n  - Hardened [syspatch(8)](https://man.openbsd.org/syspatch.8) against malicious scripts.\n  - Restrict the characters that are allowed to pass through [smtpd(8)](https://man.openbsd.org/smtpd.8) environment and mda.\n  - Fixed reading past the NUL by [pax(1)](https://man.openbsd.org/pax.1).\n  - Stopped [pax(1)](https://man.openbsd.org/pax.1) extracting malicious archives outside the working directory.\n  - Added 'mcast' to the [pledge(2)](https://man.openbsd.org/pledge.2) for [lldpd(8)](https://man.openbsd.org/lldpd.8).\n  - Tightened pledge\\_sockopt() level/optname checks for different types of sockets.\n  - Extended the 'mcast' [pledge(2)](https://man.openbsd.org/pledge.2) to allow multicast tweaks on Ethernet frame sockets.\n  - Updated libexpat to version 2.8.4 (CVE-2026-66046 CVE-2026-76641 CVE-2026-76957).\n  - Avoid script pathname TOCTOU in exec when the vnode changes.\n  - Made [execve(2)](https://man.openbsd.org/execve.2) realpath processing more robust.\n  - Switched luna88k to build kernel files with -fno-pie.\n  - Unprivileged kernel memory read and write vulnerability removed from m88k 88100 data pipeline.\n  - [unveil(2)](https://man.openbsd.org/unveil.2) now restricts\n    [man(1)](https://man.openbsd.org/man.1),\n    [makewhatis(8)](https://man.openbsd.org/makewhatis.8), and\n    [man.cgi(8)](https://man.openbsd.org/man.cgi.8)\n    read and write access.\n  - [dhcpleased(8)](https://man.openbsd.org/dhcpleased.8) now validates the IP address the dhcp server acks.\n  - Fixed signed integer overflow in [perl(1)](https://man.openbsd.org/perl.1) Storable (CVE-2026-57433).\n  - Fixed integer overflow in [perl(1)](https://man.openbsd.org/perl.1) pack and unpack (CVE-2026-57432).\n  - Fixed [perl(1)](https://man.openbsd.org/perl.1) incorrect regular expression matches (CVE-2026-13221).\n  - Fixed memory leaks and race condition in [profil(2)](https://man.openbsd.org/profil.2).\n  - Improved checking of [elf(3)](https://man.openbsd.org/elf.3) notes; prevent out of bounds access.\n  - Reject [elf(3)](https://man.openbsd.org/elf.3) interpreters without loadable segments.\n  - Disable [kbind(2)](https://man.openbsd.org/kbind.2) and [pinsyscalls(2)](https://man.openbsd.org/pinsyscalls.2) for static binaries inside exec\\_elf\\_makecmds().\n  - Fixed [elf(5)](https://man.openbsd.org/elf.5) structs to avoid leaking kernel stack contents.\n  - LibXfont 2 fixes for CVE-2026-56001, CVE-2026-56002, and CVE-2026-56003.\n  - [Xserver(1)](https://man.openbsd.org/Xserver.1) fixes for CVE-2026-55999 and CVE-2026-56000.\n  - Updated [perl(1)](https://man.openbsd.org/perl.1) Socket to 2.041 (contains fix for CVE-2026-12087, out-of-bounds heap read).\n  - Fixed [iked(8)](https://man.openbsd.org/iked.8) to [bzero(3)](https://man.openbsd.org/bzero.3) the mask data structure, rather than using mask4.\n  - Fixes for CVE-2026-12244, CVE-2026-12245, CVE-2026-12246 and CVE-2026-12490 in [nsd(8)](https://man.openbsd.org/nsd.8).\n  - Stopped leaking transport in [isakmpd(8)](https://man.openbsd.org/isakmpd.8) error paths of udp\\_encap\\_handle\\_message().\n  - Enforce per-type ID payload size in [isakmpd(8)](https://man.openbsd.org/isakmpd.8) ipsec\\_validate\\_id\\_information().\n  - Avoid shift overflows in [memmem(3)](https://man.openbsd.org/memmem.3) and [strstr(3)](https://man.openbsd.org/strstr.3).\n  - Multiple additional bounds checks in [isakmpd(8)](https://man.openbsd.org/isakmpd.8).\n  - Provide a separate executable file for [syslogd(8)](https://man.openbsd.org/syslogd.8) parent, for privilege separation.\n  - Made [smtpd(8)](https://man.openbsd.org/smtpd.8) clear userinfo before sending over imsg.\n  - Made [smtpd(8)](https://man.openbsd.org/smtpd.8) reject oversized sockaddr payloads received over privsep IPC.\n  - Zero the temporary [smtpd(8)](https://man.openbsd.org/smtpd.8) envelope parsing buffers before use to strengthen privsep.\n  - Clear pending asynchronous lookups at teardown, for stronger [smtpd(8)](https://man.openbsd.org/smtpd.8) privsep.\n  - Fixed potential information leak from an uninitialised [ktrace(1)](https://man.openbsd.org/ktrace.1) stack variable.\n- New features in the network stack:\n  - Set [ice(4)](https://man.openbsd.org/ice.4) link state to full duplex.\n  - Reduced maximum TSO segs in [ice(4)](https://man.openbsd.org/ice.4), to allow more interfaces to attach.\n  - Enabled use of 128 DMA segments for TSO packets on [ice(4)](https://man.openbsd.org/ice.4).\n  - Enabled 64-bit DMA for [bge(4)](https://man.openbsd.org/bge.4) BCM5720.\n  - Enabled jumbo frames in [ogx(4)](https://man.openbsd.org/ogx.4).\n- Further changes and bugfixes in the network stack:\n  - Stopped [ipsec(4)](https://man.openbsd.org/ipsec.4) overflowing the maximum packet size in the IP header.\n  - Detect out of bound reads from an int overflow in the [bpf(4)](https://man.openbsd.org/bpf.4) bpf\\_mem backends.\n  - Moved [bpf(4)](https://man.openbsd.org/bpf.4) for outgoing packets later in the transmit path.\n  - Avoid leaking memory when mbuf chain allocations fail in [tun(4)](https://man.openbsd.org/tun.4) tun\\_dev\\_write().\n  - Fixed hardmtu and rxmax in [ixl(4)](https://man.openbsd.org/ixl.4).\n  - Handle dynamic channel width changes correctly in [iwx(4)](https://man.openbsd.org/iwx.4).\n  - Hardened [bpf(4)](https://man.openbsd.org/bpf.4) bpf\\_filter; block unhandled instructions with bpf\\_validate.\n  - Added proper program bound checks to the [bpf(4)](https://man.openbsd.org/bpf.4) engine (libpcap CVE-2026-31912).\n  - Fixed bpf filter calls in [ppp(4)](https://man.openbsd.org/ppp.4); use [bpf\\_mfilter(9)](https://man.openbsd.org/bpf_mfilter.9).\n  - Improved imsg handling of LS\\_UPD, LS\\_FLOOD and LS\\_SNAP in [ospfd(8)](https://man.openbsd.org/ospfd.8).\n  - Changed [ospfd(8)](https://man.openbsd.org/ospfd.8) imsg handling.\n  - [ospfd(8)](https://man.openbsd.org/ospfd.8) now adds missing rtlabel references and update routes when only the label changes.\n  - Preserve configured interface type on [ospf6d(8)](https://man.openbsd.org/ospf6d.8) link update.\n  - Ensure [ospfd(8)](https://man.openbsd.org/ospfd.8) does not leak information on memory address layout from process.\n  - Made [authpf(8)](https://man.openbsd.org/authpf.8) read\\_config() remove trailing white space to avoid misconfigurations.\n  - Fixed [veb(4)](https://man.openbsd.org/veb.4) SIOCBRDGRTS and SIOCBRDGVRTS ioctls leaking kernel stack data.\n  - Fixed packet corruption in [veb(4)](https://man.openbsd.org/veb.4).\n  - [veb(4)](https://man.openbsd.org/veb.4) now returns ENOMEM when mallocarray() fails in veb\\_rule\\_list\\_get().\n  - Fixed [ifconfig(8)](https://man.openbsd.org/ifconfig.8) 'vebX -tagged ifX' which accepted too many arguments.\n  - Improved [em(4)](https://man.openbsd.org/em.4) K1 exit timeout, to receive non-broadcast packets.\n  - Simplified mac type tests on [em(4)](https://man.openbsd.org/em.4).\n- The following changes were made to the [pf(4)](https://man.openbsd.org/pf.4) firewall:\n  - Fixed off-by-one in [pf(4)](https://man.openbsd.org/pf.4) ioctl DIOCIGETIFACES.\n  - Do not free the [pf(4)](https://man.openbsd.org/pf.4) caller's ruleset when attaching a table fails.\n  - No longer allow un-terminated strings in [pf(4)](https://man.openbsd.org/pf.4) ioctl's.\n  - Stopped [pf(4)](https://man.openbsd.org/pf.4) dropping valid MLD packets with unspecified source address.\n  - Prevent [pf(4)](https://man.openbsd.org/pf.4) dropping TCP state if it receives a crafted reset packet.\n  - Fixed races in [pf(4)](https://man.openbsd.org/pf.4) connection counters that caused connection counter underflows.\n  - Fragment reassembly in [pf(4)](https://man.openbsd.org/pf.4)/[inet(4)](https://man.openbsd.org/inet.4)/[inet6(4)](https://man.openbsd.org/inet6.4) now occurs in correct routing domain.\n  - Stopped 'pfctl -s all' dumping all OS fingerprints loaded to [pf(4)](https://man.openbsd.org/pf.4).\n  - Fixed NULL pointer dereference in [pf(4)](https://man.openbsd.org/pf.4) outbound packet path.\n  - Fixed out-of-bounds read in [pf(4)](https://man.openbsd.org/pf.4) pf\\_rule\\_copyin().\n- Routing daemons and other userland network programs saw the following improvements:\n  - Altered [smtpd(8)](https://man.openbsd.org/smtpd.8) code to avoid false bug reports from LLM scanners.\n  - Prevent size\\_t underflow on a malformed packets in [agentx(3)](https://man.openbsd.org/agentx.3) and [snmpd(8)](https://man.openbsd.org/snmpd.8).\n  - Widen [httpd(8)](https://man.openbsd.org/httpd.8) server flags to 64-bit integers.\n  - [httpd(8)](https://man.openbsd.org/httpd.8) now enforces 'max request body' for chunked requests passed to fastcgi.\n  - Made [httpd(8)](https://man.openbsd.org/httpd.8) reject config of shared TLS listeners with different client CA or CRL.\n  - In [httpd(8)](https://man.openbsd.org/httpd.8) now sends one imsg fastcgi param struct per parameter, to preserve config order.\n  - Added custom HTTP header support to [httpd(8)](https://man.openbsd.org/httpd.8).\n  - Fixed [httpd(8)](https://man.openbsd.org/httpd.8) suffix range handling.\n  - Stopped [httpd(8)](https://man.openbsd.org/httpd.8) sending location fcgiparams twice.\n  - Made [httpd(8)](https://man.openbsd.org/httpd.8) drain abort response via bufferevent to prevent errors being truncated.\n  - Restricted IMSG\\_CTL\\_PROCFD to parent and check process id/instance in\n    [iked(8)](https://man.openbsd.org/iked.8),\n    [httpd(8)](https://man.openbsd.org/httpd.8),\n    [relayd(8)](https://man.openbsd.org/relayd.8), and\n    [snmpd(8)](https://man.openbsd.org/snmpd.8).\n  - Switched the default TLS cipher in [httpd.conf(5)](https://man.openbsd.org/httpd.conf.5) set from 'compat' to 'secure.'\n  - Made [httpd(8)](https://man.openbsd.org/httpd.8) and [dhcpd(8)](https://man.openbsd.org/dhcpd.8) correctly error check [timegm(3)](https://man.openbsd.org/timegm.3).\n  - Random-relink [smtpd(8)](https://man.openbsd.org/smtpd.8) and [httpd(8)](https://man.openbsd.org/httpd.8) at boot.\n  - [httpd(8)](https://man.openbsd.org/httpd.8) now rejects CL.TE request framing (per RFC 9112 sections 6.1 and 6.3).\n  - Made [httpd(8)](https://man.openbsd.org/httpd.8) reject obs-fold with 400 (RFC 9112 5.2).\n  - Fixed uploads using [httpd(8)](https://man.openbsd.org/httpd.8) chunked transfer-encoding.\n  - [httpd(8)](https://man.openbsd.org/httpd.8) will now advertise Vary: Accept-Encoding whenever gzip-static is enabled.\n  - Made [httpd(8)](https://man.openbsd.org/httpd.8) advertise static file revalidation, preserving Last-Modified and If-Modified-Since flow.\n  - Added more config checks to [relayd(8)](https://man.openbsd.org/relayd.8).\n  - Explicitly flush [relayd(8)](https://man.openbsd.org/relayd.8) redirect rules after reloading.\n  - In [relayd(8)](https://man.openbsd.org/relayd.8), removed wrong disable flag for routers.\n  - Use a per-host random ICMP echo id in [relayd(8)](https://man.openbsd.org/relayd.8).\n  - Added Lua [patterns(7)](https://man.openbsd.org/patterns.7) support for [relayd(8)](https://man.openbsd.org/relayd.8) filter rules; improved [glob(7)](https://man.openbsd.org/glob.7) documentation.\n  - Use [getexecpath(3)](https://man.openbsd.org/getexecpath.3) and [execv(3)](https://man.openbsd.org/execv.3) in [bgpd(8)](https://man.openbsd.org/bgpd.8) [eigrpd(8)](https://man.openbsd.org/eigrpd.8), [httpd(8)](https://man.openbsd.org/httpd.8), [iked(8)](https://man.openbsd.org/iked.8), [ntpd(8)](https://man.openbsd.org/ntpd.8), [relayd(8)](https://man.openbsd.org/relayd.8), and [smtpd(8)](https://man.openbsd.org/smtpd.8).\n  - Fixed [relayd(8)](https://man.openbsd.org/relayd.8) deferring connections log.\n  - Made [relayd(8)](https://man.openbsd.org/relayd.8) check proc\\_compose and imsg\\_compose\\_event return values.\n  - Allow setting log level from [relayd.conf(5)](https://man.openbsd.org/relayd.conf.5).\n  - Added ECDSA support to the [relayd(8)](https://man.openbsd.org/relayd.8) CA privsep engine.\n  - [relayd(8)](https://man.openbsd.org/relayd.8) now rejects duplicate Content-Length headers with 400.\n  - Switched the default TLS cipher in [relayd.conf(5)](https://man.openbsd.org/relayd.conf.5) set from 'HIGH:!aNULL' to 'secure.'\n  - Switched [relayd(8)](https://man.openbsd.org/relayd.8) to new imsg API.\n  - Made [relayd(8)](https://man.openbsd.org/relayd.8) strip Content-Length for chunked messages (RFC 9112 section 6.1).\n  - Made [relayd(8)](https://man.openbsd.org/relayd.8) reject obs-fold to prevent parser differentials (RFC 9112 5.2).\n  - Removed [relayd(8)](https://man.openbsd.org/relayd.8) X509\\_dup() call that leaks memory; add error checks for X509\\_set\\_\\*.\n  - In [relayd(8)](https://man.openbsd.org/relayd.8), added support for the MKCALENDAR HTTP method.\n  - Fixed debug build of [relayd(8)](https://man.openbsd.org/relayd.8).\n  - Let [relayd(8)](https://man.openbsd.org/relayd.8) support multiple resolvable addresses.\n  - Let [relayd(8)](https://man.openbsd.org/relayd.8) handle HTTP responses without bodies.\n  - Fixed NULL dereference in [isakmpd(8)](https://man.openbsd.org/isakmpd.8) message\\_alloc\\_reply() callers.\n  - Fixed possible unaligned 32-bit read by [isakmpd(8)](https://man.openbsd.org/isakmpd.8).\n  - Validate [isakmpd(8)](https://man.openbsd.org/isakmpd.8) DELETE payload SPI array size.\n  - Validate proposal and transform sizes in [isakmpd(8)](https://man.openbsd.org/isakmpd.8).\n  - Added length checks for the Port-Message and State attributes in [login\\_radius(8)](https://man.openbsd.org/login_radius.8) Access-Challenge.\n  - Prevent the [dhcpleased(8)](https://man.openbsd.org/dhcpleased.8) engine from sending us a negative amount of routes.\n  - Made [dhcpleased(8)](https://man.openbsd.org/dhcpleased.8) accept correct amount of routes from the engine process.\n  - Make sure [dhcpleased(8)](https://man.openbsd.org/dhcpleased.8) UDP header length field at least covers the UDP header.\n  - Extended [smtpd(8)](https://man.openbsd.org/smtpd.8) mask-src to suppress session details.\n  - Switched [smtpd(8)](https://man.openbsd.org/smtpd.8) over to [imsgbuf\\_get(3)](https://man.openbsd.org/imsgbuf_get.3).\n  - Free dispatcher in [smtpd(8)](https://man.openbsd.org/smtpd.8) mda\\_envelope\\_free() to avoid a leak.\n  - [smtpd(8)](https://man.openbsd.org/smtpd.8) now rejects empty or slash-bearing usernames before building the mbox path.\n  - [smtpd(8)](https://man.openbsd.org/smtpd.8) now rejects CR/LF in argv-derived fields before starting the SMTP enqueue dialogue.\n  - Properly free the copied envelope on the [smtpd(8)](https://man.openbsd.org/smtpd.8) smarthost lookup failure path.\n  - Properly free mda\\_subaddress in [smtpd(8)](https://man.openbsd.org/smtpd.8) mda\\_envelope\\_free() to avoid memory leak.\n  - Made [smtpd(8)](https://man.openbsd.org/smtpd.8) use inflateEnd() to tear down the inflate stream in uncompress\\_gzip\\_chunk().\n  - [smtpd(8)](https://man.openbsd.org/smtpd.8) now stops parsing DNS answers once unpack\\_rr() reports failure.\n  - Validate encrypted [smtpd(8)](https://man.openbsd.org/smtpd.8) queue buffer sizes before processing auth tag and IV data.\n  - Imported [rtrd(8)](https://man.openbsd.org/rtrd.8) RPKI-To-Router protocol daemon and [rtrctl(8)](https://man.openbsd.org/rtrctl.8).\n  - [acme-client(1)](https://man.openbsd.org/acme-client.1) saw several changes:\n    - Allow wildcards to be specified in alternate names in the [acme-client(1)](https://man.openbsd.org/acme-client.1) config.\n    - Made [acme-client(1)](https://man.openbsd.org/acme-client.1) wipe optarg/eab/eab\\_key with [freezero(3)](https://man.openbsd.org/freezero.3) after use.\n    - Error check strdup() for external account binding by [acme-client(1)](https://man.openbsd.org/acme-client.1).\n    - In [acme-client(1)](https://man.openbsd.org/acme-client.1), prevent HTTP request injection.\n    - Let [acme-client(1)](https://man.openbsd.org/acme-client.1) handle '=' padding in base64url encoded EAB keys.\n    - Fixed [timegm(3)](https://man.openbsd.org/timegm.3) invocations in [acme-client(1)](https://man.openbsd.org/acme-client.1).\n    - Added support for [acme-client(1)](https://man.openbsd.org/acme-client.1) external account binding.\n  - In [bgpd(8)](https://man.openbsd.org/bgpd.8):\n    - Adjusted [bgpd(8)](https://man.openbsd.org/bgpd.8) graceful restart timer handling for multi-AFI/SAFI sessions.\n    - Made [bgpd(8)](https://man.openbsd.org/bgpd.8) do a prefix re-evaluation if the validation state of a route changes.\n    - Clear [bgpd(8)](https://man.openbsd.org/bgpd.8) NEXTHOP\\_CONNECTED in nexthop\\_update() if msg->connected is false.\n    - Made [bgpd(8)](https://man.openbsd.org/bgpd.8) throttle reads from the peer when MSG\\_PROCESS\\_LIMIT reached.\n    - Fixed [bgpd(8)](https://man.openbsd.org/bgpd.8) aspa\\_table\\_equal() equality comparison.\n    - Incorporated new RTR v2 error codes from draft-ietf-sidrops-8210bis-26 to [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - Reworked [bgpd(8)](https://man.openbsd.org/bgpd.8) IdleHoldTimer and how fast reconnects are implemented.\n    - Reworked the force\\_update logic in the [bgpd(8)](https://man.openbsd.org/bgpd.8) adj-rib-out.\n    - Stopped [bgpd(8)](https://man.openbsd.org/bgpd.8) leaking peer data to [bgpctl(8)](https://man.openbsd.org/bgpctl.8).\n    - Implemented ch\\_meta\\_locate() in [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - Brought back the [bgpd(8)](https://man.openbsd.org/bgpd.8) path\\_id\\_tx hack for regular peers.\n    - In [bgpd(8)](https://man.openbsd.org/bgpd.8), improved mrt\\_dump\\_entry\\_mp() calculation handling, avoid overflow.\n    - Avoid infinite loop when parsing PFKEY replies in [iked(8)](https://man.openbsd.org/iked.8), [isakmpd(8)](https://man.openbsd.org/isakmpd.8), [bgpd(8)](https://man.openbsd.org/bgpd.8), and [ldpd(8)](https://man.openbsd.org/ldpd.8).\n    - Had [bgpd(8)](https://man.openbsd.org/bgpd.8) make sure the nexthop attribute is present if there is any nlri data.\n    - Stopped [bgpd(8)](https://man.openbsd.org/bgpd.8) failing hard on version mismatch; ignore extra end-of-params messages.\n    - Improved [bgpd(8)](https://man.openbsd.org/bgpd.8) handling of unknown extended communities.\n    - Increased the [bgpd(8)](https://man.openbsd.org/bgpd.8) MRT attribute buffer to MAX\\_EXT\\_PKTSIZE so it works in all cases.\n    - Fixed use-after-free in [bgpd(8)](https://man.openbsd.org/bgpd.8) rib\\_remove and parse.y.\n    - Added [bgpd(8)](https://man.openbsd.org/bgpd.8) force\\_update flag to force pend\\_prefix\\_add() calls in adjout\\_prefix\\_update().\n    - Made [bgpd(8)](https://man.openbsd.org/bgpd.8) respect RTR min-version in downgrade path and properly closing the connection.\n    - Improved [bgpd(8)](https://man.openbsd.org/bgpd.8) add-path send parser. Error out if max is used with best.\n    - Adjusted handling of limits in [bgpd(8)](https://man.openbsd.org/bgpd.8) up\\_generate\\_addpath().\n    - Added extended message capability to checks for what the [bgpd(8)](https://man.openbsd.org/bgpd.8) peer has enabled.\n    - Made [bgpd(8)](https://man.openbsd.org/bgpd.8) return an error on unhandled imsg types in the adj-rib-out case.\n    - Fixed [bgpd(8)](https://man.openbsd.org/bgpd.8) port configuring on little endian systems.\n    - Extra size checks for [bgpd(8)](https://man.openbsd.org/bgpd.8) ibuf\\_set\\_maxsize().\n    - Introduce MAX\\_ADDPATH\\_COUNT (set to 100) and use this for the [bgpd(8)](https://man.openbsd.org/bgpd.8) add-path.\n    - In [bgpd(8)](https://man.openbsd.org/bgpd.8) merge\\_peers() also set local\\_bgpid for cloned peers, not only regular peers.\n    - Loop counters converted from uint8\\_t to u\\_int in [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - Reduce maximum configurable stale time to CAPA\\_GR\\_TIMEMASK (4095) in [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - In [bgpd(8)](https://man.openbsd.org/bgpd.8) session\\_graceful\\_restart() also arm the SessionDown timer.\n    - Made [bgpd(8)](https://man.openbsd.org/bgpd.8) check xp->rdesession to know if the RDE has the session running or not.\n    - Improved path\\_calc\\_hash() in [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - Fixed 'treat as withdraw' handling for invalid [bgpd(8)](https://man.openbsd.org/bgpd.8) ORIGIN attributes.\n    - Fixed two memory accounting issues in [bgpd(8)](https://man.openbsd.org/bgpd.8) chash.\n    - Additional checks on TLV encoding in [bgpd(8)](https://man.openbsd.org/bgpd.8).\n    - Limit all [bgpd(8)](https://man.openbsd.org/bgpd.8) ASPATH attributes to 750 elements.\n    - In [bgpd(8)](https://man.openbsd.org/bgpd.8), prevent overflow of the uint8\\_t length value in attr\\_optadd.\n    - Re-evaluate [bgpd(8)](https://man.openbsd.org/bgpd.8) prefixes if just PREFIX\\_FLAG\\_FILTERED changed.\n  - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8):\n    - Fixed [rpki-client(8)](https://man.openbsd.org/rpki-client.8) to avoid buffer overreads with OpenSSL 4.1.\n    - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8), reject non-conformant certificate subject encodings.\n    - Made [rpki-client(8)](https://man.openbsd.org/rpki-client.8) check alignment of certificate CRLDPs with the referring Manifest.\n    - Reworked [rpki-client(8)](https://man.openbsd.org/rpki-client.8) cms\\_parse\\_validate().\n    - Fixed handling of inherited resources in leaves by [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - Unified all signed object parser functions in [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - [rpki-client(8)](https://man.openbsd.org/rpki-client.8) now unconditionally warns about incorrect RSA parameters; rejects some malformed ROAs.\n    - Limit the range of deltas added to the [rpki-client(8)](https://man.openbsd.org/rpki-client.8) queue.\n    - Ensure consistent states in persistent [rpki-client(8)](https://man.openbsd.org/rpki-client.8) HTTP connections.\n    - Removed behaviour difference between [rpki-client(8)](https://man.openbsd.org/rpki-client.8) versions with and without gbr support.\n    - Fixed possible exit race in the [rpki-client(8)](https://man.openbsd.org/rpki-client.8) parser.\n    - Made [rpki-client(8)](https://man.openbsd.org/rpki-client.8) only record NCA history on successful runs.\n    - [rpki-client(8)](https://man.openbsd.org/rpki-client.8) will now only output config files on successful run.\n    - Batch [rpki-client(8)](https://man.openbsd.org/rpki-client.8) retries of non-functional CAs based on their rsync base URI.\n    - Properly apply constraints to [rpki-client(8)](https://man.openbsd.org/rpki-client.8) BGPsec Router certs.\n    - Deduplicated [rpki-client(8)](https://man.openbsd.org/rpki-client.8) skiplist, shortlist, and NCA retry handling.\n    - Removed incorrect free in [rpki-client(8)](https://man.openbsd.org/rpki-client.8) nca\\_hist\\_load().\n    - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8) cert\\_ca\\_sia(), use the correct notify string in error message.\n    - Removed double fclose in a success path in [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - Added a coinflip to increase cycle-to-cycle jitter in [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8), added a backoff retry mechanism for non-functional CAs.\n    - [rpki-client(8)](https://man.openbsd.org/rpki-client.8) now rejects certs with duplicate extension OIDs.\n    - Clear last\\_modified after each response on a persistent HTTP [rpki-client(8)](https://man.openbsd.org/rpki-client.8) connection.\n    - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8), switch subordinates in CCR manifests to a simple queue.\n    - Made [rpki-client(8)](https://man.openbsd.org/rpki-client.8) exclude hidden files and directories when synchronising via rsync.\n    - In [rpki-client(8)](https://man.openbsd.org/rpki-client.8), limited the length of filenames in some ASN.1 fields to 255.\n    - Fixed incomplete strncmp() check in [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - Fix off-by-one in [rpki-client(8)](https://man.openbsd.org/rpki-client.8) ip\\_addr\\_check\\_overlap().\n    - Fixed shortlist and skiplist checks in [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n    - Added more error checks and safeguards to [rpki-client(8)](https://man.openbsd.org/rpki-client.8).\n- [tmux(1)](https://man.openbsd.org/tmux.1) improvements and bug fixes:\n  - Keep the scroll position in tree mode when the list is rebuilt (issue 5631).\n  - Do not leak waiting clients (in wait-for) if they are killed (issue 5614).\n  - Do not cancel mark when a click is on the border.\n  - Added support for borderless menus, like panes.\n  - Added utf8 terminal-features.\n  - Ignore focus events earlier to avoid them interfering with prefix.\n  - Added -K flag to new-pane to make a modal pane capture all keys.\n  - Always unzoom before splitting windows, including for floating panes.\n  - Added 'T' to change pane title.\n  - Added refresh-now command.\n  - Ignore Ms if it is invalid (eg no %p1), report in client mode.\n  - Fixed crash when synchronising groups and there is no current window.\n  - Added pane\\_private\\_modes format with list of DEC private modes.\n  - Prevented core dumps upon startup on landisk.\n  - Added modal panes, created currently with new-pane -O.\n  - Major rework of prompts.\n  - Fixed cursor calculation when the status line is at the top.\n  - Added -H flag to capture-pane to show hyperlinks.\n  - Added -L to show line numbers with capture-pane and -F to show line flags.\n  - Clear entire lines when removing from history or freeing.\n  - Redraw entire session when making a new pane.\n  - Added -g flag to kill-session to kill all sessions in a group.\n  - Fixed crash when freeing layout cell.\n  - Added missing argument to %unlinked-window-renamed.\n  - Increase escape delay if the buffer contains a partial paste end.\n  - Fixed crash caused by including unattached clients on sorted list.\n  - Added new-pane command.\n  - Fixed infinite loop due to underflow when redrawing scrollbar.\n  - Fixed control mode teardown ordering for queued pane output.\n  - Added Emacs-style re-centre-top-bottom.\n  - Added time limits to some loops.\n  - Added missing flags to screen\\_mode\\_to\\_string.\n- LibreSSL version 4.4.0:\n  - Portable changes:\n    - Numerous compatibility layer fixes for AIX, FreeBSD, macOS, MinGW, NetBSD, and especially Windows.\n    - Fixed incorrect code generation by the MSVC ARM64 optimizer in\n      constant-time bignum code.\n    - Improved assembly support on many platforms.\n    - Fixed [openssl(1)](https://man.openbsd.org/openssl.1),\n      [nc(1)](https://man.openbsd.org/nc.1), and\n      [ocspcheck(8)](https://man.openbsd.org/ocspcheck.8)\n      silently running without\n      [pledge(2)](https://man.openbsd.org/pledge.2) and\n      [unveil(2)](https://man.openbsd.org/unveil.2)\n      on hosts that provide them.\n  - Internal improvements:\n    - Minor code cleanup for PKCS#7.\n    - Clear unused bits for the maximum of RFC 3779 IP address ranges.\n    - Cleanup passes over the DTLS code, avoiding many contortions.\n    - Zero out the failure\\_key in ML-KEM code.\n    - Improve portability in preprocessor based SHA assembly.\n    - Removed a few vestigial #ifdefs from public and internal headers.\n    - Introduce and use dtls12\\_handshake\\_msg framework.\n    - Rename union from \\_ to u in the ui code. Avoids Windows CE #ifdef.\n    - Clean up and simplify signature algorithm handling after removal\n      of TLSv1.0 and TLSv1.1.\n    - Add a point at infinity check to ecdh\\_compute\\_key().\n    - Fix incorrect purpose check in unreachable non-legacy path of the\n      modern X.509 verifier.\n    - Improve TLSv1.3 server handling of no shared groups.\n    - Correct secondary key share handling for HelloRetryRequests.\n    - Fix EXFLAG\\_CRITICAL mishandling in the crl\\_cb().\n    - Among CRLs with the same score prefer the one with the most recent\n      thisUpdate to match BoringSSL and OpenSSL behavior.\n    - Clean up sequence number and message header handling in DTLS.\n    - Remove redundant BIO\\_write() length assertions in b64\\_write().\n    - Report invalid base64 BIO state as an internal error rather than\n      asserting.\n    - Improve SHA-3 performance by using an unrolled and interleaved\n      algorithm.\n    - Allocate TLSv1.3 receive buffers lazily.\n    - Simplify handling of remaining record content on switch to the\n      legacy stack.\n    - Avoid harmless narrowing of the return value in dtls1\\_ctrl().\n    - Remove NID\\_md5\\_sha1 support from tls1\\_PRF().\n    - Remove DTLS unprocessed records queue.\n    - Remove DTLS application data queue.\n    - Remove SSL3\\_FLAGS\\_NO\\_RENEGOTIATE\\_CIPHERS which was never set.\n  - Compatibility changes:\n    - The misnamed tls\\_peer\\_cert\\_chain\\_pem() has been deprecated and may\n      be removed in a future release. tls\\_peer\\_cert\\_chain\\_verified\\_pem()\n      and tls\\_peer\\_cert\\_bundle\\_unverified\\_pem() should be used instead.\n    - Use X25519MLKEM768 as the preferred group for TLSv1.3 connections\n      in libtls.\n    - Ensure libtls keeps working with future OpenSSL releases that will\n      stop NUL-terminating ASN.1 strings. This is an old bug in libtls\n      that will bite, probably starting with OpenSSL 4.2.\n    - CRYPTO\\_cleanup\\_all\\_ex\\_data() is now a no-op. It was not thread\n      safe and the actual cleanup is now done by [OPENSSL\\_cleanup(3)](https://man.openbsd.org/OPENSSL_cleanup.3).\n    - Align [X509\\_check\\_ca(3)](https://man.openbsd.org/X509_check_ca.3) with modern OpenSSL. While it has long been\n      documented that it only works after calling\n      [X509\\_check\\_purpose(3)](https://man.openbsd.org/X509_check_purpose.3),\n      it still makes sense to \"fail closed\", i.e., indicate a non-CA.\n    - Added OIDs for CCR, ErikIndex, ErikPartition, ErikSegmentIndex,\n      and communityDefinition.\n  - Bug fixes:\n    - Fix [PKCS7\\_set\\_{un,}signed\\_attributes(3)](https://man.openbsd.org/PKCS7_set_signed_attributes.3) to allow caller to free\n      on failure rather than risking a double free.\n    - Initialize decode\\_error and invalid\\_key variables in TLS key share\n      code to avoid branching on uninitialized memory.\n    - Record extension length between type and data in the ClientHello\n      hash to ensure identical framing in first and second CH.\n    - Fix out of bound writes in the s\\_client XMSS mode.\n    - Ensure [EC\\_GROUP\\_check(3)](https://man.openbsd.org/EC_GROUP_check.3) and\n      [X509\\_CRL\\_verify(3)](https://man.openbsd.org/X509_CRL_verify.3) failures result in \"app\"\n      failures in [openssl(1)](https://man.openbsd.org/openssl.1)\n      ecparam and openssl crl.\n    - Do not fail accept on reverse DNS lookup failures in s\\_socket.\n    - Ensure [X509V3\\_EXT\\_print(3)](https://man.openbsd.org/X509V3_EXT_print.3) only returns 0 and 1.\n    - Avoid calling memcmp() on NULL in IPAddressFamily\\_cmp().\n    - In libtls disallow wildcard matching of a TLD specified as a FQDN.\n    - Unbreak some aspects of TLSv1.2 with custom curve lists.\n    - Ensure a peer-provided EC public key uses uncompressed encoding.\n    - Send decode\\_error alert on failure to decode an EC peer pubkey.\n    - Avoid NULL dereference and out-of-bounds read in password-based\n      CMS decryption.\n    - Add some missing bounds check to ASN1\\_mbstrinc\\_copy().\n    - Avoid freeing a caller-owned buffer in\n      [PKCS7\\_verify(3)](https://man.openbsd.org/PKCS7_verify.3).\n    - Remove SSL\\_OP\\_LEGACY\\_SERVER\\_CONNECT from default options.\n    - Send illegal parameter alerts for various HelloRetryRequest\n      violations.\n    - Check that the server selected ciphersuite is valid for use with\n      TLSv1.2.\n    - Unlock CRYPTO\\_LOCK\\_UI on ui\\_open\\_session() failure to avoid\n      a deadlock.\n    - Check [HMAC(3)](https://man.openbsd.org/HMAC.3)\n      return value to avoid later use of uninitialized\n      in [openssl(1)](https://man.openbsd.org/openssl.1).\n    - Use correct alert for key\\_share without supported\\_groups.\n    - Don't drop X509\\_V\\_ERR\\_HOSTNAME\\_MISMATCH when verify callback\n      returns 1. It has long been documented that this is ill advised\n      but some applications still do it.\n    - Ensure the server selects an ALPN protocol that we advertised or\n      abort the handshake with illegal\\_parameter.\n    - Fix streaming of PKCS#7 objects with omitted content.\n    - Avoid OOB access due to type confusion in PKCS7\\_stream().\n    - Plug leak and various other bugs in asn1\\_multi(), a helper to\n      handle sequences and sets in config parsing.\n    - Fix RFC 3779 inheritance checks for leaves as far as possible\n      without breaking the RPKI. Still allow the immediate issuer to\n      omit one of the extensions because otherwise about one third of\n      RFC 9286 Manifests would become invalid.\n    - Correct a botched size check in dtls1\\_process\\_fragment().\n    - Avoid confusing delta CRLs as full CRLs.\n    - When copying an RSA-PSS EVP\\_PKEY\\_CTX, ensure saltlen and minimal\n      saltlen restrictions are copied rather than using the defaults.\n    - Allow DTLS clients to receive unexpected Finished messages.\n    - Cache the leaf's extensions before adding it to a validated\n      chain to make name constraints check work more reliably.\n    - Ensure the whole subject is searched for email addresses and\n      common names.\n    - Check for embedded NULs in emails and subjectAltname in the\n      essentially unused legacy NAME\\_CONSTRAINTS\\_\\*() API.\n    - Remove support for nameRelativeToCRLIssuer in the CRL Distribution\n      Point extension. Per RFC 5280 it SHOULD not be used by conforming\n      CAs and it was eating memory for breakfast pre-signature.\n  - Security and reliability fixes:\n    - Fix parsing issues in X.509 name constraints URI host parsing.\n      Handle IPv6 literals correctly and don't allow specially crafted\n      userinfo to bypass host checks.\n    - Limit size of buffered DTLS handshake messages to avoid overly\n      large memory consumption on small handshake message fragments.\n    - Fix an OCSP responder authorization bypass for clients using\n      tls\\_config\\_ocsp\\_require\\_stapling(), of which only OpenBSD\n      [nc(1)](https://man.openbsd.org/nc.1) and\n      [ftp(1)](https://man.openbsd.org/ftp.1)\n      are known when they're used with the \"muststaple\" key word.\n  - Testing and proactive security:\n    - Improved test coverage for DTLS and TLS renegotiation.\n    - Add X.509 CRL regress from pre-Apache2-licensed BoringSSL.\n    - Rework the testing framework to be memory based rather than\n      file based. Match Go's output format more closely.\n- OpenSSH 10.6:\n  - Security fixes:\n    - Disabled [ssh(1)](https://man.openbsd.org/ssh.1) LZ77 dictionary coder to avoid a potential side-channel leak.\n    - Fixed ChannelTimeout and RekeyLimit not being applied in [sshd\\_config(5)](https://man.openbsd.org/sshd_config.5).\n    - Made [ssh(1)](https://man.openbsd.org/ssh.1) authorized\\_keys \"restrict\" keyword apply correctly to tunnel forwarding.\n  - Potentially incompatible changes:\n    - Use IANA allocated codepoint for ssh-mldsa44-ed25519 instead of '@openssh.com'.\n    - Made [sshd\\_config(5)](https://man.openbsd.org/sshd_config.5) DisableForwarding=yes override PermitTunnel=yes.\n    - Enforce a maximum size for usernames in [ssh-agent(1)](https://man.openbsd.org/ssh-agent.1) agent key use constraints.\n    - Disallow NUL byte in [scp(1)](https://man.openbsd.org/scp.1) '-O filename'.\n  - New features:\n    - New [ssh-add(1)](https://man.openbsd.org/ssh-add.1) option '-P' to skip PIN entry (bz3635).\n    - [ssh(1)](https://man.openbsd.org/ssh.1) signal handling with [readpassphrase(3)](https://man.openbsd.org/readpassphrase.3) fixed.\n    - Switched [ssh(1)](https://man.openbsd.org/ssh.1) from supercop ed25519 to libsodium.\n    - Extended [ssh(1)](https://man.openbsd.org/ssh.1) TCPKeepAlive to support forwardings (bz3921).\n    - Added [ssh-keygen(1)](https://man.openbsd.org/ssh-keygen.1) 'hexdump' to dump the key blob in hex format.\n    - Allow setting/clearing [ssh-keygen(1)](https://man.openbsd.org/ssh-keygen.1) touch-required/verify-required flags on FIDO private keys when resetting the passphrase.\n    - Added [ssh(1)](https://man.openbsd.org/ssh.1) '-Z user@host' mode that lists pubkeys that will be tried for authentication.\n    - Added experimental [ssh(1)](https://man.openbsd.org/ssh.1) support for composite post-quantum mldsa44-ed25519 signature scheme.\n    - Added an explicit-seed variant of the [ssh(1)](https://man.openbsd.org/ssh.1) keygen function.\n    - Added signature malleability and pubkey validity checks to [sshd(8)](https://man.openbsd.org/sshd.8) ed25519 verification.\n  - Bugfixes:\n    - Check [ssh(1)](https://man.openbsd.org/ssh.1) compressed payloads don't inflate beyond the maximum payload length.\n    - Avoid race between multiple [ssh(1)](https://man.openbsd.org/ssh.1) processes establishing multiplexing control socket.\n    - Plugged memory leak in [ssh-add(1)](https://man.openbsd.org/ssh-add.1) (CID 913600).\n    - Fix for [ssh(1)](https://man.openbsd.org/ssh.1) CIDs 913601 and 913602.\n    - Fix for [ssh(1)](https://man.openbsd.org/ssh.1) CID 913600.\n    - Converted [ssh(1)](https://man.openbsd.org/ssh.1) channel timeouts to allow fractional and subsecond timeouts.\n    - Made [ssh(1)](https://man.openbsd.org/ssh.1) masking signals correctly use sigaddset (bz3981).\n    - Fixed [ssh(1)](https://man.openbsd.org/ssh.1) memleaks (CID 913598 and 913599); added missing semicolon (CID 913599).\n    - Corrected Daylight Savings Time timestamp conversion by [ssh(1)](https://man.openbsd.org/ssh.1) (bz4004).\n    - Fixed [ssh(1)](https://man.openbsd.org/ssh.1) proxy socket breakage in t-multiplex after recent [pledge(2)](https://man.openbsd.org/pledge.2) changes.\n    - Reading server banner by [ssh-keyscan(1)](https://man.openbsd.org/ssh-keyscan.1) no longer blocks/freezes on a many-host keyscan.\n    - Allow session-bind@openssh.com requests when the [ssh(1)](https://man.openbsd.org/ssh.1) agent is locked.\n    - Avoid potential realloc use-after-free in the [ssh(1)](https://man.openbsd.org/ssh.1) client.\n    - Reordering of certificates tried during [ssh(1)](https://man.openbsd.org/ssh.1) pubkey authentication.\n    - Fixed [ssh(1)](https://man.openbsd.org/ssh.1) ML-KEM/ECDH interop problem.\n    - Removed some key [ssh(1)](https://man.openbsd.org/ssh.1) parsing and verification paths from the pre-auth attack surface.\n    - Avoid download to server-controlled path when performing [ssh(1)](https://man.openbsd.org/ssh.1) download via commandline.\n    - Avoid possible NULL deref in [ssh(1)](https://man.openbsd.org/ssh.1); sanitise filenames received via remote glob.\n    - Large refactoring of [sshd(8)](https://man.openbsd.org/sshd.8) config management code.\n    - Made [sshd(8)](https://man.openbsd.org/sshd.8) force domain name received from the system resolver to lowercase.\n    - Fixed two one-byte out-of-cound reads in [sshd(8)](https://man.openbsd.org/sshd.8).\n    - Stricter validation of transport state passed from the preauth to postauth [sshd(8)](https://man.openbsd.org/sshd.8) process.\n    - Fixed [ssh(1)](https://man.openbsd.org/ssh.1) client use-after-free on error path if cipher\\_init() fails.\n    - Added [ssh-agent(1)](https://man.openbsd.org/ssh-agent.1) -V to print version, use it to test the binary is functional after relinking.\n    - Stopped [ssh(1)](https://man.openbsd.org/ssh.1) validating bad cipher/mac lists arguments as valid.\n    - Fixed [ssh(1)](https://man.openbsd.org/ssh.1) NULL deref during pubkey auth.\n    - Dropbear recently added a -Q option; make [ssh(1)](https://man.openbsd.org/ssh.1) use it to query KEX if available.\n    - Classify [ssh(1)](https://man.openbsd.org/ssh.1) dynamic-tcpip channels as bulk, not interactive (bz3958).\n- Ports and packages:\n\n  Many pre-built packages for each architecture:\n\n  - aarch64: 12907\n  - amd64: 13060\n  - arm: XXX\n  - i386: 10659\n  - mips64: 9072\n  - powerpc: XXX\n  - powerpc64: 9564\n  - riscv64: 11116\n  - sparc64: 10621\n\n  Some highlights:\n\n  - Asterisk 20.21.0 and 22.11.0\n  - Audacity 3.7.9\n  - CMake 4.3.5\n  - Chromium 154.0.8037.92\n  - Emacs 31.1\n  - FFmpeg 9.0.2\n  - GCC 16.1.0\n  - GHC 9.10.3\n  - GNOME 49\n  - Go 1.27.1\n  - JDK 11.0.32, 17.0.20, 21.0.12 and 25.0.4\n  - KDE Gear 26.08.1\n  - KDE Frameworks 6.30.0\n  - KDE Plasma 6.7.5\n  - Krita 6.0.3\n  - LLVM/Clang 21.1.8 and 22.1.8\n  - LibreOffice 26.8.0.3\n  - Lua 5.1.5, 5.2.4, 5.3.6, 5.4.8 and 5.5.1\n  - MariaDB 12.3.3\n  - Mono 6.14.1\n  - Mozilla Firefox 157.0 and ESR 153.4.0\n  - Mozilla Thunderbird 153.4.0\n  - Mutt 2.4.2 and NeoMutt 20260616\n  - Node.js 24.21.0 and Deno 2.9.7\n  - OCaml 4.14.2\n  - OpenLDAP 2.6.15\n  - PHP 8.3.33, 8.4.26 and 8.5.11\n  - Postfix 3.5.28 and 3.11.7\n  - PostgreSQL 18.6\n  - Prism Launcher 11.1.0\n  - Python 2.7.18 and 3.14.7\n  - Qt 5.15.19 (+ kde patches) and 6.11.2\n  - R 4.6.1\n  - Ruby 3.3.12, 3.4.11 and 4.0.7\n  - Rust 1.98.1\n  - SQLite 3.53.2\n  - Shotcut 26.8.1\n  - Sudo 1.9.17p2\n  - Suricata 7.0.7\n  - Tcl/Tk 8.5.19, 8.6.18 and 9.0.4\n  - TeX Live 2026\n  - Vim 9.2.1125, Neovim 0.12.5 and Vim-Classic 2026091\n  - Wayland 1.26.0 with compositors CoW, Labwc, Mango, Niri, Sway and Wayfire\n  - Vulkan 1.4.357.0\n  - Xfce 4.20.0\n- As usual, steady improvements in manual pages and other documentation.\n- The system includes the following major components from outside suppliers:\n  - Xenocara (based on X.Org 7.7 with xserver 21.1.24 + patches,\n    freetype 2.14.3, fontconfig 2.17.1, Mesa 25.0.7, xterm 410,\n    xkeyboard-config 2.20, fonttosfnt 1.2.5 and more)\n  - LLVM/Clang 22.1.6 (+ patches)\n  - GCC 4.2.1 (+ patches) and 3.3.6 (+ patches)\n  - Perl 5.42.3 (+ patches)\n  - pkgconf 3.0.7\n  - NSD 4.15.2\n  - Unbound 1.26.1\n  - Ncurses 6.4\n  - Binutils 2.17 (+ patches)\n  - GDB 6.3 (+ patches)\n  - Awk 20250116\n  - Expat 2.8.4\n  - zlib 1.3.2 (+ patches)\n\n*The full release page also covers per-platform installation, upgrading, source code and the ports tree: <https://www.openbsd.org/80.html>*\n","body_html":"<h1 id=\"openbsd-8-0\">OpenBSD 8.0</h1>\n<p>Released October 20, 2026. (61st OpenBSD release)</p>\n<p>Copyright 1997-2026, Theo de Raadt.</p>\n<p>8.0 Song: &quot;<a href=\"https://www.openbsd.org/lyrics.html#80\" rel=\"nofollow ugc noopener\">The Simps on AI</a>&quot;</p>\n<ul><li>See the information on <a href=\"https://www.openbsd.org/ftp.html\" rel=\"nofollow ugc noopener\">the FTP page</a> for a list of mirror machines.</li><li>Go to the <code>pub/OpenBSD/8.0/</code> directory on one of the mirror sites.</li><li>Have a look at <a href=\"https://www.openbsd.org/errata80.html\" rel=\"nofollow ugc noopener\">the 8.0 errata page</a> for a list of bugs and workarounds.</li><li>See a <a href=\"https://www.openbsd.org/plus80.html\" rel=\"nofollow ugc noopener\">detailed log of changes</a> between the 7.9 and 8.0 releases.</li></ul>\n<h2 id=\"what-s-new\">What&#39;s New</h2>\n<p>This is a partial list of new features and systems included in OpenBSD 8.0.\nFor a comprehensive list, see the <a href=\"https://www.openbsd.org/plus80.html\" rel=\"nofollow ugc noopener\">changelog</a> leading to 8.0.</p>\n<ul><li>Platforms specific improvements:<ul><li><a href=\"https://www.openbsd.org/amd64.html\" rel=\"nofollow ugc noopener\">amd64</a>:<ul><li>Raised the size of amd64 kernel virtual address space from 4G to 512G.</li><li><a href=\"https://man.openbsd.org/pmap.9\" rel=\"nofollow ugc noopener\">pmap(9)</a> direct map now placed at a random location.</li><li>Sped up swap encryption by using AES cpu instructions.</li></ul></li><li><a href=\"https://www.openbsd.org/arm64.html\" rel=\"nofollow ugc noopener\">arm64</a>:<ul><li>Added hibernate support.</li><li>Sped up swap encryption by using AES cpu instructions.</li><li>Implemented bounce buffers.</li></ul></li><li><a href=\"https://www.openbsd.org/luna88k.html\" rel=\"nofollow ugc noopener\">luna88k</a>:<ul><li>Fixed m88k multiple CMMU register writes.</li><li>Extended m88k kernel-mode CMMU fault handling to handle write protection faults.</li><li>Ensure luna88k m8820x_initialize_cpu() initializes logical CPU #0 on non-MP kernels.</li><li>Faster CMMU walk in luna88k m8820x_cpu_number().</li></ul></li><li><a href=\"https://www.openbsd.org/riscv64.html\" rel=\"nofollow ugc noopener\">riscv64</a>:<ul><li>Detect CPU extensions and advertise those usable by userland through elf_aux_info(3) AT_HWCAP and AT_HWCAP2 queries.</li><li>Added kernel support for the &#39;V&#39; vector extension.</li><li>Implemented bounce buffers.</li><li>Added support for RISC-V Advanced Interrupt Architecture; added <a href=\"https://man.openbsd.org/imsic.4\" rel=\"nofollow ugc noopener\">imsic(4)</a> and <a href=\"https://man.openbsd.org/aplic.4\" rel=\"nofollow ugc noopener\">aplic(4)</a> drivers.</li><li>Added kernel support for the Sstc timer extension.</li></ul></li><li><a href=\"https://www.openbsd.org/sparc64.html\" rel=\"nofollow ugc noopener\">sparc64</a>:<ul><li>Added bounds check for the sparc64 relocation flags table.</li><li>Switched sparc64 to LLVM toolchain.</li><li>Improved memory alignment on SPARCV9.</li></ul></li><li>Other <a href=\"https://www.openbsd.org/plat.html\" rel=\"nofollow ugc noopener\">architectures</a>:<ul><li>Retired support for loongson architecture (not working with Clang 22).</li><li>Various RISC-V and MIPS bugfixes for LLVM.</li><li>Fixed encoding of hppa protection bits.</li></ul></li><li>More platform specific changes can be found in the <a href=\"#hardware_support\">hardware support</a> section below.</li></ul></li><li>Various kernel improvements:<ul><li>Fixed memory size calculation in <a href=\"https://man.openbsd.org/open_wmemstream.3\" rel=\"nofollow ugc noopener\">open_wmemstream(3)</a>.</li><li>Fixed <a href=\"https://man.openbsd.org/semop.2\" rel=\"nofollow ugc noopener\">semop(2)</a> semaphore id being destroyed/replaced during context switch.</li><li>Improved inactive page queue heuristics for pagedaemon swapping pages/freeing memory.</li><li>Added <a href=\"https://man.openbsd.org/getexecpath.3\" rel=\"nofollow ugc noopener\">getexecpath(3)</a> to provide copy of the <a href=\"https://man.openbsd.org/elf.5\" rel=\"nofollow ugc noopener\">elf(5)</a> program&#39;s execution path.</li><li>More preparations for larger disklabel.</li></ul></li><li>Suspend/Hibernate Support:<ul><li>Enabled suspend/resume for <a href=\"https://man.openbsd.org/qwz.4\" rel=\"nofollow ugc noopener\">qwz(4)</a>.</li><li>Made <a href=\"https://man.openbsd.org/ufshci.4\" rel=\"nofollow ugc noopener\">ufshci(4)</a> survive a suspend on the Samsung Galaxy Book4 Edge and HONOR MagicBook Art 14 Snapdragon.</li><li>Stopped waking a suspended laptop when lid is closed and machdep.lidaction=0.</li><li>Added a global sleep mode variable to distinguish hibernate from &#39;normal&#39; suspend.</li><li>Added suspend/resume support for <a href=\"https://man.openbsd.org/qcuart.4\" rel=\"nofollow ugc noopener\">qcuart(4)</a>.</li><li>Added support for wakeup interrupts to <a href=\"https://man.openbsd.org/bytgpio.4\" rel=\"nofollow ugc noopener\">bytgpio(4)</a>, fixes IdeaPad resuming from suspend.</li><li>Validate size of chunks copied to piglet during hibernate unpacking of disk image.</li><li>Validate on-disk image sizes against integer overflow when reading chunks in unhibernate.</li><li>Prevent disk image overreads when reading the chunktable in unhibernate.</li><li>Clean up the framebuffer after unhibernate.</li><li>Made failure to allocate a dedicated queue for <a href=\"https://man.openbsd.org/nvme.4\" rel=\"nofollow ugc noopener\">nvme(4)</a> hibernate support non-fatal.</li></ul></li><li>Direct Rendering Manager and graphics drivers:<ul><li><p>Updated <a href=\"https://man.openbsd.org/drm.4\" rel=\"nofollow ugc noopener\">drm(4)</a> to</p><p>Linux 6.18.53.</p></li><li><p>Support for Intel Arc A-Series (DG2/Alchemist) graphics cards</p><p>in <a href=\"https://man.openbsd.org/inteldrm.4\" rel=\"nofollow ugc noopener\">inteldrm(4)</a>.</p></li><li><p>Increased kernel virtual address space on amd64 allows mapping</p><p>more than 4GB of VRAM.</p></li><li><p>Workaround</p><p><a href=\"https://man.openbsd.org/inteldrm.4\" rel=\"nofollow ugc noopener\">inteldrm(4)</a>\nGuC timeout errors seen on some Alder Lake systems.</p></li></ul></li><li>VMM/VMD improvements:<ul><li>Added MP support for up to 64 VCPUs per guest VM.</li><li>Redesigned to use files to manage VM ownership.</li><li>Added x2apic mode support for guest virtual machines.</li><li>Fix for when <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a> does not detect kernel on startup.</li><li>Provide faulting GPA to <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a> for MMIO exits from <a href=\"https://man.openbsd.org/vmm.4\" rel=\"nofollow ugc noopener\">vmm(4)</a>.</li><li>Refactored <a href=\"https://man.openbsd.org/vmm.4\" rel=\"nofollow ugc noopener\">vmm(4)</a> exit handling and correct RIP adjustment.</li><li>Added support for variable length instructions in VMX paths to <a href=\"https://man.openbsd.org/vmm.4\" rel=\"nofollow ugc noopener\">vmm(4)</a>.</li><li>Prevent OOB reads by <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a> in 32 and 64-bit <a href=\"https://man.openbsd.org/elf.5\" rel=\"nofollow ugc noopener\">elf(5)</a> loaders with malformed <a href=\"https://man.openbsd.org/elf.5\" rel=\"nofollow ugc noopener\">elf(5)</a> files.</li><li>Implemented missing lapic/ioapic modes to fix <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a> support for 32-bit linux guests.</li><li>Added checksum offload for <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a> guests.</li><li>MSI/MSI-X virtio device interrupt support added.</li><li>Support actually split split-virtqueues in <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a>.</li><li>Added i82093aa ioapic and i82489dx-compatible lapic emulation to <a href=\"https://man.openbsd.org/vmd.8\" rel=\"nofollow ugc noopener\">vmd(8)</a>.</li><li>Improved qcow handling.</li></ul></li><li>Various new userland features:<ul><li><a href=\"https://man.openbsd.org/netstat.1\" rel=\"nofollow ugc noopener\">netstat(1)</a> can now print interface multicast counter; made &#39;-q&#39; more specific.</li><li>Adjusted <a href=\"https://man.openbsd.org/ddb.4\" rel=\"nofollow ugc noopener\">ddb(4)</a> default &#39;ps&#39; output, print &#39;struct process&#39; and &#39;struct proc&#39; separately.</li><li>Made <a href=\"https://man.openbsd.org/mount.8\" rel=\"nofollow ugc noopener\">mount(8)</a> support DUIDs with -u; preserve DUID when updating file system.</li><li>Implemented control of midithru ports with <a href=\"https://man.openbsd.org/sndioctl.1\" rel=\"nofollow ugc noopener\">sndioctl(1)</a>.</li><li>Allow list elements to be added or removed by <a href=\"https://man.openbsd.org/sndioctl.1\" rel=\"nofollow ugc noopener\">sndioctl(1)</a>.</li><li>Added the <a href=\"https://man.openbsd.org/sndiod.8\" rel=\"nofollow ugc noopener\">sndiod(8)</a> server.mode control making the setting dynamic, changeable via <a href=\"https://man.openbsd.org/sndioctl.1\" rel=\"nofollow ugc noopener\">sndioctl(1)</a>.</li></ul></li><li>More bugfixes and tweaks in userland:<ul><li>Ensure <a href=\"https://man.openbsd.org/elf.5\" rel=\"nofollow ugc noopener\">elf(5)</a> header and program header fit into the shared library when loading.</li><li>Fixed leak of key memory in <a href=\"https://man.openbsd.org/getpwent.3\" rel=\"nofollow ugc noopener\">getpwent(3)</a> yp_next().</li><li>In <a href=\"https://man.openbsd.org/patch.1\" rel=\"nofollow ugc noopener\">patch(1)</a>, solved an infinite loop on malformed <a href=\"https://man.openbsd.org/ed.1\" rel=\"nofollow ugc noopener\">ed(1)</a> script input.</li><li>Use <a href=\"https://man.openbsd.org/execv.3\" rel=\"nofollow ugc noopener\">execv(3)</a> absolute-path in <a href=\"https://man.openbsd.org/authpf.8\" rel=\"nofollow ugc noopener\">authpf(8)</a>, <a href=\"https://man.openbsd.org/pflogd.8\" rel=\"nofollow ugc noopener\">pflogd(8)</a>, <a href=\"https://man.openbsd.org/ldapd.8\" rel=\"nofollow ugc noopener\">ldapd(8)</a>, <a href=\"https://man.openbsd.org/ldpd.8\" rel=\"nofollow ugc noopener\">ldpd(8)</a>, <a href=\"https://man.openbsd.org/lpd.8\" rel=\"nofollow ugc noopener\">lpd(8)</a>, <a href=\"https://man.openbsd.org/radiusd.8\" rel=\"nofollow ugc noopener\">radiusd(8)</a>, <a href=\"https://man.openbsd.org/snmpd.8\" rel=\"nofollow ugc noopener\">snmpd(8)</a>.</li><li><a href=\"https://man.openbsd.org/uaudio.4\" rel=\"nofollow ugc noopener\">uaudio(4)</a> now tests the reported format and channels are usable.</li><li>Stopped <a href=\"https://man.openbsd.org/sndiod.8\" rel=\"nofollow ugc noopener\">sndiod(8)</a> aborting if a MIDI endpoint connects with non-empty buffers.</li><li>Fixed two missing checks of file_new() return value in <a href=\"https://man.openbsd.org/sndiod.8\" rel=\"nofollow ugc noopener\">sndiod(8)</a>.</li><li>Fixed <a href=\"https://man.openbsd.org/npppd.8\" rel=\"nofollow ugc noopener\">npppd(8)</a> LCP MRU option handing.</li><li>Adjust <a href=\"https://man.openbsd.org/pstat.8\" rel=\"nofollow ugc noopener\">pstat(8)</a> to return the pid of the session leader process; allow &#39;-t -M&#39; to work.</li><li>Made <a href=\"https://man.openbsd.org/eigrpd.8\" rel=\"nofollow ugc noopener\">eigrpd(8)</a> validate the prefixlen to avoid overflow.</li><li>Made <a href=\"https://man.openbsd.org/sndiod.8\" rel=\"nofollow ugc noopener\">sndiod(8)</a> allocate all midithru structures on the heap.</li></ul></li><li>Improved hardware support and driver bugfixes, including:<ul><li>Enabled the GXTP7936 touchscreen on the Samsung Galaxy Book4 Edge.</li><li>Added support for the riscv64 K3 PCIe/USB3 combo PHY.</li><li>Enabled <a href=\"https://man.openbsd.org/gpioleds.4\" rel=\"nofollow ugc noopener\">gpioleds(4)</a> on riscv64.</li><li>In <a href=\"https://man.openbsd.org/smte.4\" rel=\"nofollow ugc noopener\">smte(4)</a> (SpacemiT K1 Ethernet device), improved error checking of received packets.</li><li>Fixed regular MSI interrupts on the SpacemiT K1 SoC.</li><li>Added support for the SpacemiT K3 SoC to <a href=\"https://man.openbsd.org/smtclock.4\" rel=\"nofollow ugc noopener\">smtclock(4)</a>.</li><li>Added SC7280 support to <a href=\"https://man.openbsd.org/qcgpio.4\" rel=\"nofollow ugc noopener\">qcgpio(4)</a>.</li><li>Added support for the SpacemiT K3 <a href=\"https://man.openbsd.org/dwpcie.4\" rel=\"nofollow ugc noopener\">dwpcie(4)</a> PCIe controller.</li><li>Added RK3528 I2C5 clock, used in the Radxa E24C.</li><li>Added ACPI hardware IDS for Qualcomm Glymur (X2) SoC.</li><li>Implemented page table mirroring in <a href=\"https://man.openbsd.org/apldart.4\" rel=\"nofollow ugc noopener\">apldart(4)</a>; enable IOMMU for Apple USB controllers.</li><li><p>New <a href=\"https://man.openbsd.org/samsabi.4\" rel=\"nofollow ugc noopener\">samsabi(4)</a> driver for</p><p>the Samsung Advanced BIOS Interface (SABI).</p></li><li><p>New <a href=\"https://man.openbsd.org/sambat.4\" rel=\"nofollow ugc noopener\">sambat(4)</a> driver for</p><p>Samsung laptop battery monitor.</p></li><li><p>New <a href=\"https://man.openbsd.org/rkotp.4\" rel=\"nofollow ugc noopener\">rkotp(4)</a> driver for</p><p>Rockchip OTP memory.</p></li><li>Added support for the RK8600 regulator used for CPU voltage on Radxa Zero 3 boards.</li><li>Added more AMD &quot;Krackan Point&quot; device ids.</li><li>Fixed HONOR MagicBook Touchpad multitouch support.</li><li>Fixed <a href=\"https://man.openbsd.org/esp.4\" rel=\"nofollow ugc noopener\">esp(4)</a> FIFO memory overflow.</li><li>Fixed potential memory leak in <a href=\"https://man.openbsd.org/softraid.4\" rel=\"nofollow ugc noopener\">softraid(4)</a> rebuild.</li><li>Fixed <a href=\"https://man.openbsd.org/softraid.4\" rel=\"nofollow ugc noopener\">softraid(4)</a> rebuild on disks with 4096-byte sectors.</li><li>Fixed high memory mbufs for 64-bit DMA capable <a href=\"https://man.openbsd.org/re.4\" rel=\"nofollow ugc noopener\">re(4)</a>.</li></ul></li><li>New or improved network hardware support:<ul><li><p>Added support for Panther Lake and Wildcat Lake Ethernet devices to</p><p><a href=\"https://man.openbsd.org/em.4\" rel=\"nofollow ugc noopener\">em(4)</a>.</p></li><li>Added support for Intel E610 Ethernet devices to the <a href=\"https://man.openbsd.org/ix.4\" rel=\"nofollow ugc noopener\">ix(4)</a> driver.</li></ul></li><li>Added or improved wireless network drivers:<ul><li>Properly handle potential case of empty packets returned from <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> hardware.</li><li>Added missing DMA syncs for <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> SRNG DMA descriptor memory.</li><li>Properly handle <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> VIF DMA map allocation failures at attach time.</li><li>Fixed use of stale pointers on the <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> vif list which caused crashes.</li><li>Properly reset <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> driver and device state if it fails to get RUNNING in qwx_init().</li><li>Avoid race condition in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> device during power-on.</li><li>Use the ioctl rwlock correctly in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> qwx_activate().</li><li>Ensure <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> rx_ring-&gt;bufs_max and freemap are always initialised correctly.</li><li>Stopped <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> init task waiting for the ioctl lock to become available.</li><li>Made <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> properly errors which occur in qwx_qmi_fw_init_done().</li><li>Fixed roaming between APs with <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a>.</li><li>Always allow data frame interrupts in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> while the interface is UP.</li><li>Added support for 40MHz channels to <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a>.</li><li>Made <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> only allocate a new mbuf when a free Rx ring slot is available.</li><li>Avoid calling bus_dmamap_create() from interrupt context in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a>.</li><li>Handle country code events sent by <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> firmware to make association more reliable.</li><li>Reset <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> command ring &#39;queued&#39; counter when the command ring gets reset.</li><li>Ensure that <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> nq flags are always cleared when switching net80211 state.</li><li>Fixed number of tx/rx streams set in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> mac config.</li><li>Made <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> send the PMF good-bye deauth frame when hopping out of RUN state.</li><li>Ensure no new tasks get scheduled while IFF_RUNNING is in qwx_stop(). Prevents <a href=\"https://man.openbsd.org/qwz.4\" rel=\"nofollow ugc noopener\">qwz(4)</a> crash.</li><li>Make <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> prefer ic_bss over the ephemeral node in the scan tree.</li><li>Add peer to <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> firmware after starting the vdev, not before. Fixes a firmware crash.</li><li>Add 802.11n support to <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a>. Advertise HT capabilities and pass HT/QoS peer association.</li><li>Ask <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a> firmware to move into M3 state before resetting the device.</li><li>Avoid calling bus_dmamap_destroy() from interrupt context in <a href=\"https://man.openbsd.org/qwx.4\" rel=\"nofollow ugc noopener\">qwx(4)</a>.</li><li>Added 802.11n with 40MHz width to <a href=\"https://man.openbsd.org/qwz.4\" rel=\"nofollow ugc noopener\">qwz(4)</a>.</li><li>Let <a href=\"https://man.openbsd.org/qwz.4\" rel=\"nofollow ugc noopener\">qwz(4)</a> handle QoS in native WiFi frames.</li></ul></li><li>Installer, upgrade, bootloader, and pkg-tools improvements:<ul><li>Harmonise <a href=\"https://man.openbsd.org/installurl.5\" rel=\"nofollow ugc noopener\">installurl(5)</a> handling in <a href=\"https://man.openbsd.org/pkg_add.1\" rel=\"nofollow ugc noopener\">pkg_add(1)</a>, <a href=\"https://man.openbsd.org/sysupgrade.8\" rel=\"nofollow ugc noopener\">sysupgrade(8)</a>, and <a href=\"https://man.openbsd.org/syspatch.8\" rel=\"nofollow ugc noopener\">syspatch(8)</a>.</li><li>Fixed free space check by <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> for unqualified filenames.</li><li>Set limit on the size of files <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> can download.</li><li>Stricter validation in <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> to no longer treat untrusted comments as data.</li><li><a href=\"https://man.openbsd.org/pkg_add.1\" rel=\"nofollow ugc noopener\">pkg_add(1)</a> now detects and overcomes some endless loops with merge-sets.</li><li>Clean trailing slashes from <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> FWURL.</li><li>Removed current directory from default <a href=\"https://man.openbsd.org/pkg_add.1\" rel=\"nofollow ugc noopener\">pkg_add(1)</a> search path.</li><li>Improved downloading of firmware by filename in <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a>.</li><li>Improved <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> error when SHA256.sig is not found.</li><li><a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a> now checks signature of local SHA256.sig.</li><li>In <a href=\"https://man.openbsd.org/fw_update.8\" rel=\"nofollow ugc noopener\">fw_update(8)</a>, made <a href=\"https://man.openbsd.org/tar.1\" rel=\"nofollow ugc noopener\">tar(1)</a> skip files outside expected locations.</li><li>Stopped <a href=\"https://man.openbsd.org/syspatch.8\" rel=\"nofollow ugc noopener\">syspatch(8)</a> downloading entire tgz file when looking for a potential update.</li></ul></li><li>Security improvements:<ul><li>Fixed a <a href=\"https://man.openbsd.org/pledge.2\" rel=\"nofollow ugc noopener\">pledge(2)</a> in <a href=\"https://man.openbsd.org/vfs.9\" rel=\"nofollow ugc noopener\">vfs(9)</a>.</li><li>Fixed out-of-bounds access attempts on <a href=\"https://man.openbsd.org/aplmca.4\" rel=\"nofollow ugc noopener\">aplmca(4)</a> SOCs.</li><li>Stopped use of non-standard UID_MAX and GID_MAX in various utilities.</li><li>Improved <a href=\"https://man.openbsd.org/ipsec.4\" rel=\"nofollow ugc noopener\">ipsec(4)</a> AES GMAC crypto.</li><li>Made <a href=\"https://man.openbsd.org/iked.8\" rel=\"nofollow ugc noopener\">iked(8)</a> reject malformed and out-of-state IKEv2 messages.</li><li>Plugged memleak in x509_verify (CID 656293).</li><li>Avoid overflow in <a href=\"https://man.openbsd.org/sysctl.2\" rel=\"nofollow ugc noopener\">sysctl(2)</a> KERN_PROC_ARGS.</li><li>Prevent bogus or malicious iaddr data from crashing <a href=\"https://man.openbsd.org/dhcpd.8\" rel=\"nofollow ugc noopener\">dhcpd(8)</a>.</li><li>Avoid potential memory exhaustion via DHCPINFORM in <a href=\"https://man.openbsd.org/dhcpd.8\" rel=\"nofollow ugc noopener\">dhcpd(8)</a>.</li><li>Properly use saltlen and min_saltlen in libcrypto RSA-PSS.</li><li>Reject invalid delta CRLs in libcrypto x509.</li><li>Fixed RFC 3779 inheritance handling in libcrypto&#39;s path validation.</li><li>Use <a href=\"https://man.openbsd.org/execve.2\" rel=\"nofollow ugc noopener\">execve(2)</a> as $ORIGIN in <a href=\"https://man.openbsd.org/ld.so.1\" rel=\"nofollow ugc noopener\">ld.so(1)</a> (otherwise fallback to realpath).</li><li>Hardened <a href=\"https://man.openbsd.org/syspatch.8\" rel=\"nofollow ugc noopener\">syspatch(8)</a> against malicious scripts.</li><li>Restrict the characters that are allowed to pass through <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> environment and mda.</li><li>Fixed reading past the NUL by <a href=\"https://man.openbsd.org/pax.1\" rel=\"nofollow ugc noopener\">pax(1)</a>.</li><li>Stopped <a href=\"https://man.openbsd.org/pax.1\" rel=\"nofollow ugc noopener\">pax(1)</a> extracting malicious archives outside the working directory.</li><li>Added &#39;mcast&#39; to the <a href=\"https://man.openbsd.org/pledge.2\" rel=\"nofollow ugc noopener\">pledge(2)</a> for <a href=\"https://man.openbsd.org/lldpd.8\" rel=\"nofollow ugc noopener\">lldpd(8)</a>.</li><li>Tightened pledge_sockopt() level/optname checks for different types of sockets.</li><li>Extended the &#39;mcast&#39; <a href=\"https://man.openbsd.org/pledge.2\" rel=\"nofollow ugc noopener\">pledge(2)</a> to allow multicast tweaks on Ethernet frame sockets.</li><li>Updated libexpat to version 2.8.4 (CVE-2026-66046 CVE-2026-76641 CVE-2026-76957).</li><li>Avoid script pathname TOCTOU in exec when the vnode changes.</li><li>Made <a href=\"https://man.openbsd.org/execve.2\" rel=\"nofollow ugc noopener\">execve(2)</a> realpath processing more robust.</li><li>Switched luna88k to build kernel files with -fno-pie.</li><li>Unprivileged kernel memory read and write vulnerability removed from m88k 88100 data pipeline.</li><li><p><a href=\"https://man.openbsd.org/unveil.2\" rel=\"nofollow ugc noopener\">unveil(2)</a> now restricts</p><p><a href=\"https://man.openbsd.org/man.1\" rel=\"nofollow ugc noopener\">man(1)</a>,\n<a href=\"https://man.openbsd.org/makewhatis.8\" rel=\"nofollow ugc noopener\">makewhatis(8)</a>, and\n<a href=\"https://man.openbsd.org/man.cgi.8\" rel=\"nofollow ugc noopener\">man.cgi(8)</a>\nread and write access.</p></li><li><a href=\"https://man.openbsd.org/dhcpleased.8\" rel=\"nofollow ugc noopener\">dhcpleased(8)</a> now validates the IP address the dhcp server acks.</li><li>Fixed signed integer overflow in <a href=\"https://man.openbsd.org/perl.1\" rel=\"nofollow ugc noopener\">perl(1)</a> Storable (CVE-2026-57433).</li><li>Fixed integer overflow in <a href=\"https://man.openbsd.org/perl.1\" rel=\"nofollow ugc noopener\">perl(1)</a> pack and unpack (CVE-2026-57432).</li><li>Fixed <a href=\"https://man.openbsd.org/perl.1\" rel=\"nofollow ugc noopener\">perl(1)</a> incorrect regular expression matches (CVE-2026-13221).</li><li>Fixed memory leaks and race condition in <a href=\"https://man.openbsd.org/profil.2\" rel=\"nofollow ugc noopener\">profil(2)</a>.</li><li>Improved checking of <a href=\"https://man.openbsd.org/elf.3\" rel=\"nofollow ugc noopener\">elf(3)</a> notes; prevent out of bounds access.</li><li>Reject <a href=\"https://man.openbsd.org/elf.3\" rel=\"nofollow ugc noopener\">elf(3)</a> interpreters without loadable segments.</li><li>Disable <a href=\"https://man.openbsd.org/kbind.2\" rel=\"nofollow ugc noopener\">kbind(2)</a> and <a href=\"https://man.openbsd.org/pinsyscalls.2\" rel=\"nofollow ugc noopener\">pinsyscalls(2)</a> for static binaries inside exec_elf_makecmds().</li><li>Fixed <a href=\"https://man.openbsd.org/elf.5\" rel=\"nofollow ugc noopener\">elf(5)</a> structs to avoid leaking kernel stack contents.</li><li>LibXfont 2 fixes for CVE-2026-56001, CVE-2026-56002, and CVE-2026-56003.</li><li><a href=\"https://man.openbsd.org/Xserver.1\" rel=\"nofollow ugc noopener\">Xserver(1)</a> fixes for CVE-2026-55999 and CVE-2026-56000.</li><li>Updated <a href=\"https://man.openbsd.org/perl.1\" rel=\"nofollow ugc noopener\">perl(1)</a> Socket to 2.041 (contains fix for CVE-2026-12087, out-of-bounds heap read).</li><li>Fixed <a href=\"https://man.openbsd.org/iked.8\" rel=\"nofollow ugc noopener\">iked(8)</a> to <a href=\"https://man.openbsd.org/bzero.3\" rel=\"nofollow ugc noopener\">bzero(3)</a> the mask data structure, rather than using mask4.</li><li>Fixes for CVE-2026-12244, CVE-2026-12245, CVE-2026-12246 and CVE-2026-12490 in <a href=\"https://man.openbsd.org/nsd.8\" rel=\"nofollow ugc noopener\">nsd(8)</a>.</li><li>Stopped leaking transport in <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a> error paths of udp_encap_handle_message().</li><li>Enforce per-type ID payload size in <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a> ipsec_validate_id_information().</li><li>Avoid shift overflows in <a href=\"https://man.openbsd.org/memmem.3\" rel=\"nofollow ugc noopener\">memmem(3)</a> and <a href=\"https://man.openbsd.org/strstr.3\" rel=\"nofollow ugc noopener\">strstr(3)</a>.</li><li>Multiple additional bounds checks in <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a>.</li><li>Provide a separate executable file for <a href=\"https://man.openbsd.org/syslogd.8\" rel=\"nofollow ugc noopener\">syslogd(8)</a> parent, for privilege separation.</li><li>Made <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> clear userinfo before sending over imsg.</li><li>Made <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> reject oversized sockaddr payloads received over privsep IPC.</li><li>Zero the temporary <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> envelope parsing buffers before use to strengthen privsep.</li><li>Clear pending asynchronous lookups at teardown, for stronger <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> privsep.</li><li>Fixed potential information leak from an uninitialised <a href=\"https://man.openbsd.org/ktrace.1\" rel=\"nofollow ugc noopener\">ktrace(1)</a> stack variable.</li></ul></li><li>New features in the network stack:<ul><li>Set <a href=\"https://man.openbsd.org/ice.4\" rel=\"nofollow ugc noopener\">ice(4)</a> link state to full duplex.</li><li>Reduced maximum TSO segs in <a href=\"https://man.openbsd.org/ice.4\" rel=\"nofollow ugc noopener\">ice(4)</a>, to allow more interfaces to attach.</li><li>Enabled use of 128 DMA segments for TSO packets on <a href=\"https://man.openbsd.org/ice.4\" rel=\"nofollow ugc noopener\">ice(4)</a>.</li><li>Enabled 64-bit DMA for <a href=\"https://man.openbsd.org/bge.4\" rel=\"nofollow ugc noopener\">bge(4)</a> BCM5720.</li><li>Enabled jumbo frames in <a href=\"https://man.openbsd.org/ogx.4\" rel=\"nofollow ugc noopener\">ogx(4)</a>.</li></ul></li><li>Further changes and bugfixes in the network stack:<ul><li>Stopped <a href=\"https://man.openbsd.org/ipsec.4\" rel=\"nofollow ugc noopener\">ipsec(4)</a> overflowing the maximum packet size in the IP header.</li><li>Detect out of bound reads from an int overflow in the <a href=\"https://man.openbsd.org/bpf.4\" rel=\"nofollow ugc noopener\">bpf(4)</a> bpf_mem backends.</li><li>Moved <a href=\"https://man.openbsd.org/bpf.4\" rel=\"nofollow ugc noopener\">bpf(4)</a> for outgoing packets later in the transmit path.</li><li>Avoid leaking memory when mbuf chain allocations fail in <a href=\"https://man.openbsd.org/tun.4\" rel=\"nofollow ugc noopener\">tun(4)</a> tun_dev_write().</li><li>Fixed hardmtu and rxmax in <a href=\"https://man.openbsd.org/ixl.4\" rel=\"nofollow ugc noopener\">ixl(4)</a>.</li><li>Handle dynamic channel width changes correctly in <a href=\"https://man.openbsd.org/iwx.4\" rel=\"nofollow ugc noopener\">iwx(4)</a>.</li><li>Hardened <a href=\"https://man.openbsd.org/bpf.4\" rel=\"nofollow ugc noopener\">bpf(4)</a> bpf_filter; block unhandled instructions with bpf_validate.</li><li>Added proper program bound checks to the <a href=\"https://man.openbsd.org/bpf.4\" rel=\"nofollow ugc noopener\">bpf(4)</a> engine (libpcap CVE-2026-31912).</li><li>Fixed bpf filter calls in <a href=\"https://man.openbsd.org/ppp.4\" rel=\"nofollow ugc noopener\">ppp(4)</a>; use <a href=\"https://man.openbsd.org/bpf_mfilter.9\" rel=\"nofollow ugc noopener\">bpf_mfilter(9)</a>.</li><li>Improved imsg handling of LS_UPD, LS_FLOOD and LS_SNAP in <a href=\"https://man.openbsd.org/ospfd.8\" rel=\"nofollow ugc noopener\">ospfd(8)</a>.</li><li>Changed <a href=\"https://man.openbsd.org/ospfd.8\" rel=\"nofollow ugc noopener\">ospfd(8)</a> imsg handling.</li><li><a href=\"https://man.openbsd.org/ospfd.8\" rel=\"nofollow ugc noopener\">ospfd(8)</a> now adds missing rtlabel references and update routes when only the label changes.</li><li>Preserve configured interface type on <a href=\"https://man.openbsd.org/ospf6d.8\" rel=\"nofollow ugc noopener\">ospf6d(8)</a> link update.</li><li>Ensure <a href=\"https://man.openbsd.org/ospfd.8\" rel=\"nofollow ugc noopener\">ospfd(8)</a> does not leak information on memory address layout from process.</li><li>Made <a href=\"https://man.openbsd.org/authpf.8\" rel=\"nofollow ugc noopener\">authpf(8)</a> read_config() remove trailing white space to avoid misconfigurations.</li><li>Fixed <a href=\"https://man.openbsd.org/veb.4\" rel=\"nofollow ugc noopener\">veb(4)</a> SIOCBRDGRTS and SIOCBRDGVRTS ioctls leaking kernel stack data.</li><li>Fixed packet corruption in <a href=\"https://man.openbsd.org/veb.4\" rel=\"nofollow ugc noopener\">veb(4)</a>.</li><li><a href=\"https://man.openbsd.org/veb.4\" rel=\"nofollow ugc noopener\">veb(4)</a> now returns ENOMEM when mallocarray() fails in veb_rule_list_get().</li><li>Fixed <a href=\"https://man.openbsd.org/ifconfig.8\" rel=\"nofollow ugc noopener\">ifconfig(8)</a> &#39;vebX -tagged ifX&#39; which accepted too many arguments.</li><li>Improved <a href=\"https://man.openbsd.org/em.4\" rel=\"nofollow ugc noopener\">em(4)</a> K1 exit timeout, to receive non-broadcast packets.</li><li>Simplified mac type tests on <a href=\"https://man.openbsd.org/em.4\" rel=\"nofollow ugc noopener\">em(4)</a>.</li></ul></li><li>The following changes were made to the <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> firewall:<ul><li>Fixed off-by-one in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> ioctl DIOCIGETIFACES.</li><li>Do not free the <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> caller&#39;s ruleset when attaching a table fails.</li><li>No longer allow un-terminated strings in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> ioctl&#39;s.</li><li>Stopped <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> dropping valid MLD packets with unspecified source address.</li><li>Prevent <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> dropping TCP state if it receives a crafted reset packet.</li><li>Fixed races in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> connection counters that caused connection counter underflows.</li><li>Fragment reassembly in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a>/<a href=\"https://man.openbsd.org/inet.4\" rel=\"nofollow ugc noopener\">inet(4)</a>/<a href=\"https://man.openbsd.org/inet6.4\" rel=\"nofollow ugc noopener\">inet6(4)</a> now occurs in correct routing domain.</li><li>Stopped &#39;pfctl -s all&#39; dumping all OS fingerprints loaded to <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a>.</li><li>Fixed NULL pointer dereference in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> outbound packet path.</li><li>Fixed out-of-bounds read in <a href=\"https://man.openbsd.org/pf.4\" rel=\"nofollow ugc noopener\">pf(4)</a> pf_rule_copyin().</li></ul></li><li>Routing daemons and other userland network programs saw the following improvements:<ul><li>Altered <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> code to avoid false bug reports from LLM scanners.</li><li>Prevent size_t underflow on a malformed packets in <a href=\"https://man.openbsd.org/agentx.3\" rel=\"nofollow ugc noopener\">agentx(3)</a> and <a href=\"https://man.openbsd.org/snmpd.8\" rel=\"nofollow ugc noopener\">snmpd(8)</a>.</li><li>Widen <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> server flags to 64-bit integers.</li><li><a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> now enforces &#39;max request body&#39; for chunked requests passed to fastcgi.</li><li>Made <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> reject config of shared TLS listeners with different client CA or CRL.</li><li>In <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> now sends one imsg fastcgi param struct per parameter, to preserve config order.</li><li>Added custom HTTP header support to <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a>.</li><li>Fixed <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> suffix range handling.</li><li>Stopped <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> sending location fcgiparams twice.</li><li>Made <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> drain abort response via bufferevent to prevent errors being truncated.</li><li><p>Restricted IMSG_CTL_PROCFD to parent and check process id/instance in</p><p><a href=\"https://man.openbsd.org/iked.8\" rel=\"nofollow ugc noopener\">iked(8)</a>,\n<a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a>,\n<a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>, and\n<a href=\"https://man.openbsd.org/snmpd.8\" rel=\"nofollow ugc noopener\">snmpd(8)</a>.</p></li><li>Switched the default TLS cipher in <a href=\"https://man.openbsd.org/httpd.conf.5\" rel=\"nofollow ugc noopener\">httpd.conf(5)</a> set from &#39;compat&#39; to &#39;secure.&#39;</li><li>Made <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> and <a href=\"https://man.openbsd.org/dhcpd.8\" rel=\"nofollow ugc noopener\">dhcpd(8)</a> correctly error check <a href=\"https://man.openbsd.org/timegm.3\" rel=\"nofollow ugc noopener\">timegm(3)</a>.</li><li>Random-relink <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> and <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> at boot.</li><li><a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> now rejects CL.TE request framing (per RFC 9112 sections 6.1 and 6.3).</li><li>Made <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> reject obs-fold with 400 (RFC 9112 5.2).</li><li>Fixed uploads using <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> chunked transfer-encoding.</li><li><a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> will now advertise Vary: Accept-Encoding whenever gzip-static is enabled.</li><li>Made <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a> advertise static file revalidation, preserving Last-Modified and If-Modified-Since flow.</li><li>Added more config checks to <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>.</li><li>Explicitly flush <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> redirect rules after reloading.</li><li>In <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>, removed wrong disable flag for routers.</li><li>Use a per-host random ICMP echo id in <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>.</li><li>Added Lua <a href=\"https://man.openbsd.org/patterns.7\" rel=\"nofollow ugc noopener\">patterns(7)</a> support for <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> filter rules; improved <a href=\"https://man.openbsd.org/glob.7\" rel=\"nofollow ugc noopener\">glob(7)</a> documentation.</li><li>Use <a href=\"https://man.openbsd.org/getexecpath.3\" rel=\"nofollow ugc noopener\">getexecpath(3)</a> and <a href=\"https://man.openbsd.org/execv.3\" rel=\"nofollow ugc noopener\">execv(3)</a> in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> <a href=\"https://man.openbsd.org/eigrpd.8\" rel=\"nofollow ugc noopener\">eigrpd(8)</a>, <a href=\"https://man.openbsd.org/httpd.8\" rel=\"nofollow ugc noopener\">httpd(8)</a>, <a href=\"https://man.openbsd.org/iked.8\" rel=\"nofollow ugc noopener\">iked(8)</a>, <a href=\"https://man.openbsd.org/ntpd.8\" rel=\"nofollow ugc noopener\">ntpd(8)</a>, <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>, and <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a>.</li><li>Fixed <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> deferring connections log.</li><li>Made <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> check proc_compose and imsg_compose_event return values.</li><li>Allow setting log level from <a href=\"https://man.openbsd.org/relayd.conf.5\" rel=\"nofollow ugc noopener\">relayd.conf(5)</a>.</li><li>Added ECDSA support to the <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> CA privsep engine.</li><li><a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> now rejects duplicate Content-Length headers with 400.</li><li>Switched the default TLS cipher in <a href=\"https://man.openbsd.org/relayd.conf.5\" rel=\"nofollow ugc noopener\">relayd.conf(5)</a> set from &#39;HIGH:!aNULL&#39; to &#39;secure.&#39;</li><li>Switched <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> to new imsg API.</li><li>Made <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> strip Content-Length for chunked messages (RFC 9112 section 6.1).</li><li>Made <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> reject obs-fold to prevent parser differentials (RFC 9112 5.2).</li><li>Removed <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> X509_dup() call that leaks memory; add error checks for X509_set_*.</li><li>In <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>, added support for the MKCALENDAR HTTP method.</li><li>Fixed debug build of <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a>.</li><li>Let <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> support multiple resolvable addresses.</li><li>Let <a href=\"https://man.openbsd.org/relayd.8\" rel=\"nofollow ugc noopener\">relayd(8)</a> handle HTTP responses without bodies.</li><li>Fixed NULL dereference in <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a> message_alloc_reply() callers.</li><li>Fixed possible unaligned 32-bit read by <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a>.</li><li>Validate <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a> DELETE payload SPI array size.</li><li>Validate proposal and transform sizes in <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a>.</li><li>Added length checks for the Port-Message and State attributes in <a href=\"https://man.openbsd.org/login_radius.8\" rel=\"nofollow ugc noopener\">login_radius(8)</a> Access-Challenge.</li><li>Prevent the <a href=\"https://man.openbsd.org/dhcpleased.8\" rel=\"nofollow ugc noopener\">dhcpleased(8)</a> engine from sending us a negative amount of routes.</li><li>Made <a href=\"https://man.openbsd.org/dhcpleased.8\" rel=\"nofollow ugc noopener\">dhcpleased(8)</a> accept correct amount of routes from the engine process.</li><li>Make sure <a href=\"https://man.openbsd.org/dhcpleased.8\" rel=\"nofollow ugc noopener\">dhcpleased(8)</a> UDP header length field at least covers the UDP header.</li><li>Extended <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> mask-src to suppress session details.</li><li>Switched <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> over to <a href=\"https://man.openbsd.org/imsgbuf_get.3\" rel=\"nofollow ugc noopener\">imsgbuf_get(3)</a>.</li><li>Free dispatcher in <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> mda_envelope_free() to avoid a leak.</li><li><a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> now rejects empty or slash-bearing usernames before building the mbox path.</li><li><a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> now rejects CR/LF in argv-derived fields before starting the SMTP enqueue dialogue.</li><li>Properly free the copied envelope on the <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> smarthost lookup failure path.</li><li>Properly free mda_subaddress in <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> mda_envelope_free() to avoid memory leak.</li><li>Made <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> use inflateEnd() to tear down the inflate stream in uncompress_gzip_chunk().</li><li><a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> now stops parsing DNS answers once unpack_rr() reports failure.</li><li>Validate encrypted <a href=\"https://man.openbsd.org/smtpd.8\" rel=\"nofollow ugc noopener\">smtpd(8)</a> queue buffer sizes before processing auth tag and IV data.</li><li>Imported <a href=\"https://man.openbsd.org/rtrd.8\" rel=\"nofollow ugc noopener\">rtrd(8)</a> RPKI-To-Router protocol daemon and <a href=\"https://man.openbsd.org/rtrctl.8\" rel=\"nofollow ugc noopener\">rtrctl(8)</a>.</li><li><a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a> saw several changes:<ul><li>Allow wildcards to be specified in alternate names in the <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a> config.</li><li>Made <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a> wipe optarg/eab/eab_key with <a href=\"https://man.openbsd.org/freezero.3\" rel=\"nofollow ugc noopener\">freezero(3)</a> after use.</li><li>Error check strdup() for external account binding by <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a>.</li><li>In <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a>, prevent HTTP request injection.</li><li>Let <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a> handle &#39;=&#39; padding in base64url encoded EAB keys.</li><li>Fixed <a href=\"https://man.openbsd.org/timegm.3\" rel=\"nofollow ugc noopener\">timegm(3)</a> invocations in <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a>.</li><li>Added support for <a href=\"https://man.openbsd.org/acme-client.1\" rel=\"nofollow ugc noopener\">acme-client(1)</a> external account binding.</li></ul></li><li>In <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>:<ul><li>Adjusted <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> graceful restart timer handling for multi-AFI/SAFI sessions.</li><li>Made <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> do a prefix re-evaluation if the validation state of a route changes.</li><li>Clear <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> NEXTHOP_CONNECTED in nexthop_update() if msg-&gt;connected is false.</li><li>Made <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> throttle reads from the peer when MSG_PROCESS_LIMIT reached.</li><li>Fixed <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> aspa_table_equal() equality comparison.</li><li>Incorporated new RTR v2 error codes from draft-ietf-sidrops-8210bis-26 to <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>Reworked <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> IdleHoldTimer and how fast reconnects are implemented.</li><li>Reworked the force_update logic in the <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> adj-rib-out.</li><li>Stopped <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> leaking peer data to <a href=\"https://man.openbsd.org/bgpctl.8\" rel=\"nofollow ugc noopener\">bgpctl(8)</a>.</li><li>Implemented ch_meta_locate() in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>Brought back the <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> path_id_tx hack for regular peers.</li><li>In <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>, improved mrt_dump_entry_mp() calculation handling, avoid overflow.</li><li>Avoid infinite loop when parsing PFKEY replies in <a href=\"https://man.openbsd.org/iked.8\" rel=\"nofollow ugc noopener\">iked(8)</a>, <a href=\"https://man.openbsd.org/isakmpd.8\" rel=\"nofollow ugc noopener\">isakmpd(8)</a>, <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>, and <a href=\"https://man.openbsd.org/ldpd.8\" rel=\"nofollow ugc noopener\">ldpd(8)</a>.</li><li>Had <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> make sure the nexthop attribute is present if there is any nlri data.</li><li>Stopped <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> failing hard on version mismatch; ignore extra end-of-params messages.</li><li>Improved <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> handling of unknown extended communities.</li><li>Increased the <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> MRT attribute buffer to MAX_EXT_PKTSIZE so it works in all cases.</li><li>Fixed use-after-free in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> rib_remove and parse.y.</li><li>Added <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> force_update flag to force pend_prefix_add() calls in adjout_prefix_update().</li><li>Made <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> respect RTR min-version in downgrade path and properly closing the connection.</li><li>Improved <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> add-path send parser. Error out if max is used with best.</li><li>Adjusted handling of limits in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> up_generate_addpath().</li><li>Added extended message capability to checks for what the <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> peer has enabled.</li><li>Made <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> return an error on unhandled imsg types in the adj-rib-out case.</li><li>Fixed <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> port configuring on little endian systems.</li><li>Extra size checks for <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> ibuf_set_maxsize().</li><li>Introduce MAX_ADDPATH_COUNT (set to 100) and use this for the <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> add-path.</li><li>In <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> merge_peers() also set local_bgpid for cloned peers, not only regular peers.</li><li>Loop counters converted from uint8_t to u_int in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>Reduce maximum configurable stale time to CAPA_GR_TIMEMASK (4095) in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>In <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> session_graceful_restart() also arm the SessionDown timer.</li><li>Made <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> check xp-&gt;rdesession to know if the RDE has the session running or not.</li><li>Improved path_calc_hash() in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>Fixed &#39;treat as withdraw&#39; handling for invalid <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> ORIGIN attributes.</li><li>Fixed two memory accounting issues in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> chash.</li><li>Additional checks on TLV encoding in <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>.</li><li>Limit all <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> ASPATH attributes to 750 elements.</li><li>In <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a>, prevent overflow of the uint8_t length value in attr_optadd.</li><li>Re-evaluate <a href=\"https://man.openbsd.org/bgpd.8\" rel=\"nofollow ugc noopener\">bgpd(8)</a> prefixes if just PREFIX_FLAG_FILTERED changed.</li></ul></li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>:<ul><li>Fixed <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> to avoid buffer overreads with OpenSSL 4.1.</li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>, reject non-conformant certificate subject encodings.</li><li>Made <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> check alignment of certificate CRLDPs with the referring Manifest.</li><li>Reworked <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> cms_parse_validate().</li><li>Fixed handling of inherited resources in leaves by <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li>Unified all signed object parser functions in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li><a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> now unconditionally warns about incorrect RSA parameters; rejects some malformed ROAs.</li><li>Limit the range of deltas added to the <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> queue.</li><li>Ensure consistent states in persistent <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> HTTP connections.</li><li>Removed behaviour difference between <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> versions with and without gbr support.</li><li>Fixed possible exit race in the <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> parser.</li><li>Made <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> only record NCA history on successful runs.</li><li><a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> will now only output config files on successful run.</li><li>Batch <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> retries of non-functional CAs based on their rsync base URI.</li><li>Properly apply constraints to <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> BGPsec Router certs.</li><li>Deduplicated <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> skiplist, shortlist, and NCA retry handling.</li><li>Removed incorrect free in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> nca_hist_load().</li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> cert_ca_sia(), use the correct notify string in error message.</li><li>Removed double fclose in a success path in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li>Added a coinflip to increase cycle-to-cycle jitter in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>, added a backoff retry mechanism for non-functional CAs.</li><li><a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> now rejects certs with duplicate extension OIDs.</li><li>Clear last_modified after each response on a persistent HTTP <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> connection.</li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>, switch subordinates in CCR manifests to a simple queue.</li><li>Made <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> exclude hidden files and directories when synchronising via rsync.</li><li>In <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>, limited the length of filenames in some ASN.1 fields to 255.</li><li>Fixed incomplete strncmp() check in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li>Fix off-by-one in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a> ip_addr_check_overlap().</li><li>Fixed shortlist and skiplist checks in <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li><li>Added more error checks and safeguards to <a href=\"https://man.openbsd.org/rpki-client.8\" rel=\"nofollow ugc noopener\">rpki-client(8)</a>.</li></ul></li></ul></li><li><a href=\"https://man.openbsd.org/tmux.1\" rel=\"nofollow ugc noopener\">tmux(1)</a> improvements and bug fixes:<ul><li>Keep the scroll position in tree mode when the list is rebuilt (issue 5631).</li><li>Do not leak waiting clients (in wait-for) if they are killed (issue 5614).</li><li>Do not cancel mark when a click is on the border.</li><li>Added support for borderless menus, like panes.</li><li>Added utf8 terminal-features.</li><li>Ignore focus events earlier to avoid them interfering with prefix.</li><li>Added -K flag to new-pane to make a modal pane capture all keys.</li><li>Always unzoom before splitting windows, including for floating panes.</li><li>Added &#39;T&#39; to change pane title.</li><li>Added refresh-now command.</li><li>Ignore Ms if it is invalid (eg no %p1), report in client mode.</li><li>Fixed crash when synchronising groups and there is no current window.</li><li>Added pane_private_modes format with list of DEC private modes.</li><li>Prevented core dumps upon startup on landisk.</li><li>Added modal panes, created currently with new-pane -O.</li><li>Major rework of prompts.</li><li>Fixed cursor calculation when the status line is at the top.</li><li>Added -H flag to capture-pane to show hyperlinks.</li><li>Added -L to show line numbers with capture-pane and -F to show line flags.</li><li>Clear entire lines when removing from history or freeing.</li><li>Redraw entire session when making a new pane.</li><li>Added -g flag to kill-session to kill all sessions in a group.</li><li>Fixed crash when freeing layout cell.</li><li>Added missing argument to %unlinked-window-renamed.</li><li>Increase escape delay if the buffer contains a partial paste end.</li><li>Fixed crash caused by including unattached clients on sorted list.</li><li>Added new-pane command.</li><li>Fixed infinite loop due to underflow when redrawing scrollbar.</li><li>Fixed control mode teardown ordering for queued pane output.</li><li>Added Emacs-style re-centre-top-bottom.</li><li>Added time limits to some loops.</li><li>Added missing flags to screen_mode_to_string.</li></ul></li><li>LibreSSL version 4.4.0:<ul><li>Portable changes:<ul><li>Numerous compatibility layer fixes for AIX, FreeBSD, macOS, MinGW, NetBSD, and especially Windows.</li><li><p>Fixed incorrect code generation by the MSVC ARM64 optimizer in</p><p>constant-time bignum code.</p></li><li>Improved assembly support on many platforms.</li><li><p>Fixed <a href=\"https://man.openbsd.org/openssl.1\" rel=\"nofollow ugc noopener\">openssl(1)</a>,</p><p><a href=\"https://man.openbsd.org/nc.1\" rel=\"nofollow ugc noopener\">nc(1)</a>, and\n<a href=\"https://man.openbsd.org/ocspcheck.8\" rel=\"nofollow ugc noopener\">ocspcheck(8)</a>\nsilently running without\n<a href=\"https://man.openbsd.org/pledge.2\" rel=\"nofollow ugc noopener\">pledge(2)</a> and\n<a href=\"https://man.openbsd.org/unveil.2\" rel=\"nofollow ugc noopener\">unveil(2)</a>\non hosts that provide them.</p></li></ul></li><li>Internal improvements:<ul><li>Minor code cleanup for PKCS#7.</li><li>Clear unused bits for the maximum of RFC 3779 IP address ranges.</li><li>Cleanup passes over the DTLS code, avoiding many contortions.</li><li>Zero out the failure_key in ML-KEM code.</li><li>Improve portability in preprocessor based SHA assembly.</li><li>Removed a few vestigial #ifdefs from public and internal headers.</li><li>Introduce and use dtls12_handshake_msg framework.</li><li>Rename union from _ to u in the ui code. Avoids Windows CE #ifdef.</li><li><p>Clean up and simplify signature algorithm handling after removal</p><p>of TLSv1.0 and TLSv1.1.</p></li><li>Add a point at infinity check to ecdh_compute_key().</li><li><p>Fix incorrect purpose check in unreachable non-legacy path of the</p><p>modern X.509 verifier.</p></li><li>Improve TLSv1.3 server handling of no shared groups.</li><li>Correct secondary key share handling for HelloRetryRequests.</li><li>Fix EXFLAG_CRITICAL mishandling in the crl_cb().</li><li><p>Among CRLs with the same score prefer the one with the most recent</p><p>thisUpdate to match BoringSSL and OpenSSL behavior.</p></li><li>Clean up sequence number and message header handling in DTLS.</li><li>Remove redundant BIO_write() length assertions in b64_write().</li><li><p>Report invalid base64 BIO state as an internal error rather than</p><p>asserting.</p></li><li><p>Improve SHA-3 performance by using an unrolled and interleaved</p><p>algorithm.</p></li><li>Allocate TLSv1.3 receive buffers lazily.</li><li><p>Simplify handling of remaining record content on switch to the</p><p>legacy stack.</p></li><li>Avoid harmless narrowing of the return value in dtls1_ctrl().</li><li>Remove NID_md5_sha1 support from tls1_PRF().</li><li>Remove DTLS unprocessed records queue.</li><li>Remove DTLS application data queue.</li><li>Remove SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS which was never set.</li></ul></li><li>Compatibility changes:<ul><li><p>The misnamed tls_peer_cert_chain_pem() has been deprecated and may</p><p>be removed in a future release. tls_peer_cert_chain_verified_pem()\nand tls_peer_cert_bundle_unverified_pem() should be used instead.</p></li><li><p>Use X25519MLKEM768 as the preferred group for TLSv1.3 connections</p><p>in libtls.</p></li><li><p>Ensure libtls keeps working with future OpenSSL releases that will</p><p>stop NUL-terminating ASN.1 strings. This is an old bug in libtls\nthat will bite, probably starting with OpenSSL 4.2.</p></li><li><p>CRYPTO_cleanup_all_ex_data() is now a no-op. It was not thread</p><p>safe and the actual cleanup is now done by <a href=\"https://man.openbsd.org/OPENSSL_cleanup.3\" rel=\"nofollow ugc noopener\">OPENSSL_cleanup(3)</a>.</p></li><li><p>Align <a href=\"https://man.openbsd.org/X509_check_ca.3\" rel=\"nofollow ugc noopener\">X509_check_ca(3)</a> with modern OpenSSL. While it has long been</p><p>documented that it only works after calling\n<a href=\"https://man.openbsd.org/X509_check_purpose.3\" rel=\"nofollow ugc noopener\">X509_check_purpose(3)</a>,\nit still makes sense to &quot;fail closed&quot;, i.e., indicate a non-CA.</p></li><li><p>Added OIDs for CCR, ErikIndex, ErikPartition, ErikSegmentIndex,</p><p>and communityDefinition.</p></li></ul></li><li>Bug fixes:<ul><li><p>Fix <a href=\"https://man.openbsd.org/PKCS7_set_signed_attributes.3\" rel=\"nofollow ugc noopener\">PKCS7_set_{un,}signed_attributes(3)</a> to allow caller to free</p><p>on failure rather than risking a double free.</p></li><li><p>Initialize decode_error and invalid_key variables in TLS key share</p><p>code to avoid branching on uninitialized memory.</p></li><li><p>Record extension length between type and data in the ClientHello</p><p>hash to ensure identical framing in first and second CH.</p></li><li>Fix out of bound writes in the s_client XMSS mode.</li><li><p>Ensure <a href=\"https://man.openbsd.org/EC_GROUP_check.3\" rel=\"nofollow ugc noopener\">EC_GROUP_check(3)</a> and</p><p><a href=\"https://man.openbsd.org/X509_CRL_verify.3\" rel=\"nofollow ugc noopener\">X509_CRL_verify(3)</a> failures result in &quot;app&quot;\nfailures in <a href=\"https://man.openbsd.org/openssl.1\" rel=\"nofollow ugc noopener\">openssl(1)</a>\necparam and openssl crl.</p></li><li>Do not fail accept on reverse DNS lookup failures in s_socket.</li><li>Ensure <a href=\"https://man.openbsd.org/X509V3_EXT_print.3\" rel=\"nofollow ugc noopener\">X509V3_EXT_print(3)</a> only returns 0 and 1.</li><li>Avoid calling memcmp() on NULL in IPAddressFamily_cmp().</li><li>In libtls disallow wildcard matching of a TLD specified as a FQDN.</li><li>Unbreak some aspects of TLSv1.2 with custom curve lists.</li><li>Ensure a peer-provided EC public key uses uncompressed encoding.</li><li>Send decode_error alert on failure to decode an EC peer pubkey.</li><li><p>Avoid NULL dereference and out-of-bounds read in password-based</p><p>CMS decryption.</p></li><li>Add some missing bounds check to ASN1_mbstrinc_copy().</li><li><p>Avoid freeing a caller-owned buffer in</p><p><a href=\"https://man.openbsd.org/PKCS7_verify.3\" rel=\"nofollow ugc noopener\">PKCS7_verify(3)</a>.</p></li><li>Remove SSL_OP_LEGACY_SERVER_CONNECT from default options.</li><li><p>Send illegal parameter alerts for various HelloRetryRequest</p><p>violations.</p></li><li><p>Check that the server selected ciphersuite is valid for use with</p><p>TLSv1.2.</p></li><li><p>Unlock CRYPTO_LOCK_UI on ui_open_session() failure to avoid</p><p>a deadlock.</p></li><li><p>Check <a href=\"https://man.openbsd.org/HMAC.3\" rel=\"nofollow ugc noopener\">HMAC(3)</a></p><p>return value to avoid later use of uninitialized\nin <a href=\"https://man.openbsd.org/openssl.1\" rel=\"nofollow ugc noopener\">openssl(1)</a>.</p></li><li>Use correct alert for key_share without supported_groups.</li><li><p>Don&#39;t drop X509_V_ERR_HOSTNAME_MISMATCH when verify callback</p><p>returns 1. It has long been documented that this is ill advised\nbut some applications still do it.</p></li><li><p>Ensure the server selects an ALPN protocol that we advertised or</p><p>abort the handshake with illegal_parameter.</p></li><li>Fix streaming of PKCS#7 objects with omitted content.</li><li>Avoid OOB access due to type confusion in PKCS7_stream().</li><li><p>Plug leak and various other bugs in asn1_multi(), a helper to</p><p>handle sequences and sets in config parsing.</p></li><li><p>Fix RFC 3779 inheritance checks for leaves as far as possible</p><p>without breaking the RPKI. Still allow the immediate issuer to\nomit one of the extensions because otherwise about one third of\nRFC 9286 Manifests would become invalid.</p></li><li>Correct a botched size check in dtls1_process_fragment().</li><li>Avoid confusing delta CRLs as full CRLs.</li><li><p>When copying an RSA-PSS EVP_PKEY_CTX, ensure saltlen and minimal</p><p>saltlen restrictions are copied rather than using the defaults.</p></li><li>Allow DTLS clients to receive unexpected Finished messages.</li><li><p>Cache the leaf&#39;s extensions before adding it to a validated</p><p>chain to make name constraints check work more reliably.</p></li><li><p>Ensure the whole subject is searched for email addresses and</p><p>common names.</p></li><li><p>Check for embedded NULs in emails and subjectAltname in the</p><p>essentially unused legacy NAME_CONSTRAINTS_*() API.</p></li><li><p>Remove support for nameRelativeToCRLIssuer in the CRL Distribution</p><p>Point extension. Per RFC 5280 it SHOULD not be used by conforming\nCAs and it was eating memory for breakfast pre-signature.</p></li></ul></li><li>Security and reliability fixes:<ul><li><p>Fix parsing issues in X.509 name constraints URI host parsing.</p><p>Handle IPv6 literals correctly and don&#39;t allow specially crafted\nuserinfo to bypass host checks.</p></li><li><p>Limit size of buffered DTLS handshake messages to avoid overly</p><p>large memory consumption on small handshake message fragments.</p></li><li><p>Fix an OCSP responder authorization bypass for clients using</p><p>tls_config_ocsp_require_stapling(), of which only OpenBSD\n<a href=\"https://man.openbsd.org/nc.1\" rel=\"nofollow ugc noopener\">nc(1)</a> and\n<a href=\"https://man.openbsd.org/ftp.1\" rel=\"nofollow ugc noopener\">ftp(1)</a>\nare known when they&#39;re used with the &quot;muststaple&quot; key word.</p></li></ul></li><li>Testing and proactive security:<ul><li>Improved test coverage for DTLS and TLS renegotiation.</li><li>Add X.509 CRL regress from pre-Apache2-licensed BoringSSL.</li><li><p>Rework the testing framework to be memory based rather than</p><p>file based. Match Go&#39;s output format more closely.</p></li></ul></li></ul></li><li>OpenSSH 10.6:<ul><li>Security fixes:<ul><li>Disabled <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> LZ77 dictionary coder to avoid a potential side-channel leak.</li><li>Fixed ChannelTimeout and RekeyLimit not being applied in <a href=\"https://man.openbsd.org/sshd_config.5\" rel=\"nofollow ugc noopener\">sshd_config(5)</a>.</li><li>Made <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> authorized_keys &quot;restrict&quot; keyword apply correctly to tunnel forwarding.</li></ul></li><li>Potentially incompatible changes:<ul><li>Use IANA allocated codepoint for ssh-mldsa44-ed25519 instead of &#39;@openssh.com&#39;.</li><li>Made <a href=\"https://man.openbsd.org/sshd_config.5\" rel=\"nofollow ugc noopener\">sshd_config(5)</a> DisableForwarding=yes override PermitTunnel=yes.</li><li>Enforce a maximum size for usernames in <a href=\"https://man.openbsd.org/ssh-agent.1\" rel=\"nofollow ugc noopener\">ssh-agent(1)</a> agent key use constraints.</li><li>Disallow NUL byte in <a href=\"https://man.openbsd.org/scp.1\" rel=\"nofollow ugc noopener\">scp(1)</a> &#39;-O filename&#39;.</li></ul></li><li>New features:<ul><li>New <a href=\"https://man.openbsd.org/ssh-add.1\" rel=\"nofollow ugc noopener\">ssh-add(1)</a> option &#39;-P&#39; to skip PIN entry (bz3635).</li><li><a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> signal handling with <a href=\"https://man.openbsd.org/readpassphrase.3\" rel=\"nofollow ugc noopener\">readpassphrase(3)</a> fixed.</li><li>Switched <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> from supercop ed25519 to libsodium.</li><li>Extended <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> TCPKeepAlive to support forwardings (bz3921).</li><li>Added <a href=\"https://man.openbsd.org/ssh-keygen.1\" rel=\"nofollow ugc noopener\">ssh-keygen(1)</a> &#39;hexdump&#39; to dump the key blob in hex format.</li><li>Allow setting/clearing <a href=\"https://man.openbsd.org/ssh-keygen.1\" rel=\"nofollow ugc noopener\">ssh-keygen(1)</a> touch-required/verify-required flags on FIDO private keys when resetting the passphrase.</li><li>Added <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> &#39;-Z user@host&#39; mode that lists pubkeys that will be tried for authentication.</li><li>Added experimental <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> support for composite post-quantum mldsa44-ed25519 signature scheme.</li><li>Added an explicit-seed variant of the <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> keygen function.</li><li>Added signature malleability and pubkey validity checks to <a href=\"https://man.openbsd.org/sshd.8\" rel=\"nofollow ugc noopener\">sshd(8)</a> ed25519 verification.</li></ul></li><li>Bugfixes:<ul><li>Check <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> compressed payloads don&#39;t inflate beyond the maximum payload length.</li><li>Avoid race between multiple <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> processes establishing multiplexing control socket.</li><li>Plugged memory leak in <a href=\"https://man.openbsd.org/ssh-add.1\" rel=\"nofollow ugc noopener\">ssh-add(1)</a> (CID 913600).</li><li>Fix for <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> CIDs 913601 and 913602.</li><li>Fix for <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> CID 913600.</li><li>Converted <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> channel timeouts to allow fractional and subsecond timeouts.</li><li>Made <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> masking signals correctly use sigaddset (bz3981).</li><li>Fixed <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> memleaks (CID 913598 and 913599); added missing semicolon (CID 913599).</li><li>Corrected Daylight Savings Time timestamp conversion by <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> (bz4004).</li><li>Fixed <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> proxy socket breakage in t-multiplex after recent <a href=\"https://man.openbsd.org/pledge.2\" rel=\"nofollow ugc noopener\">pledge(2)</a> changes.</li><li>Reading server banner by <a href=\"https://man.openbsd.org/ssh-keyscan.1\" rel=\"nofollow ugc noopener\">ssh-keyscan(1)</a> no longer blocks/freezes on a many-host keyscan.</li><li>Allow session-bind@openssh.com requests when the <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> agent is locked.</li><li>Avoid potential realloc use-after-free in the <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> client.</li><li>Reordering of certificates tried during <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> pubkey authentication.</li><li>Fixed <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> ML-KEM/ECDH interop problem.</li><li>Removed some key <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> parsing and verification paths from the pre-auth attack surface.</li><li>Avoid download to server-controlled path when performing <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> download via commandline.</li><li>Avoid possible NULL deref in <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a>; sanitise filenames received via remote glob.</li><li>Large refactoring of <a href=\"https://man.openbsd.org/sshd.8\" rel=\"nofollow ugc noopener\">sshd(8)</a> config management code.</li><li>Made <a href=\"https://man.openbsd.org/sshd.8\" rel=\"nofollow ugc noopener\">sshd(8)</a> force domain name received from the system resolver to lowercase.</li><li>Fixed two one-byte out-of-cound reads in <a href=\"https://man.openbsd.org/sshd.8\" rel=\"nofollow ugc noopener\">sshd(8)</a>.</li><li>Stricter validation of transport state passed from the preauth to postauth <a href=\"https://man.openbsd.org/sshd.8\" rel=\"nofollow ugc noopener\">sshd(8)</a> process.</li><li>Fixed <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> client use-after-free on error path if cipher_init() fails.</li><li>Added <a href=\"https://man.openbsd.org/ssh-agent.1\" rel=\"nofollow ugc noopener\">ssh-agent(1)</a> -V to print version, use it to test the binary is functional after relinking.</li><li>Stopped <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> validating bad cipher/mac lists arguments as valid.</li><li>Fixed <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> NULL deref during pubkey auth.</li><li>Dropbear recently added a -Q option; make <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> use it to query KEX if available.</li><li>Classify <a href=\"https://man.openbsd.org/ssh.1\" rel=\"nofollow ugc noopener\">ssh(1)</a> dynamic-tcpip channels as bulk, not interactive (bz3958).</li></ul></li></ul></li><li><p>Ports and packages:</p><p>Many pre-built packages for each architecture:</p>\n<ul><li>aarch64: 12907</li><li>amd64: 13060</li><li>arm: XXX</li><li>i386: 10659</li><li>mips64: 9072</li><li>powerpc: XXX</li><li>powerpc64: 9564</li><li>riscv64: 11116</li><li>sparc64: 10621</li></ul>\n<p>Some highlights:</p>\n<ul><li>Asterisk 20.21.0 and 22.11.0</li><li>Audacity 3.7.9</li><li>CMake 4.3.5</li><li>Chromium 154.0.8037.92</li><li>Emacs 31.1</li><li>FFmpeg 9.0.2</li><li>GCC 16.1.0</li><li>GHC 9.10.3</li><li>GNOME 49</li><li>Go 1.27.1</li><li>JDK 11.0.32, 17.0.20, 21.0.12 and 25.0.4</li><li>KDE Gear 26.08.1</li><li>KDE Frameworks 6.30.0</li><li>KDE Plasma 6.7.5</li><li>Krita 6.0.3</li><li>LLVM/Clang 21.1.8 and 22.1.8</li><li>LibreOffice 26.8.0.3</li><li>Lua 5.1.5, 5.2.4, 5.3.6, 5.4.8 and 5.5.1</li><li>MariaDB 12.3.3</li><li>Mono 6.14.1</li><li>Mozilla Firefox 157.0 and ESR 153.4.0</li><li>Mozilla Thunderbird 153.4.0</li><li>Mutt 2.4.2 and NeoMutt 20260616</li><li>Node.js 24.21.0 and Deno 2.9.7</li><li>OCaml 4.14.2</li><li>OpenLDAP 2.6.15</li><li>PHP 8.3.33, 8.4.26 and 8.5.11</li><li>Postfix 3.5.28 and 3.11.7</li><li>PostgreSQL 18.6</li><li>Prism Launcher 11.1.0</li><li>Python 2.7.18 and 3.14.7</li><li>Qt 5.15.19 (+ kde patches) and 6.11.2</li><li>R 4.6.1</li><li>Ruby 3.3.12, 3.4.11 and 4.0.7</li><li>Rust 1.98.1</li><li>SQLite 3.53.2</li><li>Shotcut 26.8.1</li><li>Sudo 1.9.17p2</li><li>Suricata 7.0.7</li><li>Tcl/Tk 8.5.19, 8.6.18 and 9.0.4</li><li>TeX Live 2026</li><li>Vim 9.2.1125, Neovim 0.12.5 and Vim-Classic 2026091</li><li>Wayland 1.26.0 with compositors CoW, Labwc, Mango, Niri, Sway and Wayfire</li><li>Vulkan 1.4.357.0</li><li>Xfce 4.20.0</li></ul></li><li>As usual, steady improvements in manual pages and other documentation.</li><li>The system includes the following major components from outside suppliers:<ul><li><p>Xenocara (based on X.Org 7.7 with xserver 21.1.24 + patches,</p><p>freetype 2.14.3, fontconfig 2.17.1, Mesa 25.0.7, xterm 410,\nxkeyboard-config 2.20, fonttosfnt 1.2.5 and more)</p></li><li>LLVM/Clang 22.1.6 (+ patches)</li><li>GCC 4.2.1 (+ patches) and 3.3.6 (+ patches)</li><li>Perl 5.42.3 (+ patches)</li><li>pkgconf 3.0.7</li><li>NSD 4.15.2</li><li>Unbound 1.26.1</li><li>Ncurses 6.4</li><li>Binutils 2.17 (+ patches)</li><li>GDB 6.3 (+ patches)</li><li>Awk 20250116</li><li>Expat 2.8.4</li><li>zlib 1.3.2 (+ patches)</li></ul></li></ul>\n<p><em>The full release page also covers per-platform installation, upgrading, source code and the ports tree: <a href=\"https://www.openbsd.org/80.html\" rel=\"nofollow ugc noopener\">https://www.openbsd.org/80.html</a></em></p>","headings":[{"level":1,"text":"OpenBSD 8.0","id":"openbsd-8-0"},{"level":2,"text":"What's New","id":"what-s-new"}]}}