diff options
author | markus <> | 2003-05-12 02:18:40 +0000 |
---|---|---|
committer | markus <> | 2003-05-12 02:18:40 +0000 |
commit | d4fcd82bb7f6d603bd61e19a81ba97337b89dfca (patch) | |
tree | d52e3a0f1f08f65ad283027e560e17ed0d720462 /src/lib/libcrypto/engine/eng_list.c | |
parent | 582bbd139cd2afd58d10dc051c5b0b989b441074 (diff) | |
download | openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.tar.gz openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.tar.bz2 openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.zip |
merge 0.9.7b with local changes; crank majors for libssl/libcrypto
Diffstat (limited to 'src/lib/libcrypto/engine/eng_list.c')
-rw-r--r-- | src/lib/libcrypto/engine/eng_list.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/lib/libcrypto/engine/eng_list.c b/src/lib/libcrypto/engine/eng_list.c index 0c220558e7..1cc3217f4c 100644 --- a/src/lib/libcrypto/engine/eng_list.c +++ b/src/lib/libcrypto/engine/eng_list.c | |||
@@ -191,14 +191,14 @@ ENGINE *ENGINE_get_first(void) | |||
191 | { | 191 | { |
192 | ENGINE *ret; | 192 | ENGINE *ret; |
193 | 193 | ||
194 | CRYPTO_r_lock(CRYPTO_LOCK_ENGINE); | 194 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); |
195 | ret = engine_list_head; | 195 | ret = engine_list_head; |
196 | if(ret) | 196 | if(ret) |
197 | { | 197 | { |
198 | ret->struct_ref++; | 198 | ret->struct_ref++; |
199 | engine_ref_debug(ret, 0, 1) | 199 | engine_ref_debug(ret, 0, 1) |
200 | } | 200 | } |
201 | CRYPTO_r_unlock(CRYPTO_LOCK_ENGINE); | 201 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); |
202 | return ret; | 202 | return ret; |
203 | } | 203 | } |
204 | 204 | ||
@@ -206,14 +206,14 @@ ENGINE *ENGINE_get_last(void) | |||
206 | { | 206 | { |
207 | ENGINE *ret; | 207 | ENGINE *ret; |
208 | 208 | ||
209 | CRYPTO_r_lock(CRYPTO_LOCK_ENGINE); | 209 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); |
210 | ret = engine_list_tail; | 210 | ret = engine_list_tail; |
211 | if(ret) | 211 | if(ret) |
212 | { | 212 | { |
213 | ret->struct_ref++; | 213 | ret->struct_ref++; |
214 | engine_ref_debug(ret, 0, 1) | 214 | engine_ref_debug(ret, 0, 1) |
215 | } | 215 | } |
216 | CRYPTO_r_unlock(CRYPTO_LOCK_ENGINE); | 216 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); |
217 | return ret; | 217 | return ret; |
218 | } | 218 | } |
219 | 219 | ||
@@ -227,7 +227,7 @@ ENGINE *ENGINE_get_next(ENGINE *e) | |||
227 | ERR_R_PASSED_NULL_PARAMETER); | 227 | ERR_R_PASSED_NULL_PARAMETER); |
228 | return 0; | 228 | return 0; |
229 | } | 229 | } |
230 | CRYPTO_r_lock(CRYPTO_LOCK_ENGINE); | 230 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); |
231 | ret = e->next; | 231 | ret = e->next; |
232 | if(ret) | 232 | if(ret) |
233 | { | 233 | { |
@@ -235,7 +235,7 @@ ENGINE *ENGINE_get_next(ENGINE *e) | |||
235 | ret->struct_ref++; | 235 | ret->struct_ref++; |
236 | engine_ref_debug(ret, 0, 1) | 236 | engine_ref_debug(ret, 0, 1) |
237 | } | 237 | } |
238 | CRYPTO_r_unlock(CRYPTO_LOCK_ENGINE); | 238 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); |
239 | /* Release the structural reference to the previous ENGINE */ | 239 | /* Release the structural reference to the previous ENGINE */ |
240 | ENGINE_free(e); | 240 | ENGINE_free(e); |
241 | return ret; | 241 | return ret; |
@@ -250,7 +250,7 @@ ENGINE *ENGINE_get_prev(ENGINE *e) | |||
250 | ERR_R_PASSED_NULL_PARAMETER); | 250 | ERR_R_PASSED_NULL_PARAMETER); |
251 | return 0; | 251 | return 0; |
252 | } | 252 | } |
253 | CRYPTO_r_lock(CRYPTO_LOCK_ENGINE); | 253 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); |
254 | ret = e->prev; | 254 | ret = e->prev; |
255 | if(ret) | 255 | if(ret) |
256 | { | 256 | { |
@@ -258,7 +258,7 @@ ENGINE *ENGINE_get_prev(ENGINE *e) | |||
258 | ret->struct_ref++; | 258 | ret->struct_ref++; |
259 | engine_ref_debug(ret, 0, 1) | 259 | engine_ref_debug(ret, 0, 1) |
260 | } | 260 | } |
261 | CRYPTO_r_unlock(CRYPTO_LOCK_ENGINE); | 261 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); |
262 | /* Release the structural reference to the previous ENGINE */ | 262 | /* Release the structural reference to the previous ENGINE */ |
263 | ENGINE_free(e); | 263 | ENGINE_free(e); |
264 | return ret; | 264 | return ret; |
@@ -346,7 +346,7 @@ ENGINE *ENGINE_by_id(const char *id) | |||
346 | ERR_R_PASSED_NULL_PARAMETER); | 346 | ERR_R_PASSED_NULL_PARAMETER); |
347 | return NULL; | 347 | return NULL; |
348 | } | 348 | } |
349 | CRYPTO_r_lock(CRYPTO_LOCK_ENGINE); | 349 | CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); |
350 | iterator = engine_list_head; | 350 | iterator = engine_list_head; |
351 | while(iterator && (strcmp(id, iterator->id) != 0)) | 351 | while(iterator && (strcmp(id, iterator->id) != 0)) |
352 | iterator = iterator->next; | 352 | iterator = iterator->next; |
@@ -372,7 +372,7 @@ ENGINE *ENGINE_by_id(const char *id) | |||
372 | engine_ref_debug(iterator, 0, 1) | 372 | engine_ref_debug(iterator, 0, 1) |
373 | } | 373 | } |
374 | } | 374 | } |
375 | CRYPTO_r_unlock(CRYPTO_LOCK_ENGINE); | 375 | CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); |
376 | if(iterator == NULL) | 376 | if(iterator == NULL) |
377 | { | 377 | { |
378 | ENGINEerr(ENGINE_F_ENGINE_BY_ID, | 378 | ENGINEerr(ENGINE_F_ENGINE_BY_ID, |
@@ -381,3 +381,14 @@ ENGINE *ENGINE_by_id(const char *id) | |||
381 | } | 381 | } |
382 | return iterator; | 382 | return iterator; |
383 | } | 383 | } |
384 | |||
385 | int ENGINE_up_ref(ENGINE *e) | ||
386 | { | ||
387 | if (e == NULL) | ||
388 | { | ||
389 | ENGINEerr(ENGINE_F_ENGINE_UP_REF,ERR_R_PASSED_NULL_PARAMETER); | ||
390 | return 0; | ||
391 | } | ||
392 | CRYPTO_add(&e->struct_ref,1,CRYPTO_LOCK_ENGINE); | ||
393 | return 1; | ||
394 | } | ||