From b30ebf01080eb6def50207b3b595b7fb188b24c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 16 Jun 2009 21:27:38 +0200 Subject: frei0r: Make sure to only register plugins that have valid propert types --- gst/frei0r/gstfrei0r.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'gst/frei0r/gstfrei0r.c') diff --git a/gst/frei0r/gstfrei0r.c b/gst/frei0r/gstfrei0r.c index 28eeb11d..f90f1d6f 100644 --- a/gst/frei0r/gstfrei0r.c +++ b/gst/frei0r/gstfrei0r.c @@ -424,6 +424,7 @@ register_plugin (GstPlugin * plugin, const gchar * filename) GModule *module; gboolean ret = FALSE; GstFrei0rFuncTable ftable = { NULL, }; + gint i; f0r_plugin_info_t info = { NULL, }; GST_DEBUG ("Registering plugin '%s'", filename); @@ -476,6 +477,17 @@ register_plugin (GstPlugin * plugin, const gchar * filename) return FALSE; } + for (i = 0; i < info.num_params; i++) { + f0r_param_info_t pinfo = { NULL, }; + + ftable.get_param_info (&pinfo, i); + if (pinfo.type > F0R_PARAM_STRING) { + GST_WARNING ("Unsupported parameter type %d", pinfo.type); + g_module_close (module); + return FALSE; + } + } + switch (info.plugin_type) { case F0R_PLUGIN_TYPE_FILTER: ret = gst_frei0r_filter_register (plugin, &info, &ftable); @@ -491,6 +503,9 @@ register_plugin (GstPlugin * plugin, const gchar * filename) break; } + if (!ret) + goto invalid_frei0r_plugin; + return ret; invalid_frei0r_plugin: -- cgit v1.2.1