mirror of https://github.com/openssl/openssl.git
				
				
				
			Avoid ifdefs in trace categories
The trace code assumes all categories are present and
the category numbers are equal to the index in the table.
Fixes #19915
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/19917)
(cherry picked from commit 78bd646b2f)
			
			
This commit is contained in:
		
							parent
							
								
									0c5fe6e4e7
								
							
						
					
					
						commit
						e1f09938ca
					
				|  | @ -118,17 +118,16 @@ struct trace_category_st { | |||
| }; | ||||
| #define TRACE_CATEGORY_(name)       { #name, OSSL_TRACE_CATEGORY_##name } | ||||
| 
 | ||||
| static const struct trace_category_st trace_categories[] = { | ||||
| static const struct trace_category_st | ||||
|     trace_categories[OSSL_TRACE_CATEGORY_NUM] = { | ||||
|     TRACE_CATEGORY_(ALL), | ||||
|     TRACE_CATEGORY_(TRACE), | ||||
|     TRACE_CATEGORY_(INIT), | ||||
|     TRACE_CATEGORY_(TLS), | ||||
|     TRACE_CATEGORY_(TLS_CIPHER), | ||||
|     TRACE_CATEGORY_(CONF), | ||||
| #ifndef OPENSSL_NO_ENGINE | ||||
|     TRACE_CATEGORY_(ENGINE_TABLE), | ||||
|     TRACE_CATEGORY_(ENGINE_REF_COUNT), | ||||
| #endif | ||||
|     TRACE_CATEGORY_(PKCS5V2), | ||||
|     TRACE_CATEGORY_(PKCS12_KEYGEN), | ||||
|     TRACE_CATEGORY_(PKCS12_DECRYPT), | ||||
|  | @ -144,22 +143,16 @@ static const struct trace_category_st trace_categories[] = { | |||
| 
 | ||||
| const char *OSSL_trace_get_category_name(int num) | ||||
| { | ||||
|     size_t i; | ||||
| 
 | ||||
|     if (num < 0 || (size_t)num >= OSSL_NELEM(trace_categories)) | ||||
|         return NULL; | ||||
|     /*
 | ||||
|      * Partial check that OSSL_TRACE_CATEGORY_... macros | ||||
|      * are synced with trace_categories array | ||||
|      */ | ||||
| #ifndef OPENSSL_NO_ENGINE | ||||
|     if (!ossl_assert(OSSL_TRACE_CATEGORY_NUM == OSSL_NELEM(trace_categories))) | ||||
|     if (!ossl_assert(trace_categories[num].name != NULL) | ||||
|         || !ossl_assert(trace_categories[num].num == num)) | ||||
|         return NULL; | ||||
| #endif | ||||
| 
 | ||||
|     for (i = 0; i < OSSL_NELEM(trace_categories); i++) | ||||
|         if (trace_categories[i].num == num) | ||||
|             return trace_categories[i].name; | ||||
| 
 | ||||
|     return NULL; /* not found */ | ||||
|     return trace_categories[num].name; | ||||
| } | ||||
| 
 | ||||
| int OSSL_trace_get_category_num(const char *name) | ||||
|  |  | |||
|  | @ -43,10 +43,8 @@ extern "C" { | |||
| # define OSSL_TRACE_CATEGORY_TLS                 3 | ||||
| # define OSSL_TRACE_CATEGORY_TLS_CIPHER          4 | ||||
| # define OSSL_TRACE_CATEGORY_CONF                5 | ||||
| # ifndef OPENSSL_NO_ENGINE | ||||
| #  define OSSL_TRACE_CATEGORY_ENGINE_TABLE       6 | ||||
| #  define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT   7 | ||||
| # endif | ||||
| # define OSSL_TRACE_CATEGORY_ENGINE_TABLE        6 | ||||
| # define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT    7 | ||||
| # define OSSL_TRACE_CATEGORY_PKCS5V2             8 | ||||
| # define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN       9 | ||||
| # define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT     10 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue