mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
ast_format_cap_append_by_type: Resolve codec reference leak.
This resolves a reference leak caused by ASTERISK-25535. The pointer returned by ast_format_get_codec is saved so it can be released. ASTERISK-25664 #close Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec
This commit is contained in:
@@ -252,6 +252,7 @@ int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_typ
|
||||
|
||||
for (id = 1; id < ast_codec_get_max(); ++id) {
|
||||
struct ast_codec *codec = ast_codec_get_by_id(id);
|
||||
struct ast_codec *codec2 = NULL;
|
||||
struct ast_format *format;
|
||||
int res;
|
||||
|
||||
@@ -272,10 +273,14 @@ int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_typ
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!format || (codec != ast_format_get_codec(format))) {
|
||||
if (format) {
|
||||
codec2 = ast_format_get_codec(format);
|
||||
}
|
||||
if (codec != codec2) {
|
||||
ao2_cleanup(format);
|
||||
format = ast_format_create(codec);
|
||||
}
|
||||
ao2_cleanup(codec2);
|
||||
ao2_ref(codec, -1);
|
||||
|
||||
if (!format) {
|
||||
|
Reference in New Issue
Block a user