commit 85daaa3242c01d9c116626fbe90bcc5ea5a2e4d0
parent 73e1679e73906c1291f127593b4cdf3db772a606
Author: Christian Grothoff <christian@grothoff.org>
Date: Sun, 15 Oct 2017 20:35:05 +0200
handle allocation failure in gstreamer plugin
Diffstat:
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/plugins/gstreamer_extractor.c b/src/plugins/gstreamer_extractor.c
@@ -1038,17 +1038,23 @@ send_structure_foreach (GQuark field_id,
switch (ps->st)
{
case STREAM_TYPE_AUDIO:
+ if (NULL == audio_quarks)
+ return FALSE;
for (quark = audio_quarks; *quark != 0; quark++)
if (*quark == field_id)
return TRUE;
break;
case STREAM_TYPE_VIDEO:
case STREAM_TYPE_IMAGE:
+ if (NULL == video_quarks)
+ return FALSE;
for (quark = video_quarks; *quark != 0; quark++)
if (*quark == field_id)
return TRUE;
break;
case STREAM_TYPE_SUBTITLE:
+ if (NULL == subtitle_quarks)
+ return FALSE;
for (quark = subtitle_quarks; *quark != 0; quark++)
if (*quark == field_id)
return TRUE;
@@ -2216,22 +2222,29 @@ gstreamer_init ()
0, "GStreamer-based libextractor plugin");
audio_quarks = g_new0 (GQuark, 4);
- audio_quarks[0] = g_quark_from_string ("rate");
- audio_quarks[1] = g_quark_from_string ("channels");
- audio_quarks[2] = g_quark_from_string ("depth");
- audio_quarks[3] = g_quark_from_string (NULL);
-
+ if (NULL != audio_quarks)
+ {
+ audio_quarks[0] = g_quark_from_string ("rate");
+ audio_quarks[1] = g_quark_from_string ("channels");
+ audio_quarks[2] = g_quark_from_string ("depth");
+ audio_quarks[3] = g_quark_from_string (NULL);
+ }
video_quarks = g_new0 (GQuark, 6);
- video_quarks[0] = g_quark_from_string ("width");
- video_quarks[1] = g_quark_from_string ("height");
- video_quarks[2] = g_quark_from_string ("framerate");
- video_quarks[3] = g_quark_from_string ("max-framerate");
- video_quarks[4] = g_quark_from_string ("pixel-aspect-ratio");
- video_quarks[5] = g_quark_from_string (NULL);
-
+ if (NULL != video_quarks)
+ {
+ video_quarks[0] = g_quark_from_string ("width");
+ video_quarks[1] = g_quark_from_string ("height");
+ video_quarks[2] = g_quark_from_string ("framerate");
+ video_quarks[3] = g_quark_from_string ("max-framerate");
+ video_quarks[4] = g_quark_from_string ("pixel-aspect-ratio");
+ video_quarks[5] = g_quark_from_string (NULL);
+ }
subtitle_quarks = g_new0 (GQuark, 2);
- subtitle_quarks[0] = g_quark_from_string ("language-code");
- subtitle_quarks[1] = g_quark_from_string (NULL);
+ if (NULL != subtitle_quarks)
+ {
+ subtitle_quarks[0] = g_quark_from_string ("language-code");
+ subtitle_quarks[1] = g_quark_from_string (NULL);
+ }
duration_quark = g_quark_from_string ("duration");