You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Ruediger Pluem <rp...@apache.org> on 2007/09/29 00:53:40 UTC

Re: svn commit: r580486 - in /apr/apr/trunk: include/apr_thread_proc.h threadproc/unix/proc.c


On 09/28/2007 11:04 PM, wrowe@apache.org wrote:
> Author: wrowe
> Date: Fri Sep 28 14:04:47 2007
> New Revision: 580486
> 
> URL: http://svn.apache.org/viewvc?rev=580486&view=rev
> Log:
> Introduce APR_NO_FILE as an option for any of the three stdio streams
> to cause the specified streams to be closed to the child process, 
> when the caller has chosen that flag via apr_procattr_io_set().
> 
> ALSO; solve a serious flaw where we attempted to dup2 to a non existant
> file if the user had not already called apr_procattr_io_set()!
> 
> The Unix implementation.
> 
> Modified:
>     apr/apr/trunk/include/apr_thread_proc.h
>     apr/apr/trunk/threadproc/unix/proc.c
> 

> Modified: apr/apr/trunk/threadproc/unix/proc.c
> URL: http://svn.apache.org/viewvc/apr/apr/trunk/threadproc/unix/proc.c?rev=580486&r1=580485&r2=580486&view=diff
> ==============================================================================
> --- apr/apr/trunk/threadproc/unix/proc.c (original)
> +++ apr/apr/trunk/threadproc/unix/proc.c Fri Sep 28 14:04:47 2007

> @@ -551,15 +598,15 @@
>      }
>  
>      /* Parent process */
> -    if (attr->child_in) {
> +    if ((attr->child_in && (attr->child_in->filedes == -1)) {
>          apr_file_close(attr->child_in);
>      }
>  
> -    if (attr->child_out) {
> +    if ((attr->child_out) && (attr->child_out->filedes == -1) {
>          apr_file_close(attr->child_out);
>      }
>  
> -    if (attr->child_err) {
> +    if ((attr->child_err) && (attr->child_err->filedes == -1) {
>          apr_file_close(attr->child_err);
>      }


Shouldn't this be filedes != -1 instead?
I see no sense in closing invalid fds while keeping valid ones open that
would have been closed before the patch.

Regards

RĂ¼diger


Re: svn commit: r580486 - in /apr/apr/trunk: include/apr_thread_proc.h threadproc/unix/proc.c

Posted by Ruediger Pluem <rp...@apache.org>.

On 09/29/2007 12:53 AM, Ruediger Pluem wrote:
> 
> On 09/28/2007 11:04 PM, wrowe@apache.org wrote:
>> Author: wrowe
>> Date: Fri Sep 28 14:04:47 2007
>> New Revision: 580486
>>
>> URL: http://svn.apache.org/viewvc?rev=580486&view=rev
>> Log:
>> Introduce APR_NO_FILE as an option for any of the three stdio streams
>> to cause the specified streams to be closed to the child process, 
>> when the caller has chosen that flag via apr_procattr_io_set().
>>
>> ALSO; solve a serious flaw where we attempted to dup2 to a non existant
>> file if the user had not already called apr_procattr_io_set()!
>>
>> The Unix implementation.
>>
>> Modified:
>>     apr/apr/trunk/include/apr_thread_proc.h
>>     apr/apr/trunk/threadproc/unix/proc.c
>>
> 
>> Modified: apr/apr/trunk/threadproc/unix/proc.c
>> URL: http://svn.apache.org/viewvc/apr/apr/trunk/threadproc/unix/proc.c?rev=580486&r1=580485&r2=580486&view=diff
>> ==============================================================================
>> --- apr/apr/trunk/threadproc/unix/proc.c (original)
>> +++ apr/apr/trunk/threadproc/unix/proc.c Fri Sep 28 14:04:47 2007
> 
>> @@ -551,15 +598,15 @@
>>      }
>>  
>>      /* Parent process */
>> -    if (attr->child_in) {
>> +    if ((attr->child_in && (attr->child_in->filedes == -1)) {
>>          apr_file_close(attr->child_in);
>>      }
>>  
>> -    if (attr->child_out) {
>> +    if ((attr->child_out) && (attr->child_out->filedes == -1) {
>>          apr_file_close(attr->child_out);
>>      }
>>  
>> -    if (attr->child_err) {
>> +    if ((attr->child_err) && (attr->child_err->filedes == -1) {
>>          apr_file_close(attr->child_err);
>>      }
> 
> 
> Shouldn't this be filedes != -1 instead?
> I see no sense in closing invalid fds while keeping valid ones open that
> would have been closed before the patch.

Ping?

Regards

RĂ¼diger