[gstreamer-plugins-bad-free] Cherry pick 2 patches from upstream fixing cheese crashing (rhbz#820959)

Hans de Goede jwrdegoede at fedoraproject.org
Tue Jun 19 21:34:05 UTC 2012


commit 207e1d83fb8cf73989a3a91df00c80419a8d43a5
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Tue Jun 19 23:38:44 2012 +0200

    Cherry pick 2 patches from upstream fixing cheese crashing (rhbz#820959)

 0005-geometrictransform-crash-fix1.patch |   37 ++++++++++++++++++++++++++++++
 0006-geometrictransform-crash-fix2.patch |   36 +++++++++++++++++++++++++++++
 gstreamer-plugins-bad-free.spec          |   14 ++++++++++-
 3 files changed, 86 insertions(+), 1 deletions(-)
---
diff --git a/0005-geometrictransform-crash-fix1.patch b/0005-geometrictransform-crash-fix1.patch
new file mode 100644
index 0000000..ba71862
--- /dev/null
+++ b/0005-geometrictransform-crash-fix1.patch
@@ -0,0 +1,37 @@
+From 4e7edb2778f85a5475ffe9c782c91d86a7b902ca Mon Sep 17 00:00:00 2001
+From: Oleksij Rempel (Alexey Fisher) <bug-track at fisher-privat.net>
+Date: Mon, 12 Mar 2012 14:42:04 +0000
+Subject: geometrictransform: make sure gt->map not freed twice
+
+current cheese can create situation where gt->map is freed twice.
+This patch set map to null to avoid it.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=671910
+
+diff --git a/gst/geometrictransform/gstgeometrictransform.c b/gst/geometrictransform/gstgeometrictransform.c
+index 8e78de7..274d483 100644
+--- a/gst/geometrictransform/gstgeometrictransform.c
++++ b/gst/geometrictransform/gstgeometrictransform.c
+@@ -143,9 +143,10 @@ gst_geometric_transform_generate_map (GstGeometricTransform * gt)
+   }
+ 
+ end:
+-  if (!ret)
++  if (!ret) {
+     g_free (gt->map);
+-  else
++    gt->map = NULL;
++  } else
+     gt->needs_remap = FALSE;
+   return ret;
+ }
+@@ -348,6 +349,7 @@ gst_geometric_transform_stop (GstBaseTransform * trans)
+   GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM_CAST (trans);
+ 
+   g_free (gt->map);
++  gt->map = NULL;
+ 
+   return TRUE;
+ }
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/0006-geometrictransform-crash-fix2.patch b/0006-geometrictransform-crash-fix2.patch
new file mode 100644
index 0000000..d9552b4
--- /dev/null
+++ b/0006-geometrictransform-crash-fix2.patch
@@ -0,0 +1,36 @@
+From 7dd5b2002abf516ebdf92696c57a9a7692c166e9 Mon Sep 17 00:00:00 2001
+From: Thiago Santos <thiago.sousa.santos at collabora.com>
+Date: Tue, 20 Mar 2012 23:07:11 +0000
+Subject: geometrictransform: Prevent access to the transform map when it is null
+
+Check if the map doesn't exist when receiving a new caps and create
+a new one. This prevents that the transform functions try to access
+the map when it doesn't exist.
+
+diff --git a/gst/geometrictransform/gstgeometrictransform.c b/gst/geometrictransform/gstgeometrictransform.c
+index be651a4..a1ec3ab 100644
+--- a/gst/geometrictransform/gstgeometrictransform.c
++++ b/gst/geometrictransform/gstgeometrictransform.c
+@@ -178,8 +178,8 @@ gst_geometric_transform_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
+ 
+     /* regenerate the map */
+     GST_OBJECT_LOCK (gt);
+-    if (old_width == 0 || old_height == 0 || gt->width != old_width ||
+-        gt->height != old_height) {
++    if (gt->map == NULL || old_width == 0 || old_height == 0
++        || gt->width != old_width || gt->height != old_height) {
+       if (klass->prepare_func)
+         if (!klass->prepare_func (gt)) {
+           GST_OBJECT_UNLOCK (gt);
+@@ -352,6 +352,9 @@ gst_geometric_transform_stop (GstBaseTransform * trans)
+ {
+   GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM_CAST (trans);
+ 
++  gt->width = 0;
++  gt->height = 0;
++
+   g_free (gt->map);
+   gt->map = NULL;
+ 
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/gstreamer-plugins-bad-free.spec b/gstreamer-plugins-bad-free.spec
index 7f7ac3c..ed499e2 100644
--- a/gstreamer-plugins-bad-free.spec
+++ b/gstreamer-plugins-bad-free.spec
@@ -14,7 +14,7 @@
 Summary: GStreamer streaming media framework "bad" plug-ins
 Name: gstreamer-plugins-bad-free
 Version: 0.10.23
-Release: 6%{?dist}
+Release: 7%{?dist}
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
 Group: Applications/Multimedia
@@ -31,6 +31,9 @@ Patch1: 0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
 Patch2: 0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
 Patch3: 0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
 Patch4: 0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
+# Cherry picked from upstream git for rhbz#820959
+Patch5: 0005-geometrictransform-crash-fix1.patch
+Patch6: 0006-geometrictransform-crash-fix2.patch
 
 Requires: %{gstreamer} >= %{gst_minver}
 BuildRequires: %{gstreamer}-devel >= %{gst_minver}
@@ -60,6 +63,7 @@ BuildRequires: mesa-libGLU-devel
 BuildRequires: openssl-devel
 BuildRequires: orc-devel
 Buildrequires: wavpack-devel
+BuildRequires: chrpath
 
 %if %{with extras}
 BuildRequires: celt-devel
@@ -161,6 +165,8 @@ aren't tested well enough, or the code is not of good enough quality.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
 sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 
 
@@ -180,6 +186,9 @@ make %{?_smp_mflags}
 make install DESTDIR="$RPM_BUILD_ROOT"
 %find_lang gst-plugins-bad-%{majorminor}
 
+# Some of the plugins somehow get an rpath embedded ??
+chrpath --delete $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.so
+
 # Clean out files that should not be part of the rpm.
 rm $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
 rm $RPM_BUILD_ROOT%{_libdir}/*.la
@@ -356,6 +365,9 @@ rm $RPM_BUILD_ROOT%{_libdir}/*.la
 
 
 %changelog
+* Mon Jun 18 2012 Hans de Goede <hdegoede at redhat.com> - 0.10.23-7
+- Cherry pick 2 patches from upstream fixing cheese crashing (rhbz#820959)
+
 * Fri Jun 08 2012 Hans de Goede <hdegoede at redhat.com> - 0.10.23-6
 - Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
 - Re-enable building of -extras package accidentally disabled by the spec-file


More information about the scm-commits mailing list