mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Fix a potential leak and correct (hopefully) a segfault under certain conditions. #6784 (vovan and perry testing)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@29696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -1433,6 +1433,9 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast | |||||||
| 				featurecode = peer_featurecode; | 				featurecode = peer_featurecode; | ||||||
| 			} | 			} | ||||||
| 			featurecode[strlen(featurecode)] = f->subclass; | 			featurecode[strlen(featurecode)] = f->subclass; | ||||||
|  | 			/* Get rid of the frame before we start doing "stuff" with the channels */ | ||||||
|  | 			ast_frfree(f); | ||||||
|  | 			f = NULL; | ||||||
| 			config->feature_timer = backup_config.feature_timer; | 			config->feature_timer = backup_config.feature_timer; | ||||||
| 			res = ast_feature_interpret(chan, peer, config, featurecode, sense); | 			res = ast_feature_interpret(chan, peer, config, featurecode, sense); | ||||||
| 			switch(res) { | 			switch(res) { | ||||||
| @@ -1445,10 +1448,8 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast | |||||||
| 			} | 			} | ||||||
| 			if (res >= FEATURE_RETURN_PASSDIGITS) { | 			if (res >= FEATURE_RETURN_PASSDIGITS) { | ||||||
| 				res = 0; | 				res = 0; | ||||||
| 			} else { | 			} else  | ||||||
| 				ast_frfree(f); |  | ||||||
| 				break; | 				break; | ||||||
| 			} |  | ||||||
| 			hasfeatures = !ast_strlen_zero(chan_featurecode) || !ast_strlen_zero(peer_featurecode); | 			hasfeatures = !ast_strlen_zero(chan_featurecode) || !ast_strlen_zero(peer_featurecode); | ||||||
| 			if (hadfeatures && !hasfeatures) { | 			if (hadfeatures && !hasfeatures) { | ||||||
| 				/* Restore backup */ | 				/* Restore backup */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user