@@ -0,0 +1,27 @@
|
||||
From f3bdb28e57e5e38c1e89347976c7d61a181eec32 Mon Sep 17 00:00:00 2001
|
||||
From: Samanta Navarro <ferivoz@riseup.net>
|
||||
Date: Sun, 4 Sep 2022 11:54:19 +0000
|
||||
Subject: [PATCH 1/2] copy_tree: use fchmodat instead of chmod
|
||||
|
||||
Fixes regression introduced in faeab50e710131816b261de66141524898c2c487
|
||||
for setups configured without acl support.
|
||||
---
|
||||
libmisc/copydir.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmisc/copydir.c b/libmisc/copydir.c
|
||||
index 5605f6fe..b6025f4c 100644
|
||||
--- a/libmisc/copydir.c
|
||||
+++ b/libmisc/copydir.c
|
||||
@@ -529,7 +529,7 @@ static int copy_dir (const struct path_info *src, const struct path_info *dst,
|
||||
|| ( (perm_copy_path (src, dst, &ctx) != 0)
|
||||
&& (errno != 0))
|
||||
#else /* !WITH_ACL */
|
||||
- || (chmod (dst, statp->st_mode) != 0)
|
||||
+ || (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0)
|
||||
#endif /* !WITH_ACL */
|
||||
#ifdef WITH_ATTR
|
||||
/*
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From 10cd68e0f04b48363eb32d2c6e168b358fb27810 Mon Sep 17 00:00:00 2001
|
||||
From: Samanta Navarro <ferivoz@riseup.net>
|
||||
Date: Sun, 4 Sep 2022 11:58:03 +0000
|
||||
Subject: [PATCH 2/2] copy_tree: do not block on fifos
|
||||
|
||||
Fixes regression introduced in faeab50e710131816b261de66141524898c2c487.
|
||||
|
||||
If a directory contains fifos, then openat blocks until the other side
|
||||
of the fifo is connected as well.
|
||||
|
||||
This means that users can prevent "usermod -m" from completing if their
|
||||
home directories contain at least one fifo.
|
||||
---
|
||||
libmisc/copydir.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libmisc/copydir.c b/libmisc/copydir.c
|
||||
index b6025f4c..5fb47da0 100644
|
||||
--- a/libmisc/copydir.c
|
||||
+++ b/libmisc/copydir.c
|
||||
@@ -126,12 +126,12 @@ static int perm_copy_path(const struct path_info *src,
|
||||
{
|
||||
int src_fd, dst_fd, ret;
|
||||
|
||||
- src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
+ src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (src_fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
- dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
+ dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (dst_fd < 0) {
|
||||
(void) close (src_fd);
|
||||
return -1;
|
||||
@@ -152,12 +152,12 @@ static int attr_copy_path(const struct path_info *src,
|
||||
{
|
||||
int src_fd, dst_fd, ret;
|
||||
|
||||
- src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
+ src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (src_fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
- dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
+ dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (dst_fd < 0) {
|
||||
(void) close (src_fd);
|
||||
return -1;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
Vendored
+2
@@ -3,6 +3,8 @@
|
||||
#901_testsuite_gcov
|
||||
|
||||
0001-chage-Fix-regression-in-print_date.patch
|
||||
0002-copy_tree-use-fchmodat-instead-of-chmod.patch
|
||||
0003-copy_tree-do-not-block-on-fifos.patch
|
||||
008_login_log_failure_in_FTMP
|
||||
301_lastlog_faillog_do_not_reset_non-existent_data
|
||||
401_cppw_src.dpatch
|
||||
|
||||
Reference in New Issue
Block a user