[gstreamer-bugs] [Bug 602528] lv2: vocoder plugin breaks gstreamer
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Sat Nov 21 19:53:35 PST 2009
https://bugzilla.gnome.org/show_bug.cgi?id=602528
GStreamer | gst-plugins-bad | 0.10.x
--- Comment #1 from Cygwin Ports maintainer <yselkowitz at users.sourceforge.net> 2009-11-22 03:53:28 UTC ---
Looked into this further.
The problem is actually with the lv2:symbol properties in the vocoder plugin:
$ grep :symbol /usr/lib/lv2/vocoder.lv2/vocoder.ttl
lv2:symbol "formant";
lv2:symbol "carrier";
lv2:symbol "output";
lv2:symbol "active";
lv2:symbol "150";
lv2:symbol "255";
lv2:symbol "360";
lv2:symbol "465";
lv2:symbol "600";
lv2:symbol "738";
lv2:symbol "907";
lv2:symbol "1k1";
lv2:symbol "1k3";
lv2:symbol "1k6";
lv2:symbol "2k";
lv2:symbol "2k5";
lv2:symbol "3k1";
lv2:symbol "3k8";
lv2:symbol "4k7";
lv2:symbol "5k8";
The crash occurs immediately during processing the "150" port.
gst_lv2_class_get_param_name() returns the :symbol property as a gchar*, which
gst_lv2_class_get_param_spec then passes as the name argument to
g_param_spec_float(). The gtk-docs for that function point to
g_param_spec_internal(), which states[1] (emphasis mine):
"""A property name consists of segments consisting of ASCII letters and digits,
separated by either the '-' or '_' character. The first character of a property
name MUST BE A LETTER. Names which violate these rules lead to undefined
behaviour."""
But it turns out that is quite close to the lv2:symbol spec[2]:
"""A short name used as a machine and human readable identifier. The first
character must be one of _, a-z or A-Z and subsequent characters can be from _,
a-z, A-Z and 0-9."""
The difference being that an lv2:symbol can begin with an underscore, whereas
apparently a GParamSpec->name cannot. So while it seems that the vocoder
plugin is nonconformant, this does expose valid issues, namely:
* leading underscores in lv2:symbol, which are permitted, need to be mangled
for conformance with GParamSpec->name limitations;
* nonconformant ports need to be handled or ignored so as to not crash. (Almost
sounds like a security issue, doesn't it?)
[1]
http://library.gnome.org/devel/gobject/unstable/gobject-GParamSpec.html#g-param-spec-internal
[2] http://lv2plug.in/ns/lv2core/#symbol
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the Gstreamer-bugs
mailing list