mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	format_cap: Fix leak on AST_VECTOR_APPEND error.
format_cap_framed_init can fail on AST_VECTOR_APPEND. This should report failure to the caller and clean the newly allocated frame. Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0
This commit is contained in:
		| @@ -160,13 +160,16 @@ static inline int format_cap_framed_init(struct format_cap_framed *framed, struc | ||||
| 	} | ||||
| 	list = AST_VECTOR_GET_ADDR(&cap->formats, ast_format_get_codec_id(format)); | ||||
|  | ||||
| 	/* This takes the allocation reference */ | ||||
| 	if (AST_VECTOR_APPEND(&cap->preference_order, framed)) { | ||||
| 		ao2_ref(framed, -1); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	/* Order doesn't matter for formats, so insert at the head for performance reasons */ | ||||
| 	ao2_ref(framed, +1); | ||||
| 	AST_LIST_INSERT_HEAD(list, framed, entry); | ||||
|  | ||||
| 	/* This takes the allocation reference */ | ||||
| 	AST_VECTOR_APPEND(&cap->preference_order, framed); | ||||
|  | ||||
| 	cap->framing = MIN(cap->framing, framing ? framing : ast_format_get_default_ms(format)); | ||||
|  | ||||
| 	return 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user