Difference between revisions of "Talk:Libcrypto API"

From OpenSSLWiki
Jump to: navigation, search
(Initialization and engines?)
 
(Best practices for printing errors: new section)
Line 6: Line 6:
  
 
--[[User:Ppelleti|Ppelleti]] 18:05, 3 March 2013 (UTC)
 
--[[User:Ppelleti|Ppelleti]] 18:05, 3 March 2013 (UTC)
 +
 +
== Best practices for printing errors ==
 +
 +
I'm curious about the recommendation to do this:
 +
 +
<pre>
 +
err:
 +
  unsigned long errCode;
 +
  while(errCode = ERR_get_error())
 +
  {
 +
    char *err = ERR_error_string(errCode, NULL);
 +
    printf("%s\n", err);
 +
  }
 +
</pre>
 +
 +
Wouldn't it be much simpler to just do:
 +
 +
<pre>
 +
err:
 +
  ERR_print_errors_fp(stderr);
 +
</pre>
 +
 +
Or, if one really does want to iterate through each line of the error queue individually, wouldn't it still be better for us to recommend using ERR_error_string_n with an explicit buffer?  ERR_error_string with a NULL argument is not thread-safe.
 +
 +
--[[User:Ppelleti|Ppelleti]] 18:12, 3 March 2013 (UTC)

Revision as of 18:12, 3 March 2013

Initialization and engines?

Should the recommended initialization code include a call to ENGINE_load_builtin_engines? (Or to OPENSSL_config, which calls ENGINE_load_builtin_engines.) Otherwise, the RdRand engine for getting better random numbers from newer Intel chips (as one example) won't be used.

(My own thoughts on OpenSSL initialization are here.)

--Ppelleti 18:05, 3 March 2013 (UTC)

Best practices for printing errors

I'm curious about the recommendation to do this:

 err:
   unsigned long errCode;
   while(errCode = ERR_get_error())
   {
     char *err = ERR_error_string(errCode, NULL);
     printf("%s\n", err);
   }

Wouldn't it be much simpler to just do:

 err:
  ERR_print_errors_fp(stderr);

Or, if one really does want to iterate through each line of the error queue individually, wouldn't it still be better for us to recommend using ERR_error_string_n with an explicit buffer? ERR_error_string with a NULL argument is not thread-safe.

--Ppelleti 18:12, 3 March 2013 (UTC)