Re: [Toybox] rm -rf doesn't chmod high enough
On Mon, Sep 22, 2014 at 08:19:21AM -0500, Rob Landley wrote: On 09/20/14 08:22, Felix Janda wrote: Isaac Dunham wrote: [..] A trickier bug is that rm -r dir will skip dir, saying rm: dir: is a directory I guess the fix involves rm -r calling rmdir instead of unlink. unlinkat() also removes directories when given AT_REMOVEDIR. The following patch makes rm pass the tests and it still asks me when I try to remove a readonly dir. -Felix diff -r 434c4ae19f05 toys/posix/rm.c --- a/toys/posix/rm.c Thu Sep 18 18:07:58 2014 -0500 +++ b/toys/posix/rm.c Sat Sep 20 15:19:09 2014 +0200 @@ -50,7 +50,6 @@ // Handle chmod 000 directories when -f if (faccessat(fd, try-name, R_OK, AT_SYMLINK_NOFOLLOW)) { if (toys.optflags FLAG_f) wfchmodat(fd, try-name, 0700); - else goto skip; } if (!try-again) return DIRTREE_COMEAGAIN; using = AT_REMOVEDIR; I'm confused: rm is currently passing for me? scripts/test.sh rm passes, and mkdir blah; rm -r blah also works for me... How do I reproduce the failure? (Try on fedora maybe?) Both rm -r tests fail on Alpine Linux (musl) for me. rm -rf passes. And the mount test hangs in an infinite loop for me. Per strace, it's not doing any syscalls. Workaround-hit it with a hammer: while killall mount; do sleep 1; done (I'll be poking at that, if I get the time...) Thanks, Isaac Dunham ___ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net
Re: [Toybox] rm -rf doesn't chmod high enough
On 09/20/14 08:22, Felix Janda wrote: Isaac Dunham wrote: [..] A trickier bug is that rm -r dir will skip dir, saying rm: dir: is a directory I guess the fix involves rm -r calling rmdir instead of unlink. unlinkat() also removes directories when given AT_REMOVEDIR. The following patch makes rm pass the tests and it still asks me when I try to remove a readonly dir. -Felix diff -r 434c4ae19f05 toys/posix/rm.c --- a/toys/posix/rm.c Thu Sep 18 18:07:58 2014 -0500 +++ b/toys/posix/rm.c Sat Sep 20 15:19:09 2014 +0200 @@ -50,7 +50,6 @@ // Handle chmod 000 directories when -f if (faccessat(fd, try-name, R_OK, AT_SYMLINK_NOFOLLOW)) { if (toys.optflags FLAG_f) wfchmodat(fd, try-name, 0700); - else goto skip; } if (!try-again) return DIRTREE_COMEAGAIN; using = AT_REMOVEDIR; I'm confused: rm is currently passing for me? scripts/test.sh rm passes, and mkdir blah; rm -r blah also works for me... How do I reproduce the failure? (Try on fedora maybe?) Rob ___ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net
Re: [Toybox] rm -rf doesn't chmod high enough
Isaac Dunham wrote: [..] A trickier bug is that rm -r dir will skip dir, saying rm: dir: is a directory I guess the fix involves rm -r calling rmdir instead of unlink. unlinkat() also removes directories when given AT_REMOVEDIR. The following patch makes rm pass the tests and it still asks me when I try to remove a readonly dir. -Felix diff -r 434c4ae19f05 toys/posix/rm.c --- a/toys/posix/rm.c Thu Sep 18 18:07:58 2014 -0500 +++ b/toys/posix/rm.c Sat Sep 20 15:19:09 2014 +0200 @@ -50,7 +50,6 @@ // Handle chmod 000 directories when -f if (faccessat(fd, try-name, R_OK, AT_SYMLINK_NOFOLLOW)) { if (toys.optflags FLAG_f) wfchmodat(fd, try-name, 0700); - else goto skip; } if (!try-again) return DIRTREE_COMEAGAIN; using = AT_REMOVEDIR; ___ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net