> On 16 Mar 2018, at 17:07, Peter Eisentraut <peter.eisentr...@2ndquadrant.com> 
> wrote:
> 
> On 3/15/18 12:13, Daniel Gustafsson wrote:

>> * The documentation for the passphrase command format states:
>> 
>>    "If the setting starts with -, then it will be ignored during a reload and
>>    the SSL configuration will not be reloaded if a passphrase is needed."
>> 
>> In run_ssl_passphrase_command() the leading ‘-‘ is however just shifted away
>> regardless of the state of is_server_start.
>> 
>> +   p = ssl_passphrase_command;
>> +
>> +   if (p[0] == '-')
>> +       p++;
>> +
>> 
>> The OpenSSL code is instead performing this in be_tls_init() in the below 
>> hunk:
>> 
>> +       if (ssl_passphrase_command[0] && ssl_passphrase_command[0] != '-')
>> 
>> In order to make this generic, shouldn’t we in run_ssl_passphrase_command() 
>> do
>> something along the lines of the below to ensure we aren’t executing the
>> passphrase callback during reloads?
>> 
>>    if (p[0] == '-')
>>    {
>>        /*
>>         * passphrase commands with a leading '-' are only invoked on server
>>         * start, and are ignored on reload.
>>         */
>>        if (!is_server_start)
>>            goto error;
>>        p++;
>>    }
> 
> We need the OpenSSL code to know whether the callback supports reloads,
> so it can call the dummy callback if not.

It makes sense for the OpenSSL code to know, I’m mostly wondering why
run_ssl_passphrase_command() isn’t doing the same thing wrt the leading ‘-‘?
ISTM that it should consider is_server_start as well to match the
documentation.

> Maybe this is a bit too cute.  We could instead add another setting
> "ssl_passphrase_command_support_reload”.

I think thats a good idea, this feels like an easy thing to be confused about
and get wrong (which I might have done with the above).

Either way, there is a clear path forward on this (the new setting or just
ignoring me due to being confused) so I am going to mark this ready for
committer as the remaining work is known and small.

cheers ./daniel

Reply via email to