[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