diff options
author | Thiago Santos <ts.santos@sisa.samsung.com> | 2014-05-13 10:13:37 -0300 |
---|---|---|
committer | Thiago Santos <ts.santos@sisa.samsung.com> | 2014-05-13 10:13:37 -0300 |
commit | 64bea0252b28743e7fb99add3de9a7ceaf3df15d (patch) | |
tree | ff8005694d5a2f383fd457f60c649b4cc8e56c8b | |
parent | 8299c5b5b491d1a6f5fb23c441f1444b98ca01c7 (diff) | |
download | gstreamer-plugins-bad-64bea0252b28743e7fb99add3de9a7ceaf3df15d.tar.gz |
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
-rw-r--r-- | ext/dash/gstmpdparser.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index ef0b38ca6..cc13ce980 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); } |