Re: cvs: php4 /ext/session mod_files.c

From: Date: Tue, 23 Apr 2002 03:16:47 +0000
Subject: Re: cvs: php4 /ext/session mod_files.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-11327@lists.php.net to get a copy of this message
Should this fix be MFH to the PHP_4_2_0 branch? And are there any bug reports which might have been caused by this? --Jani On Mon, 22 Apr 2002, Sascha Schumann wrote: >sas Mon Apr 22 16:39:25 2002 EDT > > Modified files: > /php4/ext/session mod_files.c > Log: > Set the close-on-exec flag for fds. Child processes should not inherit > the fd. > > Also rip out the broken O_EXCL use. Our file names are not unique and > this left a small window open where creating a session file would fail > (a, b notice that the file does not exist; a creates the file successfully; > b tries to create, but fails due to O_EXCL). > > >Index: php4/ext/session/mod_files.c >diff -u php4/ext/session/mod_files.c:1.72 php4/ext/session/mod_files.c:1.73 >--- php4/ext/session/mod_files.c:1.72 Wed Mar 6 06:49:51 2002 >+++ php4/ext/session/mod_files.c Mon Apr 22 16:39:24 2002 >@@ -16,7 +16,7 @@ > +----------------------------------------------------------------------+ > */ > >-/* $Id: mod_files.c,v 1.72 2002/03/06 11:49:51 sas Exp $ */ >+/* $Id: mod_files.c,v 1.73 2002/04/22 20:39:24 sas Exp $ */ > > #include "php.h" > >@@ -141,20 +141,17 @@ > > data->lastkey = estrdup(key); > >-#ifdef O_EXCL >- data->fd = VCWD_OPEN(buf, O_RDWR | O_BINARY); >- >- if (data->fd == -1 && errno == ENOENT) >- data->fd = VCWD_OPEN_MODE(buf, O_EXCL | O_RDWR | O_CREAT | O_BINARY, 0600); >-#else > data->fd = VCWD_OPEN_MODE(buf, O_CREAT | O_RDWR | O_BINARY, 0600); >-#endif >- if (data->fd != -1) >+ >+ if (data->fd != -1) { > flock(data->fd, LOCK_EX); >- >- if (data->fd == -1) >+ if (fcntl(data->fd, F_SETFD, 1)) { >+ php_error(E_WARNING, "fcntl(%d, F_SETFD, 1) failed: %s (%d)", data->fd, >strerror(errno), errno); >+ } >+ } else { > php_error(E_WARNING, "open(%s, O_RDWR) failed: %s (%d)", buf, > strerror(errno), errno); >+ } > } > } > > > > > --

« previous php.cvs (#11327) next »