From dc77c5968b046ae7d22d45a8fc78f3774276f807 Mon Sep 17 00:00:00 2001 From: Richard Ipsum Date: Wed, 3 Jul 2019 17:32:42 +0100 Subject: [PATCH] chown/chgrp: chown target not symlink by default chown on a symlink should only chown the symlink itself when -h is specified, when no options are provided the target should be chown'd. --- chgrp.c | 2 +- chown.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chgrp.c b/chgrp.c index 5d3a71b..7ee3553 100644 --- a/chgrp.c +++ b/chgrp.c @@ -18,7 +18,7 @@ chgrp(const char *path, struct stat *st, void *data, struct recursor *r) char *chownf_name; int (*chownf)(const char *, uid_t, gid_t); - if (r->follow == 'P' || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) { + if ((r->maxdepth == 0 && r->follow == 'P') || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) { chownf_name = "lchown"; chownf = lchown; } else { diff --git a/chown.c b/chown.c index d7dc8e0..c517acf 100644 --- a/chown.c +++ b/chown.c @@ -21,7 +21,7 @@ chownpwgr(const char *path, struct stat *st, void *data, struct recursor *r) char *chownf_name; int (*chownf)(const char *, uid_t, gid_t); - if (r->follow == 'P' || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) { + if ((r->maxdepth == 0 && r->follow == 'P') || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) { chownf_name = "lchown"; chownf = lchown; } else {