summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Santos <ts.santos@sisa.samsung.com>2014-05-13 10:13:37 -0300
committerThiago Santos <ts.santos@sisa.samsung.com>2014-05-13 10:13:37 -0300
commit64bea0252b28743e7fb99add3de9a7ceaf3df15d (patch)
treeff8005694d5a2f383fd457f60c649b4cc8e56c8b
parent8299c5b5b491d1a6f5fb23c441f1444b98ca01c7 (diff)
downloadgstreamer-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.c13
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);
}