> On 7 May 2017, at 20:15, Steffan Karger <stef...@karger.me> wrote:
> 
> Hi,
> 
> On 07-05-17 14:03, Antonio Quartulli wrote:
>> 
>>> On 7 May 2017, at 19:56, Antonio Quartulli <a...@unstable.cc> wrote:
>>> 
>>>> On 4 May 2017, at 06:57, David Sommerseth 
>>>> <open...@sf.lists.topphemmelig.net> wrote:
>>>> 
>>>> On 03/05/17 22:15, Steffan Karger wrote:
>>>>>> +        switch (opt->verify_hash_algo)
>>>>>> +        {
>>>>>> +        case MD_SHA1:
>>>>>> +            ca_hash = x509_get_sha1_fingerprint(cert, &gc);
>>>>>> +            break;
>>>>>> +
>>>>>> +        case MD_SHA256:
>>>>>> +            ca_hash = x509_get_sha256_fingerprint(cert, &gc);
>>>>>> +            break;
>>>>>> +        }
>>>>> This switch should have a default: case that fails, otherwise we might
>>>>> be reading from uninitialized memory.  And you might want to consider
>>>>> initializing ca_hash to "{ 0 }".  (But you still need to default: case,
>>>>> otherwise you'll be doing a 0-length memcmp()).
>>>> 
>>>> *grmbl*  I was sure the enumerated type would make the compiler
>>>> complain, but I must have mixed this with some C++ stuff I read not too
>>>> long ago.  But my stupid test allows assigning an enumerated type to any
>>>> invalid value as well.
>>>> 
>>> 
>>> You are right.
>>> The compiler would have complained if you had left out any value from the 
>>> enum set.
>>> But the enum set is made of those two values only, hence a default case is 
>>> not plausible unless you
>>> assign verify_hash_algo with a value out of the enum set (but then you 
>>> should have a compiler warning
>>> on the assignment).
>>> 
>> 
>> I forgot: the good point of *not* having a default is that when you will add 
>> a new enum value for that
>> particular enum type, the compiler will throw warnings for every switch 
>> block you have, informing you
>> that now they need to be updated. Having a default will leave you with 
>> manually check the various
>> code spots.
> 
> This only holds when compiling with -Wall, which we do not do by default
> (because our current code would emit quite some warnings).
> 
> If we would fix our code and compile with -Wall -Werror, I'd agree.  But
> as long as we don't, I prefer a defensive code style where I can exclude
> undefined behaviour just by looking at the code.
> 

Agreed. This sounds like a call for a cleanup mission :]

Cheers,

--
Antonio Quartulli

Attachment: signature.asc
Description: Message signed with OpenPGP

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to