mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	channel.c: Fix segfault with Monitor(wav,file,i)
If the Monitor is started with the i option the read_stream will be NULL. One code path in channel.c checks if write_stream is set but than uses read_stream instead causing a segfault. ASTERISK-28249 Change-Id: I1bae9126537be54895c7fea2d08dd9488d8cc525
This commit is contained in:
		| @@ -5225,7 +5225,7 @@ int ast_write_stream(struct ast_channel *chan, int stream_num, struct ast_frame | ||||
| 				if (jump >= 0) { | ||||
| 					jump = calc_monitor_jump((ast_channel_insmpl(chan) - ast_channel_outsmpl(chan)), | ||||
| 					                         ast_format_get_sample_rate(f->subclass.format), | ||||
| 					                         ast_format_get_sample_rate(ast_channel_monitor(chan)->read_stream->fmt->format)); | ||||
| 					                         ast_format_get_sample_rate(ast_channel_monitor(chan)->write_stream->fmt->format)); | ||||
| 					if (ast_seekstream(ast_channel_monitor(chan)->write_stream, jump, SEEK_FORCECUR) == -1) { | ||||
| 						ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); | ||||
| 					} | ||||
| @@ -5236,7 +5236,7 @@ int ast_write_stream(struct ast_channel *chan, int stream_num, struct ast_frame | ||||
| #else | ||||
| 				int jump = calc_monitor_jump((ast_channel_insmpl(chan) - ast_channel_outsmpl(chan)), | ||||
| 				                             ast_format_get_sample_rate(f->subclass.format), | ||||
| 				                             ast_format_get_sample_rate(ast_channel_monitor(chan)->read_stream->fmt->format)); | ||||
| 				                             ast_format_get_sample_rate(ast_channel_monitor(chan)->write_stream->fmt->format)); | ||||
| 				if (jump - MONITOR_DELAY >= 0) { | ||||
| 					if (ast_seekstream(ast_channel_monitor(chan)->write_stream, jump - cur->samples, SEEK_FORCECUR) == -1) { | ||||
| 						ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user