From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Joachim Wiberg <troglobit@gmail.com>
Cc: Matt Weber <matthew.weber@collins.com>, buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH v3 1/3] package/makedevs: allow recursive on directory with dangling symlinks
Date: Sat, 1 Jan 2022 14:32:18 +0100 [thread overview]
Message-ID: <20220101133218.GI3390456@scaer> (raw)
In-Reply-To: <20211223090800.1716321-2-troglobit@gmail.com>
Joachim, All,
On 2021-12-23 10:07 +0100, Joachim Wiberg spake thusly:
> When using BR2_ROOTFS_DEVICE_TABLE to change ownership of /etc, like so:
>
> /etc r -1 root wheel - - - - -
>
> makdevs fails due to it trying to chown() a dangling symlink:
*makedevs *its (really "its", and really not "it's")
Applied to master, thanks.
Regards,
Yann E. MORIN.
> makedevs: chown failed for /src/myLinux/output/build/buildroot-fs/ext2/target/etc/mtab: No such file or directory
> makedevs: line 25: recursive failed for /src/myLinux/output/build/buildroot-fs/ext2/target/etc: No such file or directory
> make[2]: *** [fs/ext2/ext2.mk:63: /src/myLinux/output/images/rootfs.ext2] Error 1
> make[1]: *** [Makefile:84: _all] Error 2
> make[1]: Leaving directory '/src/myLinux/buildroot'
>
> This patch changes chown() to lchown() in two cases in makedevs.c when
> the argument can be a symlink, dangling or not.
>
> In case the recursive operation includes a chmod() as well, explicitly
> exclude symlinks that are dangling, because chmod() always operates on
> the link target.
>
> Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
> ---
> package/makedevs/makedevs.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/package/makedevs/makedevs.c b/package/makedevs/makedevs.c
> index c57b964f5c..2796cd5e78 100644
> --- a/package/makedevs/makedevs.c
> +++ b/package/makedevs/makedevs.c
> @@ -440,11 +440,13 @@ void bb_show_usage(void)
> int bb_recursive(const char *fpath, const struct stat *sb,
> int tflag, struct FTW *ftwbuf){
>
> - if (chown(fpath, recursive_uid, recursive_gid) == -1) {
> + if (lchown(fpath, recursive_uid, recursive_gid) == -1) {
> bb_perror_msg("chown failed for %s", fpath);
> return -1;
> }
> - if (recursive_mode != -1) {
> +
> + /* chmod() is optional, also skip if dangling symlink */
> + if (recursive_mode != -1 && tflag == FTW_SL && access(fpath, F_OK)) {
> if (chmod(fpath, recursive_mode) < 0) {
> bb_perror_msg("chmod failed for %s", fpath);
> return -1;
> @@ -628,7 +630,7 @@ int main(int argc, char **argv)
> if (mknod(full_name_inc, mode, rdev) < 0) {
> bb_perror_msg("line %d: can't create node %s", linenum, full_name_inc);
> ret = EXIT_FAILURE;
> - } else if (chown(full_name_inc, uid, gid) < 0) {
> + } else if (lchown(full_name_inc, uid, gid) < 0) {
> bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc);
> ret = EXIT_FAILURE;
> } else if (chmod(full_name_inc, mode) < 0) {
> --
> 2.25.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2022-01-01 13:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-23 9:07 [Buildroot] [PATCH v3 0/3] package/makedevs: allow recursive on directory with symlinks Joachim Wiberg
2021-12-23 9:07 ` [Buildroot] [PATCH v3 1/3] package/makedevs: allow recursive on directory with dangling symlinks Joachim Wiberg
2022-01-01 13:32 ` Yann E. MORIN [this message]
2021-12-23 9:07 ` [Buildroot] [PATCH v3 2/3] .clang-format: initial import from Linux 5.15.6 Joachim Wiberg
2022-01-01 13:58 ` Yann E. MORIN
2021-12-23 9:08 ` [Buildroot] [PATCH v3 3/3] package/makedevs: coding style and whitespace cleanup Joachim Wiberg
2022-01-01 14:13 ` Yann E. MORIN
2022-01-01 14:26 ` Joachim Wiberg
2022-01-01 14:38 ` Yann E. MORIN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220101133218.GI3390456@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@buildroot.org \
--cc=matthew.weber@collins.com \
--cc=troglobit@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox