[Bug 221331] [PATCH] update for unlink(2) manpage

2020-05-19 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221331

Benedict Reuschling  changed:

   What|Removed |Added

 CC||b...@freebsd.org
 Resolution|--- |Overcome By Events
 Status|Open|Closed

--- Comment #2 from Benedict Reuschling  ---
This has been fixed a while ago.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
freebsd-doc@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-doc
To unsubscribe, send any mail to "freebsd-doc-unsubscr...@freebsd.org"


[Bug 221331] [PATCH] update for unlink(2) manpage

2019-11-08 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221331

Oleksandr Tymoshenko  changed:

   What|Removed |Added

 CC||d...@freebsd.org
  Component|Documentation   |Manual Pages
   Assignee|d...@freebsd.org |b...@freebsd.org

WHR  changed:

   What|Removed |Added

 CC||msl023...@gmail.com

--- Comment #1 from WHR  ---
There was a case that unlink(2) may return EISDIR.

Function kern_unlinkat calls namei(9) to find the parent directory of the file;
it will return EISDIR if the requested path was '/'.

Since '/' isn't a real link (but '/.' and '/..'), it can't be unlinked anyways.

Test:

# cat unlink.c 
#include 
#include 

int main(int argc, char **argv) {
if(argc != 2) {
fprintf(stderr, "Usage: %s \n", argv[0]);
return -1;
}
if(unlink(argv[1]) < 0) {
perror(argv[1]);
return 1;
}
return 0;
}
# gcc -Wall -O1 unlink.c -o unlink
# ./unlink /etc/
/etc/: Operation not permitted
# ./unlink /.
/.: Operation not permitted
# ./unlink /
/: Is a directory

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.
___
freebsd-doc@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-doc
To unsubscribe, send any mail to "freebsd-doc-unsubscr...@freebsd.org"


[Bug 221331] [PATCH] update for unlink(2) manpage

2017-08-08 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221331

Kubilay Kocak  changed:

   What|Removed |Added

 Status|New |Open
   Keywords||easy

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
freebsd-doc@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-doc
To unsubscribe, send any mail to "freebsd-doc-unsubscr...@freebsd.org"


[Bug 221331] [PATCH] update for unlink(2) manpage

2017-08-08 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221331

Bug ID: 221331
   Summary: [PATCH] update for unlink(2) manpage
   Product: Documentation
   Version: Latest
  Hardware: Any
OS: Any
Status: New
  Keywords: patch
  Severity: Affects Only Me
  Priority: ---
 Component: Documentation
  Assignee: freebsd-doc@FreeBSD.org
  Reporter: fnoyan...@yahoo.com
  Keywords: patch

Created attachment 185149
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=185149=edit
patch for the unlink(2) man page update

unlink(2) manpage states both EISDIR and EPERM are returned if the user
attempts to remove a directory. 

unlink(2) function calls kern_unlinkat(), which does not return EISDIR in any
case. [1]

Also, POSIX standard states that EPERM should be returned when unlinking a
directory and EISDIR is only used by Linux Standard Base (LSB).[1]

As the proof of concept, the code below shows only EPERM is returned while
attempting to unlink a directory;

~/code/test/unlink_test % ls -l
total 40
drwxr-xr-x  2 fnoyanisi  fnoyanisi   512 Aug  8 22:00 dummy/
-rwxr-xr-x  1 fnoyanisi  fnoyanisi  9135 Aug  8 22:03 unlink_test*
-rw-r--r--  1 fnoyanisi  fnoyanisi   222 Aug  8 22:25 unlink_test.c
~/code/test/unlink_test % cat unlink_test.c 
#include 
#include 
#include 
#include 

int main(int argc, char **argv){

if (unlinkat(argv[1])!=0)
printf("Error %d : %s\n",errno, strerror(errno));

return 0;
}
~/code/test/unlink_test % ./unlink_test dummy
Error 1 : Operation not permitted
~/code/test/unlink_test % 

With the attached patch file, the line which is in the ERRORS section and
states that [EISDIR] is returned by unlink(2) when unlinking a directory is
removed from the manual page.

unlink.2.fni -> working copy
unlink.2 -> unlink(2) manpage from revision 321776

Diff file was generated with the command below
diff -u unlink.2 unlink.2.fni > unlink.2.diff

Subversion revision details for the original unlink(2) manpage

/usr/src % svn info   
Path: .
Working Copy Root Path: /usr/src
URL: svn://svn.freebsd.org/base/release/11.1.0
Relative URL: ^/release/11.1.0
Repository Root: svn://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 321776
Node Kind: directory
Schedule: normal
Last Changed Author: gjb
Last Changed Rev: 321354
Last Changed Date: 2017-07-22 08:55:38 +1200 (Sat, 22 Jul 2017)

[1]
https://svnweb.freebsd.org/base/release/11.0.1/sys/kern/vfs_syscalls.c?revision=306421=markup#l1728
[2] http://pubs.opengroup.org/onlinepubs/9699919799/

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
freebsd-doc@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-doc
To unsubscribe, send any mail to "freebsd-doc-unsubscr...@freebsd.org"