| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 16:54:39 +08:00
										 |  |  | ERR_GET_LIB, ERR_GET_REASON, ERR_FATAL_ERROR | 
					
						
							| 
									
										
										
										
											2016-12-13 00:14:40 +08:00
										 |  |  | - get information from error codes | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/err.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  int ERR_GET_LIB(unsigned long e); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  int ERR_GET_REASON(unsigned long e); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-09 02:01:31 +08:00
										 |  |  |  int ERR_FATAL_ERROR(unsigned long e); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The error code returned by ERR_get_error() consists of a library | 
					
						
							| 
									
										
										
										
											2021-08-19 02:57:57 +08:00
										 |  |  | number and reason code. ERR_GET_LIB() | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | and ERR_GET_REASON() can be used to extract these. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-09 02:01:31 +08:00
										 |  |  | ERR_FATAL_ERROR() indicates whether a given error code is a fatal error. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-19 02:57:57 +08:00
										 |  |  | The library number describes where the error | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | occurred, the reason code is the information about what went wrong. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-19 02:57:57 +08:00
										 |  |  | Each sub-library of OpenSSL has a unique library number; the | 
					
						
							|  |  |  | reason code is unique within each sub-library.  Note that different | 
					
						
							|  |  |  | libraries may use the same value to signal different reasons. | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 16:54:39 +08:00
										 |  |  | ERR_GET_LIB(), ERR_GET_REASON(), and ERR_FATAL_ERROR() are macros. | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-19 02:57:57 +08:00
										 |  |  | The library number, reason code, and whether the error | 
					
						
							| 
									
										
										
										
											2016-12-09 02:01:31 +08:00
										 |  |  | is fatal, respectively. | 
					
						
							| 
									
										
										
										
											2019-06-01 01:52:45 +08:00
										 |  |  | Starting with OpenSSL 3.0.0, the function code is always set to zero. | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-11 01:54:51 +08:00
										 |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Applications should not make control flow decisions based on specific error | 
					
						
							|  |  |  | codes. Error codes are subject to change at any time (even in patch releases of | 
					
						
							|  |  |  | OpenSSL). A particular error code can only be considered meaningful for control | 
					
						
							|  |  |  | flow decisions if it is explicitly documented as such. New failure codes may | 
					
						
							|  |  |  | still appear at any time. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-02 23:07:21 +08:00
										 |  |  | L<ERR_get_error(3)> | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 16:54:39 +08:00
										 |  |  | ERR_GET_LIB() and ERR_GET_REASON() are available in all versions of OpenSSL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ERR_GET_FUNC() was removed in OpenSSL 3.0. | 
					
						
							| 
									
										
										
										
											2000-02-01 09:37:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-07 16:59:15 +08:00
										 |  |  | Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |