From 64bea0252b28743e7fb99add3de9a7ceaf3df15d Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Tue, 13 May 2014 10:13:37 -0300 Subject: [PATCH] dashdemux: mpdparser: avoid double free The _parse_url function already frees the previous pointer, avoid freeing it before without setting to null or we have a double free. Coverity ID: 1212181 Coverity ID: 1212180 Coverity ID: 1212179 --- ext/dash/gstmpdparser.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index ef0b38ca6c..cc13ce9803 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -1213,16 +1213,12 @@ gst_mpdparser_parse_seg_base_type_ext (GstSegmentBaseType ** pointer, if (cur_node->type == XML_ELEMENT_NODE) { if (xmlStrcmp (cur_node->name, (xmlChar *) "Initialization") == 0 || xmlStrcmp (cur_node->name, (xmlChar *) "Initialisation") == 0) { - if (seg_base_type->Initialization) { - gst_mpdparser_free_url_type_node (seg_base_type->Initialization); - } + /* parse will free the previous pointer to create a new one */ gst_mpdparser_parse_url_type_node (&seg_base_type->Initialization, cur_node); } else if (xmlStrcmp (cur_node->name, (xmlChar *) "RepresentationIndex") == 0) { - if (seg_base_type->RepresentationIndex) { - gst_mpdparser_free_url_type_node (seg_base_type->RepresentationIndex); - } + /* parse will free the previous pointer to create a new one */ gst_mpdparser_parse_url_type_node (&seg_base_type->RepresentationIndex, cur_node); } @@ -1369,10 +1365,7 @@ gst_mpdparser_parse_mult_seg_base_type_ext (GstMultSegmentBaseType ** pointer, (&mult_seg_base_type->SegmentTimeline, cur_node); } else if (xmlStrcmp (cur_node->name, (xmlChar *) "BitstreamSwitching") == 0) { - if (mult_seg_base_type->BitstreamSwitching) { - gst_mpdparser_free_url_type_node - (mult_seg_base_type->BitstreamSwitching); - } + /* parse frees the old url before setting the new one */ gst_mpdparser_parse_url_type_node (&mult_seg_base_type->BitstreamSwitching, cur_node); }