mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +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:
		
				
					committed by
					
						
						asterisk-org-access-app[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							befe46162b
						
					
				
				
					commit
					c0d3fbb5ae
				
			@@ -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