Re: [PATCH] Detail all X509_V_ERRs

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Thu, 24 Mar 2011 10:09:07 -0600

On 03/24/2011 04:48 AM, Tsantilas Christos wrote:

> This simple patch provide %D details for all SSL errors documented at
> http://www.openssl.org/docs/apps/verify.html
>
> This patch also adds a std::map based structure to optimize the ssl
> error description retrieval.

> + const char *err = getErrorDescr(error_no);
> + if (!err)
> + return "[Not available]";
> + else
> + return err;
> +

Consider a shorter/safer version:

if (const char *err = getErrorDescr(error_no))
    return err;
return "[Not available]";

> +//Use std::map to optimize search
> +std::map<Ssl::ssl_error_t, SslErrorDetailEntry *> TheSslDetailMap;
...
> + std::map<Ssl::ssl_error_t, SslErrorDetailEntry *>::iterator it;
> + for (it=TheSslDetailMap.begin(); it != TheSslDetailMap.end(); ++it) {
> + if (strcmp(name, it->second->name) == 0)
> + return it->second->value;
> }

Consider a more polished and slightly safer version:

> typedef std::map<Ssl::ssl_error_t, SslErrorDetailEntry *> SslErrorDetails;
> static SslErrorDetails TheSslDetailMap;
> ...
> typedef SslErrorDetails::const_iterator SEDCI;
> for (SEDCI i = TheSslDetailMap.begin(); i != TheSslDetailMap.end(); ++i) {
> ...

The SslErrorDetails type may be used here as well (also correcting for
const-ness):

> + const SslErrorDetails::const_iterator it = TheSslDetailMap.find(value);
> + if (it != TheSslDetailMap.end())

I would also rename TheSslDetailMap to TheSslDetails because the code
does not really care about the exact index structure. For example, when
hash_map becomes easily portable, we can start using that instead.

Thank you,

Alex.
Received on Thu Mar 24 2011 - 16:09:17 MDT

This archive was generated by hypermail 2.2.0 : Fri Mar 25 2011 - 12:00:17 MDT