[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