mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	res_agi.c: Prevent possible double free during SPEECH RECOGNIZE
				
					
				
			When using the speech recognition module, crashes can occur sporadically due to a "double free or corruption (out)" error. Now, in the section where the audio stream is being captured in a loop, each time after releasing fr, it is set to NULL to prevent repeated deallocation. Fixes #772
This commit is contained in:
		| @@ -3650,8 +3650,10 @@ static int handle_speechrecognize(struct ast_channel *chan, AGI *agi, int argc, | ||||
| 			time(¤t); | ||||
| 			if ((current - start) >= timeout) { | ||||
| 				reason = "timeout"; | ||||
| 				if (fr) | ||||
| 				if (fr) { | ||||
| 					ast_frfree(fr); | ||||
| 					fr = NULL; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| @@ -3708,6 +3710,7 @@ static int handle_speechrecognize(struct ast_channel *chan, AGI *agi, int argc, | ||||
| 				reason = "hangup"; | ||||
| 			} | ||||
| 			ast_frfree(fr); | ||||
| 			fr = NULL; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user