Bug 31742

Summary: open("/dev/null", O_TRUNC) broken on -current
Product: Base System Reporter: josb <josb>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 5.0-CURRENT   
Hardware: Any   
OS: Any   

Description josb 2001-11-04 01:10:01 UTC
    open("/dev/null", O_TRUNC) fails with EPERM.

How-To-Repeat: 
lizzy:/tmp% cat c.c
#include <stdio.h>
#include <fcntl.h>

int
main(int argc, char *argv[])
{
    char *s = "string";
    int fd;
    int flag = 0;

    if (argc > 1) flag = O_TRUNC;
    if ((fd = open("/dev/null", O_CREAT|O_WRONLY|flag)) == -1)
        err(1, "open");
    write(fd, s, strlen(s));
    close(fd);
    exit(0);
}
lizzy:/tmp% make c
cc -O -pipe -march=pentiumpro     c.c  -o c
lizzy:/tmp% ./c
lizzy:/tmp% ./c 1
c: open: Operation not permitted
lizzy:/tmp%
Comment 1 arr freebsd_committer freebsd_triage 2001-11-04 04:20:48 UTC
On 4 Nov 2001, Jos Backus wrote:
:>Quarter:        
:>Keywords:       
:>Date-Required:
:>Class:          sw-bug
:>Submitter-Id:   current-users
:>Arrival-Date:   Sat Nov 03 17:10:01 PST 2001
:>Closed-Date:
:>Last-Modified:
:>Originator:     Jos Backus
:>Release:        FreeBSD 5.0-CURRENT i386
:>Organization:
:none
:>Environment:
:System: FreeBSD lizzy.bugworks.com 5.0-CURRENT FreeBSD 5.0-CURRENT #17: Sat Nov 3 15:04:31 PST 2001 jos@lizzy.bugworks.com:/disk0/usr/obj/usr/src/sys/LIZZY i386
:
:lizzy:/tmp% ls -ld /dev
:dr-xr-xr-x  4 root  wheel  0 Nov  3 07:15 /dev
:lizzy:/tmp% ls -l /dev/null 
:crw-rw-rw-  1 root  wheel    2,   2 Nov  3 17:04 /dev/null
:lizzy:/tmp% 
:
:>Description:
:
:    open("/dev/null", O_TRUNC) fails with EPERM.
:
:>How-To-Repeat:
:
:lizzy:/tmp% cat c.c
:#include <stdio.h>
:#include <fcntl.h>
:
:int
:main(int argc, char *argv[])
:{
:    char *s = "string";
:    int fd;
:    int flag = 0;
:
:    if (argc > 1) flag = O_TRUNC;
:    if ((fd = open("/dev/null", O_CREAT|O_WRONLY|flag)) == -1)
:        err(1, "open");
:    write(fd, s, strlen(s));
:    close(fd);
:    exit(0);
:}
:lizzy:/tmp% make c
:cc -O -pipe -march=pentiumpro     c.c  -o c
:lizzy:/tmp% ./c
:lizzy:/tmp% ./c 1
:c: open: Operation not permitted
:lizzy:/tmp% 
:
:>Fix:
:>Release-Note:
:>Audit-Trail:
:>Unformatted:
:
:To Unsubscribe: send mail to majordomo@FreeBSD.org
:with "unsubscribe freebsd-bugs" in the body of the message
:

--------------------------------------------------------------
Andrew R. Reiter	"Nothing shocks me.  I'm a scientist."
arr@watson.org			- Indiana Jones
arr@FreeBSD.org
--------------------------------------------------------------
Comment 2 arr freebsd_committer freebsd_triage 2001-11-04 04:31:17 UTC
I was unable to reproduce this.  Used the same code and:

root@rakahanga:(test)$ ls -dl /dev
drwxr-xr-x  4 root  wheel  0 Nov  3 18:00 /dev
root@rakahanga:(test)$ ls -al /dev/null
crw-rw-rw-  1 root  wheel    2,   2 Nov  3 21:29 /dev/null
root@rakahanga:(test)$
root@rakahanga:(test)$ ./devnull-perm 1
root@rakahanga:(test)$
uid=1000
andrewr@rakahanga:(test)$ ./devnull-perm 1
andrewr@rakahanga:(test)$

any thoughts?

Andrew

On 4 Nov 2001, Jos Backus wrote:
:
:>Number:         31742
:>Category:       kern
:>Synopsis:       open("/dev/null", O_TRUNC) broken on -current
:>Confidential:   no
:>Severity:       serious
:>Priority:       high
:>Responsible:    freebsd-bugs
:>State:          open
:>Quarter:        
:>Keywords:       
:>Date-Required:
:>Class:          sw-bug
:>Submitter-Id:   current-users
:>Arrival-Date:   Sat Nov 03 17:10:01 PST 2001
:>Closed-Date:
:>Last-Modified:
:>Originator:     Jos Backus
:>Release:        FreeBSD 5.0-CURRENT i386
:>Organization:
:none
:>Environment:
:System: FreeBSD lizzy.bugworks.com 5.0-CURRENT FreeBSD 5.0-CURRENT #17: Sat Nov 3 15:04:31 PST 2001 jos@lizzy.bugworks.com:/disk0/usr/obj/usr/src/sys/LIZZY i386
:
:lizzy:/tmp% ls -ld /dev
:dr-xr-xr-x  4 root  wheel  0 Nov  3 07:15 /dev
:lizzy:/tmp% ls -l /dev/null 
:crw-rw-rw-  1 root  wheel    2,   2 Nov  3 17:04 /dev/null
:lizzy:/tmp% 
:
:>Description:
:
:    open("/dev/null", O_TRUNC) fails with EPERM.
:
:>How-To-Repeat:
:
:lizzy:/tmp% cat c.c
:#include <stdio.h>
:#include <fcntl.h>
:
:int
:main(int argc, char *argv[])
:{
:    char *s = "string";
:    int fd;
:    int flag = 0;
:
:    if (argc > 1) flag = O_TRUNC;
:    if ((fd = open("/dev/null", O_CREAT|O_WRONLY|flag)) == -1)
:        err(1, "open");
:    write(fd, s, strlen(s));
:    close(fd);
:    exit(0);
:}
:lizzy:/tmp% make c
:cc -O -pipe -march=pentiumpro     c.c  -o c
:lizzy:/tmp% ./c
:lizzy:/tmp% ./c 1
:c: open: Operation not permitted
:lizzy:/tmp% 
:
:>Fix:
:>Release-Note:
:>Audit-Trail:
:>Unformatted:
:
:To Unsubscribe: send mail to majordomo@FreeBSD.org
:with "unsubscribe freebsd-bugs" in the body of the message
:

--
Andrew R. Reiter
arr@watson.org
arr@FreeBSD.org
Comment 3 Poul-Henning Kamp 2001-11-04 08:31:04 UTC
I saw something like that a couple of days ago, but it works
on my current box now.  Is this on an up-to-date -current box ?

Poul-Henning

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.
Comment 4 josb 2001-11-04 21:02:42 UTC
On Sun, Nov 04, 2001 at 09:31:04AM +0100, Poul-Henning Kamp wrote:
> I saw something like that a couple of days ago, but it works
> on my current box now.  Is this on an up-to-date -current box ?

Yes. And updating to devfs_vnops.c 1.32 fixed the problem. Thanks again!

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
josb@cncdsl.com     _/_/   _/_/_/            use Std::Disclaimer;
Comment 5 arr freebsd_committer freebsd_triage 2001-11-06 01:00:16 UTC
State Changed
From-To: open->closed

Already fixed.