Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Allan McRae
11075f6736 Add test to capture the linux-firmware upgrade issue
Signed-off-by: Allan McRae <allan@archlinux.org>
2025-07-24 12:47:26 +10:00
Allan McRae
7cd8010d65 Adjust PATH_MAX length tests using snprintf
The return value for snprintf does not include the null delimiter.
So tests for path length should use use '>= PATH_MAX'.

Signed-off-by: Allan McRae <allan@archlinux.org>
2025-06-22 10:00:11 +10:00
2 changed files with 28 additions and 2 deletions

View file

@ -84,7 +84,7 @@ static int sync_cleandb(const char *dbpath)
/* build the full path */
len = snprintf(path, PATH_MAX, "%s%s", dbpath, dname);
if(len > PATH_MAX) {
if(len >= PATH_MAX) {
pm_printf(ALPM_LOG_ERROR, _("could not remove %s%s: path exceeds PATH_MAX\n"),
dbpath, dname);
}
@ -245,7 +245,7 @@ static int sync_cleancache(int level)
/* build the full filepath */
len=snprintf(path, PATH_MAX, "%s%s", cachedir, ent->d_name);
if(len > PATH_MAX) {
if(len >= PATH_MAX) {
pm_printf(ALPM_LOG_ERROR, _("skipping %s%s: path exceeds PATH_MAX\n"),
cachedir, ent->d_name);
continue;

View file

@ -0,0 +1,26 @@
self.description = "directory replaced by symlink in another package (linux-firmware issue)"
lp = pmpkg("p", "1-1")
lp.files = ["d1/file",
"d2/file"]
self.addpkg2db("local", lp)
p1 = pmpkg("d")
p1.files = ["d1/file",
"d2 -> d1"]
self.addpkg2db("sync", p1)
p2 = pmpkg("p", "2-1")
p2.depends = ["d"]
self.addpkg2db("sync", p2)
self.args = "-Syu"
self.addrule("PACMAN_RETCODE=0")
self.addrule("PKG_EXIST=p")
self.addrule("PKG_EXIST=d")
self.addrule("FILE_TYPE=d1|dir")
self.addrule("FILE_TYPE=d2|link")
self.expectfailure = True