diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-06-27 00:26:59 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-06-27 00:26:59 +0000 |
commit | 9e37076f2b8514a010008db44def4355e52379c2 (patch) | |
tree | 479f9848ff20c704e12b8a463cea629e51ab39e1 /source3/smbd/uid.c | |
parent | 94818add6c652c61d424dcb9e12f220dde05ddcf (diff) | |
download | samba-9e37076f2b8514a010008db44def4355e52379c2.tar.gz samba-9e37076f2b8514a010008db44def4355e52379c2.tar.xz samba-9e37076f2b8514a010008db44def4355e52379c2.zip |
shmem.c: Changed debug to higher level
uid.c: Stop smbrun from deleting device files.
util.c: Added EAGAIN to known error list.
Jeremy (jallison@whistle.com)
(This used to be commit c07db8d8e7e4a421501a08efe999e9ccd7337855)
Diffstat (limited to 'source3/smbd/uid.c')
-rw-r--r-- | source3/smbd/uid.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index 7a903e05511..0cf1c217a9b 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -339,7 +339,9 @@ the child as it may leave the caller in a privilaged state. static BOOL setup_stdout_file(char *outfile,BOOL shared) { int fd; + struct stat st; mode_t mode = S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH; + int flags = O_RDWR|O_CREAT|O_TRUNC|O_EXCL; close(1); @@ -354,9 +356,15 @@ static BOOL setup_stdout_file(char *outfile,BOOL shared) #endif } - /* now create the file with O_EXCL set */ - unlink(outfile); - fd = open(outfile,O_RDWR|O_CREAT|O_TRUNC|O_EXCL,mode); + if(stat(outfile, &st) == 0) { + /* Check we're not deleting a device file. */ + if(st.st_mode & S_IFREG) + unlink(outfile); + else + flags = O_RDWR; + } + /* now create the file */ + fd = open(outfile,flags,mode); if (fd == -1) return False; |