Package: libgstreamermm-0.10-2
Version: 0.10.9-1
Severity: normal
File: gstreamermm-0.10
Tags: patch

I tried to compile and use another version of subtitleeditor which now
requires gstreamermm-0.10. New version works unstable crashing sometimes.
With valgrind I found that there is invalid write of 8 bytes (pointer
on x86_64) outside of allocated block of 712 bytes. Some investigation
showed that gstreamermm have wrong definition of struct _GstPlayBin2Class.
It has 'source_setup' element which missing in gstreamer data structures
and therefore forcing application to write beyond 712 byte block allocated
for class. 'source_setup' appeared two times in whole gstreamermm (excluding
..hg and .ccg files) and was used nowhere. So I think it was added by
mistake. Below you can find a sample patch.


-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libgstreamermm-0.10-2 depends on:
ii  libc6                            2.13-26
ii  libgcc1                          1:4.6.2-12
ii  libglib2.0-0                     2.30.2-6
ii  libglibmm-2.4-1c2a               2.30.0-2
ii  libgstreamer-plugins-base0.10-0  0.10.35-1
ii  libgstreamer0.10-0               0.10.35-1
ii  libsigc++-2.0-0c2a               2.2.9-1.1
ii  libstdc++6                       4.6.2-12
ii  libxml++2.6-2                    2.34.2-1
ii  libxml2                          2.7.8.dfsg-7

libgstreamermm-0.10-2 recommends no packages.

libgstreamermm-0.10-2 suggests no packages.

-- no debconf information
diff -ur gstreamermm-0.10.9/gstreamer/gstreamermm/playbin2.cc gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/playbin2.cc
--- gstreamermm-0.10.9/gstreamer/gstreamermm/playbin2.cc	2011-04-14 15:05:19.000000000 +0400
+++ gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/playbin2.cc	2012-03-02 23:36:48.464667281 +0400
@@ -17,7 +17,6 @@
   void (*video_tags_changed) (GstPlayBin2* element, gint arg0);
   void (*audio_tags_changed) (GstPlayBin2* element, gint arg0);
   void (*text_tags_changed) (GstPlayBin2* element, gint arg0);
-  void (*source_setup) (GstPlayBin2* element, GstElement* arg0);
   GstTagList* (*get_video_tags) (GstPlayBin2* element, gint arg0);
   GstTagList* (*get_audio_tags) (GstPlayBin2* element, gint arg0);
   GstTagList* (*get_text_tags) (GstPlayBin2* element, gint arg0);
diff -ur gstreamermm-0.10.9/gstreamer/gstreamermm/uridecodebin.cc gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/uridecodebin.cc
--- gstreamermm-0.10.9/gstreamer/gstreamermm/uridecodebin.cc	2011-04-14 15:05:35.000000000 +0400
+++ gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/uridecodebin.cc	2012-03-02 23:36:57.680667572 +0400
@@ -16,7 +16,6 @@
   GValueArray* (*autoplug_sort) (GstURIDecodeBin* element, GstPad* arg0, GstCaps* arg1, GValueArray* arg2);
   GstAutoplugSelectResult (*autoplug_select) (GstURIDecodeBin* element, GstPad* arg0, GstCaps* arg1, GstElementFactory* arg2);
   void (*drained) (GstURIDecodeBin* element);
-  void (*source_setup) (GstURIDecodeBin* element, GstElement* arg0);
 };
 
 extern "C"

Reply via email to