OLD | NEW |
1 /* crypto/engine/eng_lib.c */ | 1 /* crypto/engine/eng_lib.c */ |
2 /* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL | 2 /* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL |
3 * project 2000. | 3 * project 2000. |
4 */ | 4 */ |
5 /* ==================================================================== | 5 /* ==================================================================== |
6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved. | 6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved. |
7 * | 7 * |
8 * Redistribution and use in source and binary forms, with or without | 8 * Redistribution and use in source and binary forms, with or without |
9 * modification, are permitted provided that the following conditions | 9 * modification, are permitted provided that the following conditions |
10 * are met: | 10 * are met: |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 i = --e->struct_ref; | 118 i = --e->struct_ref; |
119 engine_ref_debug(e, 0, -1) | 119 engine_ref_debug(e, 0, -1) |
120 if (i > 0) return 1; | 120 if (i > 0) return 1; |
121 #ifdef REF_CHECK | 121 #ifdef REF_CHECK |
122 if (i < 0) | 122 if (i < 0) |
123 { | 123 { |
124 fprintf(stderr,"ENGINE_free, bad structural reference count\n"); | 124 fprintf(stderr,"ENGINE_free, bad structural reference count\n"); |
125 abort(); | 125 abort(); |
126 } | 126 } |
127 #endif | 127 #endif |
| 128 /* Free up any dynamically allocated public key methods */ |
| 129 engine_pkey_meths_free(e); |
| 130 engine_pkey_asn1_meths_free(e); |
128 /* Give the ENGINE a chance to do any structural cleanup corresponding | 131 /* Give the ENGINE a chance to do any structural cleanup corresponding |
129 * to allocation it did in its constructor (eg. unload error strings) */ | 132 * to allocation it did in its constructor (eg. unload error strings) */ |
130 if(e->destroy) | 133 if(e->destroy) |
131 e->destroy(e); | 134 e->destroy(e); |
132 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ENGINE, e, &e->ex_data); | 135 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ENGINE, e, &e->ex_data); |
133 OPENSSL_free(e); | 136 OPENSSL_free(e); |
134 return 1; | 137 return 1; |
135 } | 138 } |
136 | 139 |
137 int ENGINE_free(ENGINE *e) | 140 int ENGINE_free(ENGINE *e) |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 | 323 |
321 /* eng_lib.o is pretty much linked into anything that touches ENGINE already, so | 324 /* eng_lib.o is pretty much linked into anything that touches ENGINE already, so |
322 * put the "static_state" hack here. */ | 325 * put the "static_state" hack here. */ |
323 | 326 |
324 static int internal_static_hack = 0; | 327 static int internal_static_hack = 0; |
325 | 328 |
326 void *ENGINE_get_static_state(void) | 329 void *ENGINE_get_static_state(void) |
327 { | 330 { |
328 return &internal_static_hack; | 331 return &internal_static_hack; |
329 } | 332 } |
OLD | NEW |