If dynamically-loadable ENGINEs are linked against a shared-library version
authorGeoff Thorpe <geoff@openssl.org>
Fri, 18 Oct 2002 20:45:38 +0000 (20:45 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Fri, 18 Oct 2002 20:45:38 +0000 (20:45 +0000)
commit0587ec264563249bbc26302aa1d5e9ff5f45d7f0
tree3ea67ff3570335fbbbc848aa06c6da151bc7db78
parentb76d66fbf6f060e464bde86d078b8925a04e3062
If dynamically-loadable ENGINEs are linked against a shared-library version
of libcrypto, then it is possible that when they are loaded they will share
the same static data as the loading application/library. This means it will
be too late to set memory/ERR/ex_data/[etc] callbacks, but entirely
unnecessary to try. This change puts a static variable in the core ENGINE
code (contained in libcrypto) and a function returning a pointer to it. If
the loaded ENGINE's return value from this function matches the loading
application/library's return value - they share static data. If they don't
match, the loaded ENGINE has its own copy of libcrypto's static data and so
the callbacks need to be set.

Also, although 0.9.7 hasn't been released yet, it's clear this will
introduce a binary incompatibility between dynamic ENGINEs built for 0.9.7
and 0.9.8 (though others probably exist already from EC_*** hooks and
what-not) - so the version control values are correspondingly bumped.
crypto/engine/eng_dyn.c
crypto/engine/eng_lib.c
crypto/engine/engine.h