Restore the ERR_FATAL_ERROR() macro
authorBenjamin Kaduk <bkaduk@akamai.com>
Thu, 8 Dec 2016 18:01:31 +0000 (12:01 -0600)
committerRich Salz <rsalz@openssl.org>
Mon, 12 Dec 2016 13:23:03 +0000 (08:23 -0500)
Commit 0cd0a820abc6124cf8e176fa92d620a2abf9e419 removed this macro
along with many unused function and reason codes; ERR_FATAL_ERROR()
was not used in the tree, but did have external consumers.

Add it back to restore the API compatibility and avoid breaking
applications for no internal benefit.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2049)

doc/man3/ERR_GET_LIB.pod
include/openssl/err.h

index b93ebf608c4015ff630fc53c12528100948c6792..d809d7a54e7b7a6bb36633f6f47374ec0ccfb094 100644 (file)
@@ -15,12 +15,16 @@ reason code
 
  int ERR_GET_REASON(unsigned long e);
 
 
  int ERR_GET_REASON(unsigned long e);
 
+ int ERR_FATAL_ERROR(unsigned long e);
+
 =head1 DESCRIPTION
 
 The error code returned by ERR_get_error() consists of a library
 number, function code and reason code. ERR_GET_LIB(), ERR_GET_FUNC()
 and ERR_GET_REASON() can be used to extract these.
 
 =head1 DESCRIPTION
 
 The error code returned by ERR_get_error() consists of a library
 number, function code and reason code. ERR_GET_LIB(), ERR_GET_FUNC()
 and ERR_GET_REASON() can be used to extract these.
 
+ERR_FATAL_ERROR() indicates whether a given error code is a fatal error.
+
 The library number and function code describe where the error
 occurred, the reason code is the information about what went wrong.
 
 The library number and function code describe where the error
 occurred, the reason code is the information about what went wrong.
 
@@ -33,11 +37,13 @@ B<ERR_R_...> reason codes such as B<ERR_R_MALLOC_FAILURE> are globally
 unique. However, when checking for sub-library specific reason codes,
 be sure to also compare the library number.
 
 unique. However, when checking for sub-library specific reason codes,
 be sure to also compare the library number.
 
-ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are macros.
+ERR_GET_LIB(), ERR_GET_FUNC(), ERR_GET_REASON(), and ERR_FATAL_ERROR()
+ are macros.
 
 =head1 RETURN VALUES
 
 
 =head1 RETURN VALUES
 
-The library number, function code and reason code respectively.
+The library number, function code, reason code, and whether the error
+is fatal, respectively.
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
index f9390919ab52628b71fbc5ea186eba17eed6844e..904cf3a59e0c26e4fcf6bf69a3b6b4b8a8f15f2c 100644 (file)
@@ -140,6 +140,7 @@ typedef struct err_state_st {
 # define ERR_GET_LIB(l)          (int)(((l) >> 24L) & 0x0FFL)
 # define ERR_GET_FUNC(l)         (int)(((l) >> 12L) & 0xFFFL)
 # define ERR_GET_REASON(l)       (int)( (l)         & 0xFFFL)
 # define ERR_GET_LIB(l)          (int)(((l) >> 24L) & 0x0FFL)
 # define ERR_GET_FUNC(l)         (int)(((l) >> 12L) & 0xFFFL)
 # define ERR_GET_REASON(l)       (int)( (l)         & 0xFFFL)
+# define ERR_FATAL_ERROR(l)      (int)( (l)         & ERR_R_FATAL)
 
 /* OS functions */
 # define SYS_F_FOPEN             1
 
 /* OS functions */
 # define SYS_F_FOPEN             1