-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 09/01/12 15:32, Frederic Crozat wrote:
> Le vendredi 06 janvier 2012 à 18:19 +0100, David Sommerseth a écrit :
>> On 06/01/12 17:40, Frederic Crozat wrote:
>>> Le vendredi 06 janvier 2012 à 17:22 +0100, David Sommerseth a
>>> écrit :
>>>> On 12/12/11 18:57, Frederic Crozat wrote:
>>>>> Le lundi 31 octobre 2011 à 22:11 +0100, David Sommerseth a
>>>>> écrit :
>>>>>> On 31/10/11 16:30, Frederic Crozat wrote:
>>>> [...snip...]
>>>> 
>>>> Hey again, and thanks for this great rework!  I've looked
>>>> through it, and it looks a lot better now.  However ...
>>>> 
>>>>>> e) Consider to make use of openvpn_execve_check() or 
>>>>>> openvpn_execve() instead of the popen() - or make a popen()
>>>>>> variant which got similar error controls to popen() as
>>>>>> openvpn_execve*() functions.  I also think that this
>>>>>> execution should honour the --script-security setting (which
>>>>>> is implicitly checked for with openvpn_execve())
>>>> 
>>>> I like the approach of the openvpn_popen().  However, there are
>>>> a few things.
>>>> 
>>>> +              if (pipe(pipe_stdout) == 0) { +                   pid = fork
>>>> (); +                    if (pid == (pid_t)0) /* child side */ +           
>>>>         { +
>>>> close(pipe_stdout[0]); +                     dup2(pipe_stdout[1],1); +
>>>> execve (cmd, argv, envp); +                          exit (127); +         
>>>>         } +                   else
>>>> if (pid < (pid_t)0) /* fork failed */ +                    ; ^^^^^  No 
>>>> error
>>>> message if fork() fails? And is the (pid_t) typecasting really
>>>> needed?
>>> 
>>> Well, I stole the code from openvpn_execve function ;)) I'm ok to
>>> change it, but it would be better for both function to stay 
>>> similar, I think.
>> 
>> Well, now you got me into looking deeper :) ... First of all, there
>> might be^W^W are code paths in openvpn which isn't pretty.  And we
>> should fix up that as we find them.
>> 
>> I'm still in the opinion that not reporting that the execution isn't
>> proper behaviour.  Even though, it's not likely that fork() fails
>> often, unless the system is low on memory or RLIMIT_NPROC is
>> exceeded.  But informing that the execution failed is still
>> important for debugging.
>> 
>> I'd say, let's at least add an error message here, using M_ERR.
>> That way, we'll get the errno message returned as well.  I'll take
>> care of posting a proper fix for openvpn_execve().  You may
>> disregard my (pid_t) comment for now.
> 
> Done.
> 
>>>> +                else /* parent side */ +                  { +
>>>> ret=pipe_stdout[0]; +                          close(pipe_stdout[1]); +    
>>>>                 } +
>>>> }
>>>> 
>>>> And:
>>>> 
>>>> +  else +    { +      msg (M_WARN, "openvpn_popen: called with
>>>> empty argv"); +    }
>>>> 
>>>> This should probably be M_FATAL and not M_WARN.  If
>>>> openvpn_popen() receives an empty argv array, it most likely is
>>>> due to very bad programming.  So halting execution is quite
>>>> appropriate in my eyes.
>>> 
>>> Again, I stole this part from openvpn_execve, but I'll change it
>>> to M_FATAL.
>> 
>> I'll send a fix for this as well, in regards to openvpn_execve()
> 
> Ok :)
> 
>>>> In get_console_input_systemd() you do:
>>>> 
>>>> +  *input = 0;
>>>> 
>>>> I think it would be better to do: CLEAR(*input) instead.  Just
>>>> setting the first byte to 0, will not solve any leak
>>>> possibilities.  An alternative is to use memset() directly,
>>>> which the CLEAR() macro uses (see basic.h:47), but we prefer to
>>>> use CLEAR() over memset() directly.
>>> 
>>> done (and I've also fixed some missing spaces in various
>>> location).
>>> 
>>> See the new version attached.
>> 
>> Goodie!  I presume you did some compile and sanity testing before 
>> submitting the patch, so that it won't bite our compile farm :)  I
>> think we have a F15 or F16 box (which uses systemd) in the farm, so
>> we can enable systemd features on that box.
> 
> Well, the initial patch has been shipped as part of openSUSE 12.1 and
> so far, I didn't got any bug report about it, so either it is working 
> perfectly or nobody is able to connect home using their VPN and
> therefore can complain ;) I'd tested again attached patch and it is
> still working fine.

I ACKed the patch, and it's just pushed out to master branches on both
- -testing and -stable.

commit 9449e6a9eba30c9ed054f57d630a88c9f087080f


kind regards,

David Sommerseth
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk8MYRYACgkQDC186MBRfrqV9wCgl0fxhbpvY0NMav2tJkbT75T+
BaYAnRmU345zp+3+KdMlBWaAkXMHmygS
=IFYf
-----END PGP SIGNATURE-----

Reply via email to