> 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. Cheers, -- Antonio Quartulli
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