aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2017-10-15 20:35:05 +0200
committerChristian Grothoff <christian@grothoff.org>2017-10-15 20:35:05 +0200
commit85daaa3242c01d9c116626fbe90bcc5ea5a2e4d0 (patch)
tree5b29bb2b3a5ed513de31b63ed440931730255fc0
parent73e1679e73906c1291f127593b4cdf3db772a606 (diff)
downloadlibextractor-85daaa3242c01d9c116626fbe90bcc5ea5a2e4d0.tar.gz
libextractor-85daaa3242c01d9c116626fbe90bcc5ea5a2e4d0.zip
handle allocation failure in gstreamer plugin
-rw-r--r--src/plugins/gstreamer_extractor.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/src/plugins/gstreamer_extractor.c b/src/plugins/gstreamer_extractor.c
index 2f47adf..31568a7 100644
--- a/src/plugins/gstreamer_extractor.c
+++ b/src/plugins/gstreamer_extractor.c
@@ -1038,17 +1038,23 @@ send_structure_foreach (GQuark field_id,
1038 switch (ps->st) 1038 switch (ps->st)
1039 { 1039 {
1040 case STREAM_TYPE_AUDIO: 1040 case STREAM_TYPE_AUDIO:
1041 if (NULL == audio_quarks)
1042 return FALSE;
1041 for (quark = audio_quarks; *quark != 0; quark++) 1043 for (quark = audio_quarks; *quark != 0; quark++)
1042 if (*quark == field_id) 1044 if (*quark == field_id)
1043 return TRUE; 1045 return TRUE;
1044 break; 1046 break;
1045 case STREAM_TYPE_VIDEO: 1047 case STREAM_TYPE_VIDEO:
1046 case STREAM_TYPE_IMAGE: 1048 case STREAM_TYPE_IMAGE:
1049 if (NULL == video_quarks)
1050 return FALSE;
1047 for (quark = video_quarks; *quark != 0; quark++) 1051 for (quark = video_quarks; *quark != 0; quark++)
1048 if (*quark == field_id) 1052 if (*quark == field_id)
1049 return TRUE; 1053 return TRUE;
1050 break; 1054 break;
1051 case STREAM_TYPE_SUBTITLE: 1055 case STREAM_TYPE_SUBTITLE:
1056 if (NULL == subtitle_quarks)
1057 return FALSE;
1052 for (quark = subtitle_quarks; *quark != 0; quark++) 1058 for (quark = subtitle_quarks; *quark != 0; quark++)
1053 if (*quark == field_id) 1059 if (*quark == field_id)
1054 return TRUE; 1060 return TRUE;
@@ -2216,22 +2222,29 @@ gstreamer_init ()
2216 0, "GStreamer-based libextractor plugin"); 2222 0, "GStreamer-based libextractor plugin");
2217 2223
2218 audio_quarks = g_new0 (GQuark, 4); 2224 audio_quarks = g_new0 (GQuark, 4);
2219 audio_quarks[0] = g_quark_from_string ("rate"); 2225 if (NULL != audio_quarks)
2220 audio_quarks[1] = g_quark_from_string ("channels"); 2226 {
2221 audio_quarks[2] = g_quark_from_string ("depth"); 2227 audio_quarks[0] = g_quark_from_string ("rate");
2222 audio_quarks[3] = g_quark_from_string (NULL); 2228 audio_quarks[1] = g_quark_from_string ("channels");
2223 2229 audio_quarks[2] = g_quark_from_string ("depth");
2230 audio_quarks[3] = g_quark_from_string (NULL);
2231 }
2224 video_quarks = g_new0 (GQuark, 6); 2232 video_quarks = g_new0 (GQuark, 6);
2225 video_quarks[0] = g_quark_from_string ("width"); 2233 if (NULL != video_quarks)
2226 video_quarks[1] = g_quark_from_string ("height"); 2234 {
2227 video_quarks[2] = g_quark_from_string ("framerate"); 2235 video_quarks[0] = g_quark_from_string ("width");
2228 video_quarks[3] = g_quark_from_string ("max-framerate"); 2236 video_quarks[1] = g_quark_from_string ("height");
2229 video_quarks[4] = g_quark_from_string ("pixel-aspect-ratio"); 2237 video_quarks[2] = g_quark_from_string ("framerate");
2230 video_quarks[5] = g_quark_from_string (NULL); 2238 video_quarks[3] = g_quark_from_string ("max-framerate");
2231 2239 video_quarks[4] = g_quark_from_string ("pixel-aspect-ratio");
2240 video_quarks[5] = g_quark_from_string (NULL);
2241 }
2232 subtitle_quarks = g_new0 (GQuark, 2); 2242 subtitle_quarks = g_new0 (GQuark, 2);
2233 subtitle_quarks[0] = g_quark_from_string ("language-code"); 2243 if (NULL != subtitle_quarks)
2234 subtitle_quarks[1] = g_quark_from_string (NULL); 2244 {
2245 subtitle_quarks[0] = g_quark_from_string ("language-code");
2246 subtitle_quarks[1] = g_quark_from_string (NULL);
2247 }
2235 2248
2236 duration_quark = g_quark_from_string ("duration"); 2249 duration_quark = g_quark_from_string ("duration");
2237 2250