void-packages/srcpkgs/xbps/patches/56ae190.patch

30 lines
1,011 B
Diff

commit 56ae1907b9d588910a5e4712fdaa5784c1641f14
Author: Duncan Overbruck <mail@duncano.de>
Date: Tue Aug 13 12:53:01 2019 +0200
lib/package_alternatives.c: check if alternative is a symlink before removing it
diff --git lib/package_alternatives.c lib/package_alternatives.c
index 9b4d0027..5e4f2b36 100644
--- lib/package_alternatives.c
+++ lib/package_alternatives.c
@@ -111,6 +111,7 @@ static int
remove_symlinks(struct xbps_handle *xhp, xbps_array_t a, const char *grname)
{
unsigned int i, cnt;
+ struct stat st;
cnt = xbps_array_count(a);
for (i = 0; i < cnt; i++) {
@@ -132,6 +133,11 @@ remove_symlinks(struct xbps_handle *xhp, xbps_array_t a, const char *grname)
} else {
lnk = xbps_xasprintf("%s%s", xhp->rootdir, l);
}
+ if (lstat(lnk, &st) == -1 || !S_ISLNK(st.st_mode)) {
+ free(lnk);
+ free(l);
+ continue;
+ }
xbps_set_cb_state(xhp, XBPS_STATE_ALTGROUP_LINK_REMOVED, 0, NULL,
"Removing '%s' alternatives group symlink: %s", grname, l);
unlink(lnk);