mpdparse: g_slice_new() can't return NULL

It will abort() if allocation fails.
This commit is contained in:
Sebastian Dröge 2015-07-10 13:26:51 +03:00
parent 77b618ca77
commit a6507de48e

View file

@ -481,10 +481,6 @@ gst_mpdparser_get_xml_prop_range (xmlNode * a_node, const gchar * property_name,
} }
/* malloc return data structure */ /* malloc return data structure */
*property_value = g_slice_new0 (GstRange); *property_value = g_slice_new0 (GstRange);
if (*property_value == NULL) {
GST_WARNING ("Allocation of GstRange failed!");
goto error;
}
exists = TRUE; exists = TRUE;
(*property_value)->first_byte_pos = first_byte_pos; (*property_value)->first_byte_pos = first_byte_pos;
(*property_value)->last_byte_pos = last_byte_pos; (*property_value)->last_byte_pos = last_byte_pos;
@ -538,10 +534,6 @@ gst_mpdparser_get_xml_prop_ratio (xmlNode * a_node,
} }
/* malloc return data structure */ /* malloc return data structure */
*property_value = g_slice_new0 (GstRatio); *property_value = g_slice_new0 (GstRatio);
if (*property_value == NULL) {
GST_WARNING ("Allocation of GstRatio failed!");
goto error;
}
exists = TRUE; exists = TRUE;
(*property_value)->num = num; (*property_value)->num = num;
(*property_value)->den = den; (*property_value)->den = den;
@ -590,10 +582,6 @@ gst_mpdparser_get_xml_prop_framerate (xmlNode * a_node,
} }
/* alloc return data structure */ /* alloc return data structure */
*property_value = g_slice_new0 (GstFrameRate); *property_value = g_slice_new0 (GstFrameRate);
if (*property_value == NULL) {
GST_WARNING ("Allocation of GstFrameRate failed!");
goto error;
}
exists = TRUE; exists = TRUE;
(*property_value)->num = num; (*property_value)->num = num;
(*property_value)->den = den; (*property_value)->den = den;
@ -642,10 +630,6 @@ gst_mpdparser_get_xml_prop_cond_uint (xmlNode * a_node,
/* alloc return data structure */ /* alloc return data structure */
*property_value = g_slice_new0 (GstConditionalUintType); *property_value = g_slice_new0 (GstConditionalUintType);
if (*property_value == NULL) {
GST_WARNING ("Allocation of GstConditionalUintType failed!");
goto error;
}
exists = TRUE; exists = TRUE;
(*property_value)->flag = flag; (*property_value)->flag = flag;
(*property_value)->value = val; (*property_value)->value = val;
@ -985,10 +969,6 @@ gst_mpdparser_parse_baseURL_node (GList ** list, xmlNode * a_node)
GstBaseURL *new_base_url; GstBaseURL *new_base_url;
new_base_url = g_slice_new0 (GstBaseURL); new_base_url = g_slice_new0 (GstBaseURL);
if (new_base_url == NULL) {
GST_WARNING ("Allocation of BaseURL node failed!");
return;
}
*list = g_list_append (*list, new_base_url); *list = g_list_append (*list, new_base_url);
GST_LOG ("content of BaseURL node:"); GST_LOG ("content of BaseURL node:");
@ -1007,10 +987,6 @@ gst_mpdparser_parse_descriptor_type_node (GList ** list, xmlNode * a_node)
GstDescriptorType *new_descriptor; GstDescriptorType *new_descriptor;
new_descriptor = g_slice_new0 (GstDescriptorType); new_descriptor = g_slice_new0 (GstDescriptorType);
if (new_descriptor == NULL) {
GST_WARNING ("Allocation of DescriptorType node failed!");
return;
}
*list = g_list_append (*list, new_descriptor); *list = g_list_append (*list, new_descriptor);
GST_LOG ("attributes of %s node:", a_node->name); GST_LOG ("attributes of %s node:", a_node->name);
@ -1026,10 +1002,6 @@ gst_mpdparser_parse_content_component_node (GList ** list, xmlNode * a_node)
GstContentComponentNode *new_content_component; GstContentComponentNode *new_content_component;
new_content_component = g_slice_new0 (GstContentComponentNode); new_content_component = g_slice_new0 (GstContentComponentNode);
if (new_content_component == NULL) {
GST_WARNING ("Allocation of ContentComponent node failed!");
return;
}
*list = g_list_append (*list, new_content_component); *list = g_list_append (*list, new_content_component);
GST_LOG ("attributes of ContentComponent node:"); GST_LOG ("attributes of ContentComponent node:");
@ -1077,10 +1049,6 @@ gst_mpdparser_parse_subrepresentation_node (GList ** list, xmlNode * a_node)
GstSubRepresentationNode *new_subrep; GstSubRepresentationNode *new_subrep;
new_subrep = g_slice_new0 (GstSubRepresentationNode); new_subrep = g_slice_new0 (GstSubRepresentationNode);
if (new_subrep == NULL) {
GST_WARNING ("Allocation of SubRepresentation node failed!");
return;
}
*list = g_list_append (*list, new_subrep); *list = g_list_append (*list, new_subrep);
GST_LOG ("attributes of SubRepresentation node:"); GST_LOG ("attributes of SubRepresentation node:");
@ -1105,14 +1073,10 @@ gst_mpdparser_clone_segment_url (GstSegmentURLNode * seg_url)
if (seg_url) { if (seg_url) {
clone = g_slice_new0 (GstSegmentURLNode); clone = g_slice_new0 (GstSegmentURLNode);
if (clone) { clone->media = xmlMemStrdup (seg_url->media);
clone->media = xmlMemStrdup (seg_url->media); clone->mediaRange = gst_mpdparser_clone_range (seg_url->mediaRange);
clone->mediaRange = gst_mpdparser_clone_range (seg_url->mediaRange); clone->index = xmlMemStrdup (seg_url->index);
clone->index = xmlMemStrdup (seg_url->index); clone->indexRange = gst_mpdparser_clone_range (seg_url->indexRange);
clone->indexRange = gst_mpdparser_clone_range (seg_url->indexRange);
} else {
GST_WARNING ("Allocation of SegmentURL node failed!");
}
} }
return clone; return clone;
@ -1124,10 +1088,6 @@ gst_mpdparser_parse_segment_url_node (GList ** list, xmlNode * a_node)
GstSegmentURLNode *new_segment_url; GstSegmentURLNode *new_segment_url;
new_segment_url = g_slice_new0 (GstSegmentURLNode); new_segment_url = g_slice_new0 (GstSegmentURLNode);
if (new_segment_url == NULL) {
GST_WARNING ("Allocation of SegmentURL node failed!");
return;
}
*list = g_list_append (*list, new_segment_url); *list = g_list_append (*list, new_segment_url);
GST_LOG ("attributes of SegmentURL node:"); GST_LOG ("attributes of SegmentURL node:");
@ -1146,10 +1106,6 @@ gst_mpdparser_parse_url_type_node (GstURLType ** pointer, xmlNode * a_node)
gst_mpdparser_free_url_type_node (*pointer); gst_mpdparser_free_url_type_node (*pointer);
*pointer = new_url_type = g_slice_new0 (GstURLType); *pointer = new_url_type = g_slice_new0 (GstURLType);
if (new_url_type == NULL) {
GST_WARNING ("Allocation of URLType node failed!");
return;
}
GST_LOG ("attributes of URLType node:"); GST_LOG ("attributes of URLType node:");
gst_mpdparser_get_xml_prop_string (a_node, "sourceURL", gst_mpdparser_get_xml_prop_string (a_node, "sourceURL",
@ -1170,10 +1126,6 @@ gst_mpdparser_parse_seg_base_type_ext (GstSegmentBaseType ** pointer,
gst_mpdparser_free_seg_base_type_ext (*pointer); gst_mpdparser_free_seg_base_type_ext (*pointer);
*pointer = seg_base_type = g_slice_new0 (GstSegmentBaseType); *pointer = seg_base_type = g_slice_new0 (GstSegmentBaseType);
if (seg_base_type == NULL) {
GST_WARNING ("Allocation of SegmentBaseType node failed!");
return;
}
/* Initialize values that have defaults */ /* Initialize values that have defaults */
seg_base_type->indexRangeExact = FALSE; seg_base_type->indexRangeExact = FALSE;
@ -1237,13 +1189,9 @@ gst_mpdparser_clone_s_node (GstSNode * pointer)
if (pointer) { if (pointer) {
clone = g_slice_new0 (GstSNode); clone = g_slice_new0 (GstSNode);
if (clone) { clone->t = pointer->t;
clone->t = pointer->t; clone->d = pointer->d;
clone->d = pointer->d; clone->r = pointer->r;
clone->r = pointer->r;
} else {
GST_WARNING ("Allocation of S node failed!");
}
} }
return clone; return clone;
@ -1255,10 +1203,6 @@ gst_mpdparser_parse_s_node (GQueue * queue, xmlNode * a_node)
GstSNode *new_s_node; GstSNode *new_s_node;
new_s_node = g_slice_new0 (GstSNode); new_s_node = g_slice_new0 (GstSNode);
if (new_s_node == NULL) {
GST_WARNING ("Allocation of S node failed!");
return;
}
g_queue_push_tail (queue, new_s_node); g_queue_push_tail (queue, new_s_node);
GST_LOG ("attributes of S node:"); GST_LOG ("attributes of S node:");
@ -1328,10 +1272,6 @@ gst_mpdparser_parse_mult_seg_base_type_ext (GstMultSegmentBaseType ** pointer,
gst_mpdparser_free_mult_seg_base_type_ext (*pointer); gst_mpdparser_free_mult_seg_base_type_ext (*pointer);
*pointer = mult_seg_base_type = g_slice_new0 (GstMultSegmentBaseType); *pointer = mult_seg_base_type = g_slice_new0 (GstMultSegmentBaseType);
if (mult_seg_base_type == NULL) {
GST_WARNING ("Allocation of MultipleSegmentBaseType node failed!");
return;
}
mult_seg_base_type->duration = 0; mult_seg_base_type->duration = 0;
mult_seg_base_type->startNumber = 1; mult_seg_base_type->startNumber = 1;
@ -1387,10 +1327,6 @@ gst_mpdparser_parse_segment_list_node (GstSegmentListNode ** pointer,
gst_mpdparser_free_segment_list_node (*pointer); gst_mpdparser_free_segment_list_node (*pointer);
*pointer = new_segment_list = g_slice_new0 (GstSegmentListNode); *pointer = new_segment_list = g_slice_new0 (GstSegmentListNode);
if (new_segment_list == NULL) {
GST_WARNING ("Allocation of SegmentList node failed!");
return;
}
/* Inherit attribute values from parent */ /* Inherit attribute values from parent */
if (parent) { if (parent) {
@ -1430,10 +1366,6 @@ gst_mpdparser_parse_representation_base_type (GstRepresentationBaseType **
gst_mpdparser_free_representation_base_type (*pointer); gst_mpdparser_free_representation_base_type (*pointer);
*pointer = representation_base = g_slice_new0 (GstRepresentationBaseType); *pointer = representation_base = g_slice_new0 (GstRepresentationBaseType);
if (representation_base == NULL) {
GST_WARNING ("Allocation of RepresentationBaseType node failed!");
return;
}
GST_LOG ("attributes of RepresentationBaseType extension:"); GST_LOG ("attributes of RepresentationBaseType extension:");
gst_mpdparser_get_xml_prop_string (a_node, "profiles", gst_mpdparser_get_xml_prop_string (a_node, "profiles",
@ -1491,10 +1423,6 @@ gst_mpdparser_parse_representation_node (GList ** list, xmlNode * a_node,
GstRepresentationNode *new_representation; GstRepresentationNode *new_representation;
new_representation = g_slice_new0 (GstRepresentationNode); new_representation = g_slice_new0 (GstRepresentationNode);
if (new_representation == NULL) {
GST_WARNING ("Allocation of Representation node failed!");
return;
}
*list = g_list_append (*list, new_representation); *list = g_list_append (*list, new_representation);
GST_LOG ("attributes of Representation node:"); GST_LOG ("attributes of Representation node:");
@ -1545,10 +1473,6 @@ gst_mpdparser_parse_adaptation_set_node (GList ** list, xmlNode * a_node,
GstAdaptationSetNode *new_adap_set; GstAdaptationSetNode *new_adap_set;
new_adap_set = g_slice_new0 (GstAdaptationSetNode); new_adap_set = g_slice_new0 (GstAdaptationSetNode);
if (new_adap_set == NULL) {
GST_WARNING ("Allocation of AdaptationSet node failed!");
return;
}
*list = g_list_append (*list, new_adap_set); *list = g_list_append (*list, new_adap_set);
GST_LOG ("attributes of AdaptationSet node:"); GST_LOG ("attributes of AdaptationSet node:");
@ -1643,10 +1567,6 @@ gst_mpdparser_parse_subset_node (GList ** list, xmlNode * a_node)
GstSubsetNode *new_subset; GstSubsetNode *new_subset;
new_subset = g_slice_new0 (GstSubsetNode); new_subset = g_slice_new0 (GstSubsetNode);
if (new_subset == NULL) {
GST_WARNING ("Allocation of Subset node failed!");
return;
}
*list = g_list_append (*list, new_subset); *list = g_list_append (*list, new_subset);
GST_LOG ("attributes of Subset node:"); GST_LOG ("attributes of Subset node:");
@ -1663,10 +1583,6 @@ gst_mpdparser_parse_segment_template_node (GstSegmentTemplateNode ** pointer,
gst_mpdparser_free_segment_template_node (*pointer); gst_mpdparser_free_segment_template_node (*pointer);
*pointer = new_segment_template = g_slice_new0 (GstSegmentTemplateNode); *pointer = new_segment_template = g_slice_new0 (GstSegmentTemplateNode);
if (new_segment_template == NULL) {
GST_WARNING ("Allocation of SegmentTemplate node failed!");
return;
}
/* Inherit attribute values from parent */ /* Inherit attribute values from parent */
if (parent) { if (parent) {
@ -1705,10 +1621,6 @@ gst_mpdparser_parse_period_node (GList ** list, xmlNode * a_node)
GstPeriodNode *new_period; GstPeriodNode *new_period;
new_period = g_slice_new0 (GstPeriodNode); new_period = g_slice_new0 (GstPeriodNode);
if (new_period == NULL) {
GST_WARNING ("Allocation of Period node failed!");
return;
}
*list = g_list_append (*list, new_period); *list = g_list_append (*list, new_period);
new_period->start = GST_CLOCK_TIME_NONE; new_period->start = GST_CLOCK_TIME_NONE;
@ -1762,10 +1674,6 @@ gst_mpdparser_parse_program_info_node (GList ** list, xmlNode * a_node)
GstProgramInformationNode *new_prog_info; GstProgramInformationNode *new_prog_info;
new_prog_info = g_slice_new0 (GstProgramInformationNode); new_prog_info = g_slice_new0 (GstProgramInformationNode);
if (new_prog_info == NULL) {
GST_WARNING ("Allocation of ProgramInfo node failed!");
return;
}
*list = g_list_append (*list, new_prog_info); *list = g_list_append (*list, new_prog_info);
GST_LOG ("attributes of ProgramInformation node:"); GST_LOG ("attributes of ProgramInformation node:");
@ -1795,10 +1703,6 @@ gst_mpdparser_parse_metrics_range_node (GList ** list, xmlNode * a_node)
GstMetricsRangeNode *new_metrics_range; GstMetricsRangeNode *new_metrics_range;
new_metrics_range = g_slice_new0 (GstMetricsRangeNode); new_metrics_range = g_slice_new0 (GstMetricsRangeNode);
if (new_metrics_range == NULL) {
GST_WARNING ("Allocation of Metrics Range node failed!");
return;
}
*list = g_list_append (*list, new_metrics_range); *list = g_list_append (*list, new_metrics_range);
GST_LOG ("attributes of Metrics Range node:"); GST_LOG ("attributes of Metrics Range node:");
@ -1815,10 +1719,6 @@ gst_mpdparser_parse_metrics_node (GList ** list, xmlNode * a_node)
GstMetricsNode *new_metrics; GstMetricsNode *new_metrics;
new_metrics = g_slice_new0 (GstMetricsNode); new_metrics = g_slice_new0 (GstMetricsNode);
if (new_metrics == NULL) {
GST_WARNING ("Allocation of Metrics node failed!");
return;
}
*list = g_list_append (*list, new_metrics); *list = g_list_append (*list, new_metrics);
GST_LOG ("attributes of Metrics node:"); GST_LOG ("attributes of Metrics node:");
@ -1849,10 +1749,6 @@ gst_mpdparser_parse_root_node (GstMPDNode ** pointer, xmlNode * a_node)
gst_mpdparser_free_mpd_node (*pointer); gst_mpdparser_free_mpd_node (*pointer);
*pointer = new_mpd = g_slice_new0 (GstMPDNode); *pointer = new_mpd = g_slice_new0 (GstMPDNode);
if (new_mpd == NULL) {
GST_WARNING ("Allocation of MPD node failed!");
return;
}
GST_LOG ("namespaces of root MPD node:"); GST_LOG ("namespaces of root MPD node:");
new_mpd->default_namespace = new_mpd->default_namespace =
@ -2756,12 +2652,8 @@ gst_mpdparser_clone_range (GstRange * range)
if (range) { if (range) {
clone = g_slice_new0 (GstRange); clone = g_slice_new0 (GstRange);
if (clone) { clone->first_byte_pos = range->first_byte_pos;
clone->first_byte_pos = range->first_byte_pos; clone->last_byte_pos = range->last_byte_pos;
clone->last_byte_pos = range->last_byte_pos;
} else {
GST_WARNING ("Allocation of GstRange failed!");
}
} }
return clone; return clone;
@ -2775,14 +2667,10 @@ gst_mpdparser_clone_URL (GstURLType * url)
if (url) { if (url) {
clone = g_slice_new0 (GstURLType); clone = g_slice_new0 (GstURLType);
if (clone) { if (url->sourceURL) {
if (url->sourceURL) { clone->sourceURL = xmlMemStrdup (url->sourceURL);
clone->sourceURL = xmlMemStrdup (url->sourceURL);
}
clone->range = gst_mpdparser_clone_range (url->range);
} else {
GST_WARNING ("Allocation of URLType node failed!");
} }
clone->range = gst_mpdparser_clone_range (url->range);
} }
return clone; return clone;
@ -3108,10 +2996,6 @@ gst_mpd_client_add_media_segment (GstActiveStream * stream,
g_return_val_if_fail (stream->segments != NULL, FALSE); g_return_val_if_fail (stream->segments != NULL, FALSE);
media_segment = g_slice_new0 (GstMediaSegment); media_segment = g_slice_new0 (GstMediaSegment);
if (media_segment == NULL) {
GST_WARNING ("Allocation of GstMediaSegment struct failed!");
return FALSE;
}
media_segment->SegmentURL = url_node; media_segment->SegmentURL = url_node;
media_segment->number = number; media_segment->number = number;
@ -3462,9 +3346,6 @@ gst_mpd_client_setup_media_presentation (GstMpdClient * client)
} }
stream_period = g_slice_new0 (GstStreamPeriod); stream_period = g_slice_new0 (GstStreamPeriod);
if (stream_period == NULL) {
goto no_mem;
}
client->periods = g_list_append (client->periods, stream_period); client->periods = g_list_append (client->periods, stream_period);
stream_period->period = period_node; stream_period->period = period_node;
stream_period->number = idx++; stream_period->number = idx++;
@ -3489,10 +3370,6 @@ syntax_error:
("Cannot get the duration of the Period %d, skipping the rest of the Media Presentation", ("Cannot get the duration of the Period %d, skipping the rest of the Media Presentation",
idx); idx);
return ret; return ret;
no_mem:
GST_WARNING ("Allocation of GstStreamPeriod struct failed!");
return FALSE;
} }
static GList * static GList *
@ -3532,10 +3409,6 @@ gst_mpd_client_setup_streaming (GstMpdClient * client,
} }
stream = g_slice_new0 (GstActiveStream); stream = g_slice_new0 (GstActiveStream);
if (stream == NULL) {
GST_WARNING ("Allocation of active stream struct failed!");
return FALSE;
}
gst_mpdparser_init_active_stream_segments (stream); gst_mpdparser_init_active_stream_segments (stream);
stream->baseURL_idx = 0; stream->baseURL_idx = 0;