mirror of
https://github.com/openssl/openssl.git
synced 2024-12-11 11:04:03 +08:00
Add ERR_clear_last_mark()
This allows callers to set a mark, and then clear it without removing the errors. Useful in case an error is encountered that should be returned up the call stack. Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4094)
This commit is contained in:
parent
9237173eeb
commit
e1a4ff7678
4
CHANGES
4
CHANGES
@ -9,6 +9,10 @@
|
||||
|
||||
Changes between 1.1.0f and 1.1.1 [xx XXX xxxx]
|
||||
|
||||
*) Add ERR_clear_last_mark(), to allow callers to clear the last mark
|
||||
without clearing the errors.
|
||||
[Richard Levitte]
|
||||
|
||||
*) Add "atfork" functions. If building on a system that without
|
||||
pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application
|
||||
requirements. The RAND facility now uses/requires this.
|
||||
|
@ -812,3 +812,26 @@ int ERR_pop_to_mark(void)
|
||||
es->err_flags[es->top] &= ~ERR_FLAG_MARK;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ERR_clear_last_mark(void)
|
||||
{
|
||||
ERR_STATE *es;
|
||||
int top;
|
||||
|
||||
es = ERR_get_state();
|
||||
if (es == NULL)
|
||||
return 0;
|
||||
|
||||
top = es->top;
|
||||
while (es->bottom != top
|
||||
&& (es->err_flags[top] & ERR_FLAG_MARK) == 0) {
|
||||
top -= 1;
|
||||
if (top == -1)
|
||||
top = ERR_NUM_ERRORS - 1;
|
||||
}
|
||||
|
||||
if (es->bottom == top)
|
||||
return 0;
|
||||
es->err_flags[top] &= ~ERR_FLAG_MARK;
|
||||
return 1;
|
||||
}
|
||||
|
@ -262,6 +262,7 @@ int ERR_get_next_error_library(void);
|
||||
|
||||
int ERR_set_mark(void);
|
||||
int ERR_pop_to_mark(void);
|
||||
int ERR_clear_last_mark(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -4381,3 +4381,4 @@ ASN1_TIME_cmp_time_t 4324 1_1_1 EXIST::FUNCTION:
|
||||
ASN1_TIME_compare 4325 1_1_1 EXIST::FUNCTION:
|
||||
EVP_PKEY_CTX_ctrl_uint64 4326 1_1_1 EXIST::FUNCTION:
|
||||
EVP_DigestFinalXOF 4327 1_1_1 EXIST::FUNCTION:
|
||||
ERR_clear_last_mark 4328 1_1_1 EXIST::FUNCTION:
|
||||
|
Loading…
Reference in New Issue
Block a user