mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel
t38_reinvite_response_cb can get called by res_pjsip_session's session_inv_on_tsx_state_changed in situations where session->channel is NULL. If it is, the ast_log warning segfaults because it tries to get the channel name from a NULL channel. * Check session->channel and print "unknown channel" when it's NULL. ASTERISK-27236 Reported by: Ross Beer Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7
This commit is contained in:
		| @@ -294,21 +294,22 @@ static int t38_reinvite_response_cb(struct ast_sip_session *session, pjsip_rx_da | ||||
| { | ||||
| 	struct pjsip_status_line status = rdata->msg_info.msg->line.status; | ||||
| 	struct t38_state *state; | ||||
| 	RAII_VAR(struct ast_sip_session_media *, session_media, NULL, ao2_cleanup); | ||||
| 	struct ast_sip_session_media *session_media = NULL; | ||||
|  | ||||
| 	if (status.code == 100) { | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (!(state = t38_state_get_or_alloc(session)) || | ||||
| 	if (!session->channel || !(state = t38_state_get_or_alloc(session)) || | ||||
| 		!(session_media = ao2_find(session->media, "image", OBJ_KEY))) { | ||||
| 		ast_log(LOG_WARNING, "Received response to T.38 re-invite on '%s' but state unavailable\n", | ||||
| 			ast_channel_name(session->channel)); | ||||
| 			session->channel ? ast_channel_name(session->channel) : "unknown channel"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	t38_change_state(session, session_media, state, (status.code == 200) ? T38_ENABLED : T38_REJECTED); | ||||
|  | ||||
| 	ao2_cleanup(session_media); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user