FreeBSD/ports da4abdb — x11/hyprpicker Makefile distinfo, x11/hyprpicker/files patch-src_main.cpp

x11/hyprpicker: Update to 0.4.8

While here, remove upstreamed patch.

Changelog: https://github.com/hyprwm/hyprpicker/releases/tag/v0.4.8

Reported by:    GitHub (watch releases)
DeltaFile
+0-27x11/hyprpicker/files/patch-src_main.cpp
+3-3x11/hyprpicker/distinfo
+2-3x11/hyprpicker/Makefile
+5-333 files

OpenBSD/ports JUpGRX9 — net/knot distinfo Makefile, net/knot/patches patch-src_contrib_lmdb_mdb_c

   Update to knot-3.6.2 and py-libknot-3.6.2

   knot-3.6 contains code to automatically migrate LMDB 0.9 to LMDB 1.0
   databases.

   ok phessler@
VersionDeltaFile
1.16+13-20net/knot/pkg/PLIST
1.3+10-14net/knot/patches/patch-src_contrib_lmdb_mdb_c
1.91+2-4net/knot/Makefile
1.21+2-2net/py-libknot/distinfo
1.56+2-2net/knot/distinfo
1.27+1-1net/py-libknot/Makefile
+30-436 files

FreeBSD/ports 0774739 — ports-mgmt Makefile, ports-mgmt/sbom-generator pkg-descr Makefile

ports-mgmt/sbom-generator: create SPDX SBOM files for installed packages
DeltaFile
+139-0ports-mgmt/sbom-generator/files/sbom-generator.1
+96-0ports-mgmt/sbom-generator/files/sbom-generator.in
+34-0ports-mgmt/sbom-generator/Makefile
+14-0ports-mgmt/sbom-generator/pkg-descr
+1-0ports-mgmt/Makefile
+284-05 files

FreeNAS/freenas 39b6c47 — tests/api2 test_530_ups.py

Fix shutdown test

(cherry picked from commit 73545278cdb785520718c907e4c678d5b06025e6)
DeltaFile
+24-2tests/api2/test_530_ups.py
+24-21 files

FreeNAS/freenas e88ca5f — src/middlewared/middlewared/plugins/ups upssched_event.py, tests/api2 test_530_ups.py

Fix more UPS tests

(cherry picked from commit b18e25761081a9d269edc478f29d4cbee6a08db9)
DeltaFile
+60-14tests/api2/test_530_ups.py
+37-16src/middlewared/middlewared/plugins/ups/upssched_event.py
+97-302 files

LLVM/project 0247623 — llvm/test/Transforms/InstCombine pr232053.ll

[InstCombine] Add regression test for #232053 (NFC) (#238575)

Adds a regression test for the crash in #232053. The fix itself landed
in #231649.

Fixes https://github.com/llvm/llvm-project/issues/232053.
DeltaFile
+23-0llvm/test/Transforms/InstCombine/pr232053.ll
+23-01 files

FreeBSD/ports 3cc782b — x11/xdg-desktop-portal-hyprland distinfo Makefile

x11/xdg-desktop-portal-hyprland: Update to 1.5.0

Changelog: https://github.com/hyprwm/xdg-desktop-portal-hyprland/releases/tag/v1.5.0

Reported by:    GitHub (watch releases)
DeltaFile
+4-3x11/xdg-desktop-portal-hyprland/Makefile
+3-3x11/xdg-desktop-portal-hyprland/distinfo
+7-62 files

LLVM/project ffb4e1d — clang/lib/CIR/Lowering/DirectToLLVM CMakeLists.txt LowerToLLVMOffloadPrintfAMDGPU.cpp, llvm/include/llvm/Support AMDGPUPrintf.h

[CIR][AMDGPU] Move AMDGPU printf emit helpers (NFC) (#238399)

Move the AMDGPU printf emit helpers from
llvm/lib/Support/AMDGPUPrintf.cpp to
llvm/lib/Transforms/Utils/AMDGPUEmitPrintf.cpp.

Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>
DeltaFile
+0-96llvm/lib/Support/AMDGPUPrintf.cpp
+80-1llvm/lib/Transforms/Utils/AMDGPUEmitPrintf.cpp
+0-53llvm/include/llvm/Support/AMDGPUPrintf.h
+29-0llvm/include/llvm/Transforms/Utils/AMDGPUEmitPrintf.h
+1-1clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMOffloadPrintfAMDGPU.cpp
+1-0clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt
+111-1512 files not shown
+111-1538 files

NetBSD/pkgsrc-wip 76824a4 — proc-cli PLIST DESCR

proc-cli: remove, import to pkgsrc
DeltaFile
+0-395proc-cli/distinfo
+0-132proc-cli/cargo-depends.mk
+0-43proc-cli/Makefile
+0-10proc-cli/COMMIT_MSG
+0-6proc-cli/PLIST
+0-6proc-cli/DESCR
+0-5926 files

FreeNAS/freenas cbcd695 — src/middlewared/middlewared/api/base model.py, src/middlewared/middlewared/api/base/handler remove_secrets.py

Also redact fields by aliases
DeltaFile
+6-2src/middlewared/middlewared/api/base/model.py
+4-3src/middlewared/middlewared/api/base/handler/remove_secrets.py
+3-1src/middlewared/middlewared/pytest/unit/api/handler/result/test_secret.py
+13-63 files

OPNSense/core 53ec2ef — . plist, src/opnsense/mvc/app/controllers/OPNsense/Core/Api DashboardController.php

firmware: strict CRL and TLS 1.3 checking for product_feed (#11144)
DeltaFile
+29-0src/opnsense/scripts/firmware/feed.sh
+2-2src/opnsense/service/conf/actions.d/actions_firmware.conf
+1-1src/opnsense/scripts/firmware/hostnames.sh
+1-1src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php
+1-0src/opnsense/scripts/firmware/config.sh
+1-0plist
+35-46 files

FreeBSD/ports 04865f7 — deskutils/feathernotes Makefile

deskutils/feathernotes: try to fix packaging after recent Qt update

Reported by:    pkg-fallout
DeltaFile
+1-1deskutils/feathernotes/Makefile
+1-11 files

pkgng/pkgng b3e62fc — libpkg pkg_osvf.c, tests/lib FBSD-2025-05-28.json pkg_osvf.c

osvf: version ranges collapsed every events list into a single interval

pkg_osvf_parse_events() wrote each "introduced" into v1 and each
"fixed" into v2 of the one range allocated per ranges[] entry, so an
events list describing several intervals, such as
[introduced 1.0, fixed 1.5, introduced 2.0, fixed 2.3], ended up as
the single interval [2.0, 2.3] and leaked the earlier strings. It also
mapped "fixed" to an inclusive bound although OSV defines it as the
first version that is no longer affected, and ignored "last_affected"
and "limit" entirely, leaving such ranges open ended.

Once an OSV feed is wired into pkg audit this would have missed every
interval but the last and reported the fixed version as vulnerable.

The parser now walks the events in order: "introduced" opens a new
range, "fixed" and "limit" close it exclusively and "last_affected"
inclusively, each interval becoming its own range. A ranges[] entry
without events still means every version is affected. The test fixture
gains a package with two intervals and the expectations are adjusted.
DeltaFile
+71-20libpkg/pkg_osvf.c
+30-8tests/lib/pkg_osvf.c
+25-0tests/lib/FBSD-2025-05-28.json
+126-283 files

pkgng/pkgng 7e9160c — libpkg pkg_deps.c, tests/lib deps_formula.c

pkgdb: SQL injection through the manifest dep_formula field

pkg_deps_formula_tosql() spliced the dependency names and versions of a
package's dep_formula into an SQL WHERE clause with snprintf() and no
escaping, and pkgdb_load_deps() ran the result against local.sqlite.
The formula parser accepts any printable character except space and
comma in a name, including the single quote.

dep_formula is an ordinary manifest string stored at registration and
evaluated every time the package is loaded with its dependencies, so a
malicious package could inject arbitrary SQL into that SELECT, for
example "x')OR('1'='1" to make every installed package a dependency of
itself and distort the solver, autoremove and pkg delete for unrelated
packages. Only a single statement is compiled and no extension loading
is enabled, so the injection is limited to reads.

The clause is now built with the string builder and every value is
appended with its quotes doubled, so it cannot leave the SQL literal.
DeltaFile
+28-33libpkg/pkg_deps.c
+4-1tests/lib/deps_formula.c
+32-342 files

pkgng/pkgng 4c515d9 — tests/frontend create.sh

tests: cover a plist line holding only blanks

Such a line reaches the parser as an empty path; the trailing space
trim used to walk backwards past the start of the heap buffer.
DeltaFile
+14-2tests/frontend/create.sh
+14-21 files

pkgng/pkgng e0f9dd4 — . configure.def

2.8.99.6
DeltaFile
+1-1configure.def
+1-11 files

pkgng/pkgng 31d2733 — . NEWS

Changelog: describe the changes since 2.8.99.5
DeltaFile
+46-0NEWS
+46-01 files

pkgng/pkgng 7667ca5 — libpkg pkgdb.c, tests/frontend query.sh

pkgdb: reverse dependency rows were never updated on upgrade

When a package is registered, pkgdb refreshes the origin and version
recorded in the deps rows of the packages that depend on it. Since the
switch to typed SQL arguments, the call passes the version twice, so
the name placeholder was bound to the version string and the actual
name went to a non-existent fourth parameter.

The UPDATE therefore matched no rows and every dependent kept the
origin and version of the dependency as it was when the dependent was
installed. pkg info -d and %do showed stale origins after a port moved,
and pkg query -e conditions on %dv and %do evaluated against outdated
data.

Pass the arguments in the order the statement expects.
DeltaFile
+22-1tests/frontend/query.sh
+0-1libpkg/pkgdb.c
+22-22 files

pkgng/pkgng 388fd0f — libpkg/repo/binary update.c, tests/frontend update.sh

repo: an unparsable catalogue replaced the repository with an empty one

When the JSON catalogue in the data archive could not be parsed, or was
not an object, the update code reported "Invalid data" and jumped to the
cleanup path with rc still holding the success of the preceding
transaction start.

The cleanup then committed the empty new database, discarded the saved
copy of the previous one and returned success, so pkg update announced
the repository as updated. A truncated or corrupt catalogue from a
mirror left the repository with no packages, and because the database
mtime was stamped as current, later updates said it was up to date
until a forced update.

Fail the update in those cases so the previous catalogue is restored.
DeltaFile
+35-1tests/frontend/update.sh
+4-0libpkg/repo/binary/update.c
+39-12 files

pkgng/pkgng c1e4d46 — libpkg utils.c, libpkg/private utils.h

repo: catalogue paths could escape the cache directory

The repository catalogue's "path" (repopath), "name" and "version"
fields were used verbatim to build the destination file name under
the cache directory, and under the mirror directory for pkg fetch -o,
with no check for ".." components or embedded slashes.
pkg_mkdirs() creates every intermediate directory and treats an
existing one as success, so "All/x.pkg/../../../etc/rc.local" was
created-then-traversed exactly as written, and the extension taken
from the last '.' of such a path carried the traversal into the
normal cache name as well.

An unsigned repository (the default signature_type), an http MITM or
a malicious mirror could therefore make pkg fetch, running as root,
append attacker bytes to any file, delete any existing file by
listing it with a wrong size, and then recreate it with chosen
content whose checksum matched the catalogue. No install was needed,
and pkg fetch -o DIR escaped the chosen directory.


    [4 lines not shown]
DeltaFile
+34-0libpkg/repo/binary/update.c
+21-0libpkg/utils.c
+18-0tests/lib/utils.c
+17-0libpkg/repo/binary/fetch.c
+1-0libpkg/private/utils.h
+91-05 files

pkgng/pkgng 4903e0a — libpkg pkg_abi.c, tests/lib utils.c

pkg_abi_from_string: minor OS version parsed only when the major failed

For OSes whose ABI carries a major.minor version (DragonFly, Linux)
the minor was parsed inside "if (errstr != NULL)", i.e. only after the
major had already failed to parse, and a successful minor parse then
cleared errstr. A valid "dragonfly:6.4:x86:64" therefore always ended
up with minor 0, which feeds the VERSION_MINOR config variable and the
solver's ABI ordering, while an invalid "dragonfly:abc.4:x86:64" was
accepted with major 0.

Parse the minor when the major succeeded and reject the string when
either part is invalid; the wildcard check that follows is left to the
major-only OSes since strsep() has consumed the version by then.
DeltaFile
+22-0tests/lib/utils.c
+6-1libpkg/pkg_abi.c
+28-12 files

pkgng/pkgng 7ca6e24 — docs pkg-script.5, libpkg pkg_add.c pkg_jobs.c

scripts: a script exiting with status 3 made pkg exit(0) mid-transaction

pkg_script_run_child() called exit(0) from inside libpkg whenever a
package script, in any phase, exited with status 3. This dates from
983eb7236, which wanted the kernel package's post-install script to be
able to say "reboot before upgrading the rest" and was unsure how to
do it; it was never documented.

The effect was far wider than intended. A pre-deinstall script with
"exit 3" turned pkg delete into a successful no-op: the process ended
with status 0 before the package was unregistered. A post-deinstall
"exit 3" left the files removed but the package registered. A
post-install "exit 3" ended pkg upgrade right there with status 0, so
every package scheduled after it was silently not upgraded while cron
or configuration management saw success, and the deferred rc restarts,
transaction triggers and explicit lock release never ran. During an
upgrade the old package's pre-deinstall ran with the new package
registered inside an open transaction, so exit(0) rolled the
registration back and left .pkgtemp files on disk.

    [9 lines not shown]
DeltaFile
+56-1tests/frontend/shellscript.sh
+17-2libpkg/scripts.c
+16-0libpkg/pkg_jobs.c
+12-1src/add.c
+11-0docs/pkg-script.5
+8-1libpkg/pkg_add.c
+120-51 files not shown
+125-57 files

pkgng/pkgng 046ee8b — tests/frontend symlink_rootdir.sh

tests: the rootdir symlink escape is fixed

An intermediate symlink with an absolute target no longer redirects
an install onto the host.  An absolute symlink pointing inside the
rootdir is now refused rather than followed, which remains a deviation
from the previous behaviour and is still an expected failure.
DeltaFile
+5-5tests/frontend/symlink_rootdir.sh
+5-51 files

pkgng/pkgng 5f236cd — . configure.def, compat bsd_compat.h

libfetch: use a C locale for the protocol dates

The dates exchanged with a repository, the Last-Modified of a response
and the If-Modified-Since of a request, are always written in the C
locale.  http_parse_mtime() saved the locale of the process, replaced
it with the C one and restored it, which changes global state every
time a date is parsed and is not safe if the library is used from
several threads; the request side formatted the date in whatever the
process locale was.

Keep one C locale and use strptime_l() and strftime_l() with it, as
done in FreeBSD.

The functions are not available everywhere: configure checks for
xlocale.h, newlocale(), strptime_l() and strftime_l(), and the previous
behaviour is kept when they are missing.
DeltaFile
+41-4external/fetch/http.c
+9-0compat/bsd_compat.h
+5-1configure.def
+55-53 files

pkgng/pkgng eaa0c11 — libpkg/repo/binary query.c

repo: group names from the repository were used as printf formats

pkg_repo_binary_group_it_next() built the group's name and comment
with xasprintf() passing the repository-supplied string as the format
argument. A group named "%n%n%s" in the repository's groups file is
therefore interpreted by vasprintf(), giving a repository operator, or
anyone who can write the repository directory, a write-what-where in
every "pkg search" and "pkg install @group" run as root. A missing
name also passed a NULL format.

The strings are now copied with xstrdup(), entries without a string
name are skipped, and a missing comment becomes an empty string.
DeltaFile
+12-7libpkg/repo/binary/query.c
+12-71 files

pkgng/pkgng 2f41249 — libpkg pkg_ports.c

plist: heap underflow on a whitespace-only line

meta_file() trimmed trailing whitespace with a loop that read
line[len - 1] without first checking that len is non-zero. A plist
line consisting only of blanks (or a bare "@ ") reaches it as an
empty string after plist_parse_line() has skipped the leading blanks,
so the loop read and wrote NUL bytes backwards through the heap
buffer for as long as the preceding bytes happened to be whitespace.

A crafted pkg-plist handed to pkg create or pkg register could thus
corrupt the heap of the process building the package.

The trim loop now stops at the start of the string and an empty path
is rejected with an error.
DeltaFile
+6-1libpkg/pkg_ports.c
+6-11 files

pkgng/pkgng e9426ab — tests Makefile.in, tests/frontend symlink_rootdir.sh

tests: cover symlink handling inside a rootdir

A package may legitimately be installed through a directory symlink
already present in the target, so check the relative, absolute and
dangling cases.  The last case must not write outside of the rootdir;
it is currently an expected failure.
DeltaFile
+116-0tests/frontend/symlink_rootdir.sh
+1-0tests/Makefile.in
+117-02 files

pkgng/pkgng 7db9769 — docs pkg-keywords.5 pkg-lua-script.5

docs: Document how the lua script paths are rooted

pkg-lua-script(5): only io.open(), os.remove(), os.rename(), pkg.stat()
and pkg.readdir() resolve their paths relatively to the root directory
passed with -r, pkg.exec() and pkg.exec_capture() spawn the command on the
host and are therefore given host paths.

Document that pkg.stat() does not follow symbolic links, returns nil when
the file does not exist and the values the type field can take, and that
pkg.readdir() returns nil and an error message when the directory cannot
be opened.

pkg-keywords(5): document the %@ substitution next to %<number> and warn
that, the substitution being textual, a literal %1 in a lua string (e.g.
the replacement string of string.gsub()) is substituted as well.
DeltaFile
+54-8docs/pkg-lua-script.5
+13-2docs/pkg-keywords.5
+67-102 files

pkgng/pkgng 9642bb9 — libpkg triggers.c, tests/frontend triggers.sh

triggers: per-package triggers from a -r target ran on the host

When pkg operates on another root (-r), non-sandboxed transaction
triggers found inside that root are not executed but written to the
target's db directory, to be run later by "pkg triggers" from inside
the target: code from the target must not run on the host. Per-package
triggers bypassed that: triggers_execute_perpackage() called the Lua
runner with deferral disabled, so a "sandbox: false" trigger shipped
under the target's PKG_TRIGGERS_DIR was forked and executed on the
host as root, with the host's PATH and environment and pkg.exec
available.

A build host populating a jail or image with pkg -r would thus run
arbitrary code from any package present in the image on the next -r
operation touching a matching path.

Per-package triggers are now deferred like transaction triggers. The
deferred file gains "--pkgname", "--pkgversion" and "--upgrade" header
lines so that pkg triggers can hand the package context back to the

    [4 lines not shown]
DeltaFile
+55-12libpkg/triggers.c
+37-5tests/frontend/triggers.sh
+92-172 files

pkgng/pkgng 88a23e8 — libpkg pkg_delete.c pkg_add.c, libpkg/private utils.h

pkg_add: a symlink inside a -r root could redirect installs onto the host

All file operations during extraction and removal are *at() calls
relative to the root directory fd with the leading slash stripped, and
only the last path component is protected with O_EXCL or
AT_SYMLINK_NOFOLLOW. The kernel resolves every parent component, and
when one of them is a symlink with an absolute target, or a relative
one climbing above the root with "..", resolution restarts at the
process root rather than at the root fd. open_tempdir() even follows
symlinks on purpose when stat'ing the parents of a fresh install.

When pkg populates another root with -r (jails, images, build hosts)
a package shipping /usr/local/etc/periodic -> /etc/periodic followed
by a dependent package installing /usr/local/etc/periodic/daily/999.x
therefore wrote that file into the host's /etc/periodic/daily, and
pkg -r delete unlinked host files the same way. No script is needed,
so -I does not help, and Lua scripts, supposed to be confined to the
root fd, inherit the same gap.


    [6 lines not shown]
DeltaFile
+133-0libpkg/utils.c
+43-0tests/lib/utils.c
+29-1tests/frontend/add.sh
+10-0libpkg/pkg_add.c
+6-0libpkg/pkg_delete.c
+2-0libpkg/private/utils.h
+223-16 files