mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	Astobj2: Fix initialization order of refdebug and AO2_DEBUG.
This ensures that refdebug is initialized before AO2_DEBUG if both are enabled, since AO2_DEBUG allocates a container. This change also makes AO2_DEBUG initialization critical, a failure will abort Asterisk startup. This is needed since the failure would be caused by reg_containers allocation failure, and that would result in a segmentation fault by ao2_container_register later in startup. ASTERISK-25048 #close Reported by: Corey Farrell Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244
This commit is contained in:
		@@ -4260,7 +4260,10 @@ int main(int argc, char *argv[])
 | 
			
		||||
	register_config_cli();
 | 
			
		||||
	read_config_maps();
 | 
			
		||||
 | 
			
		||||
	astobj2_init();
 | 
			
		||||
	if (astobj2_init()) {
 | 
			
		||||
		printf("Failed: astobj2_init\n%s", term_quit());
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ast_opt_console) {
 | 
			
		||||
		if (el_hist == NULL || el == NULL)
 | 
			
		||||
 
 | 
			
		||||
@@ -1143,10 +1143,6 @@ int astobj2_init(void)
 | 
			
		||||
{
 | 
			
		||||
	char ref_filename[1024];
 | 
			
		||||
 | 
			
		||||
	if (container_init() != 0) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ast_opt_ref_debug) {
 | 
			
		||||
		snprintf(ref_filename, sizeof(ref_filename), "%s/refs", ast_config_AST_LOG_DIR);
 | 
			
		||||
		ref_log = fopen(ref_filename, "w");
 | 
			
		||||
@@ -1155,6 +1151,11 @@ int astobj2_init(void)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (container_init() != 0) {
 | 
			
		||||
		fclose(ref_log);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if defined(AO2_DEBUG)
 | 
			
		||||
	ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2));
 | 
			
		||||
#endif	/* defined(AO2_DEBUG) */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user