Skip to content
FAQ 45.8 KiB
Newer Older
Lutz Jänicke's avatar
Lutz Jänicke committed
* Why does Valgrind complain about the use of uninitialized data?

When OpenSSL's PRNG routines are called to generate random numbers the supplied
buffer contents are mixed into the entropy pool: so it technically does not
matter whether the buffer is initialized at this point or not.  Valgrind (and
other test tools) will complain about this. When using Valgrind, make sure the
OpenSSL library has been compiled with the PURIFY macro defined (-DPURIFY)
to get rid of these warnings.


Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
* Why doesn't a memory BIO work when a file does?

This can occur in several cases for example reading an S/MIME email message.
The reason is that a memory BIO can do one of two things when all the data
has been read from it.

The default behaviour is to indicate that no more data is available and that
the call should be retried, this is to allow the application to fill up the BIO
again if necessary.

Alternatively it can indicate that no more data is available and that EOF has
been reached.

If a memory BIO is to behave in the same way as a file this second behaviour
is needed. This must be done by calling:

   BIO_set_mem_eof_return(bio, 0);

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
See the manual pages for more details.

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
* Where are the declarations and implementations of d2i_X509() etc?

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
These are defined and implemented by macros of the form:
Dr. Stephen Henson's avatar
Dr. Stephen Henson committed


 DECLARE_ASN1_FUNCTIONS(X509) and IMPLEMENT_ASN1_FUNCTIONS(X509)

The implementation passes an ASN1 "template" defining the structure into an
ASN1 interpreter using generalised functions such as ASN1_item_d2i().


===============================================================================