mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	res_pjsip: Fix pointer use after unref.
Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1
This commit is contained in:
		| @@ -286,15 +286,16 @@ static struct internal_state *find_internal_state_by_transport(const struct ast_ | ||||
| static struct ast_sip_transport_state *find_state_by_transport(const struct ast_sip_transport *transport) | ||||
| { | ||||
| 	struct internal_state *state; | ||||
| 	struct ast_sip_transport_state *trans_state; | ||||
|  | ||||
| 	state = find_internal_state_by_transport(transport); | ||||
| 	if (!state) { | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	ao2_bump(state->state); | ||||
| 	ao2_cleanup(state); | ||||
| 	trans_state = ao2_bump(state->state); | ||||
| 	ao2_ref(state, -1); | ||||
|  | ||||
| 	return state->state; | ||||
| 	return trans_state; | ||||
| } | ||||
|  | ||||
| static int remove_temporary_state(void) | ||||
| @@ -1297,22 +1298,22 @@ static struct ast_sip_cli_formatter_entry *cli_formatter; | ||||
|  | ||||
| struct ast_sip_transport_state *ast_sip_get_transport_state(const char *transport_id) | ||||
| { | ||||
| 	struct internal_state * state = NULL; | ||||
| 	struct internal_state *state = NULL; | ||||
| 	struct ast_sip_transport_state *trans_state; | ||||
|  | ||||
| 	if (!transport_states) { | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	state = ao2_find(transport_states, transport_id, OBJ_SEARCH_KEY); | ||||
| 	if (!state || !state->state) { | ||||
| 		ao2_cleanup(state); | ||||
| 	if (!state) { | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	ao2_ref(state->state, +1); | ||||
| 	trans_state = ao2_bump(state->state); | ||||
| 	ao2_ref(state, -1); | ||||
|  | ||||
| 	return state->state; | ||||
| 	return trans_state; | ||||
| } | ||||
|  | ||||
| static int populate_transport_states(void *obj, void *arg, int flags) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user