• G
    Some fixes to the reference-counting in ENGINE code. First, there were a · b41f836e
    Geoff Thorpe 提交于
    few statements equivalent to "ENGINE_add(ENGINE_openssl())" etc. The inner
    call to ENGINE_openssl() (as with other functions like it) orphans a
    structural reference count. Second, the ENGINE_cleanup() function also
    needs to clean up the functional reference counts held internally as the
    list of "defaults" (ie. as used when RSA_new() requires an appropriate
    ENGINE reference). So ENGINE_clear_defaults() was created and is called
    from within ENGINE_cleanup(). Third, some of the existing code was
    logically broken in its treatment of reference counts and locking (my
    fault), so the necessary bits have been restructured and tidied up.
    
    To test this stuff, compiling with ENGINE_REF_COUNT_DEBUG will cause every
    reference count change (both structural and functional) to log a message to
    'stderr'. Using with "openssl engine" for example shows this in action
    quite well as the 'engine' sub-command cleans up after itself properly.
    
    Also replaced some spaces with tabs.
    b41f836e
engine_lib.c 22.8 KB