From 1da9c19504d5f2ce77ac743ba9972e9cb6f88c7c41626bbd31be63711e2ffd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Sun, 24 Dec 2017 21:12:49 +0000 Subject: [PATCH] Accepting request 559727 from home:Zaitor:branches:multimedia:libs - Add gst-pb-playbin3-fix-accessing-invalid-index.patch: playbin3: Fix accessing invalid index in GstStream when received select-stream event (bgo#791638). - Clean up spec with spec-cleaner. OBS-URL: https://build.opensuse.org/request/show/559727 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/gstreamer-plugins-base?expand=0&rev=104 --- ...playbin3-fix-accessing-invalid-index.patch | 31 ++++++ gstreamer-plugins-base.changes | 8 ++ gstreamer-plugins-base.spec | 103 +++++++----------- 3 files changed, 76 insertions(+), 66 deletions(-) create mode 100644 gst-pb-playbin3-fix-accessing-invalid-index.patch diff --git a/gst-pb-playbin3-fix-accessing-invalid-index.patch b/gst-pb-playbin3-fix-accessing-invalid-index.patch new file mode 100644 index 0000000..b7297b7 --- /dev/null +++ b/gst-pb-playbin3-fix-accessing-invalid-index.patch @@ -0,0 +1,31 @@ +From 4fa7de1eb28d97837c64578c6e5f6ff835e548e4 Mon Sep 17 00:00:00 2001 +From: Dongil Park +Date: Fri, 15 Dec 2017 10:50:44 +0900 +Subject: playbin3: Fix accessing invalid index in GstStream when received + select-stream event + +If select-stream event was send to playbin3 as missing any GstStream of ES type +(V or A or TEX) of collection then, playbin will access to invalid address of +GstStream due to invalid index limit. This caused SIGSEGV. + +https://bugzilla.gnome.org/show_bug.cgi?id=791638 +--- + gst/playback/gstplaybin3.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst/playback/gstplaybin3.c b/gst/playback/gstplaybin3.c +index f3f5efe..36135cb 100644 +--- a/gst/playback/gstplaybin3.c ++++ b/gst/playback/gstplaybin3.c +@@ -2252,7 +2252,7 @@ get_combiner_stream_id (GstPlayBin3 * playbin, GstSourceCombine * combine, + gint i; + GList *tmp; + +- for (i = 0; combine->streams->len; i++) { ++ for (i = 0; i < combine->streams->len; i++) { + GstStream *stream = (GstStream *) g_ptr_array_index (combine->streams, i); + const gchar *sid = gst_stream_get_stream_id (stream); + for (tmp = full_list; tmp; tmp = tmp->next) { +-- +cgit v1.1 + diff --git a/gstreamer-plugins-base.changes b/gstreamer-plugins-base.changes index 9a2845d..086727a 100644 --- a/gstreamer-plugins-base.changes +++ b/gstreamer-plugins-base.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Dec 23 01:11:56 UTC 2017 - zaitor@opensuse.org + +- Add gst-pb-playbin3-fix-accessing-invalid-index.patch: playbin3: + Fix accessing invalid index in GstStream when received + select-stream event (bgo#791638). +- Clean up spec with spec-cleaner. + ------------------------------------------------------------------- Mon Dec 11 12:37:08 UTC 2017 - zaitor@opensuse.org diff --git a/gstreamer-plugins-base.spec b/gstreamer-plugins-base.spec index 57a7408..9db044b 100644 --- a/gstreamer-plugins-base.spec +++ b/gstreamer-plugins-base.spec @@ -16,39 +16,41 @@ # -Name: gstreamer-plugins-base %define _name gst-plugins-base +%define gst_branch 1.0 + +Name: gstreamer-plugins-base Version: 1.12.4 Release: 0 -%define gst_branch 1.0 -Url: http://gstreamer.freedesktop.org/ -BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: GStreamer Streaming-Media Framework Plug-Ins -License: LGPL-2.1+ and GPL-2.0+ +License: LGPL-2.1+ AND GPL-2.0+ Group: Productivity/Multimedia/Other +Url: http://gstreamer.freedesktop.org/ Source0: https://gstreamer.freedesktop.org/src/gst-plugins-base/%{_name}-%{version}.tar.xz Source1: gstreamer-plugins-base.appdata.xml Source2: baselibs.conf + +# PATCH-FIX-UPSTREAM gst-pb-playbin3-fix-accessing-invalid-index.patch bgo#791638 zaitor@opensuse.org -- playbin3: Fix accessing invalid index in GstStream when received select-stream event +Patch0: gst-pb-playbin3-fix-accessing-invalid-index.patch + BuildRequires: cdparanoia-devel BuildRequires: fdupes BuildRequires: glib2-devel >= 2.40.0 +BuildRequires: gobject-introspection-devel >= 1.31.1 BuildRequires: gtk-doc >= 1.12 BuildRequires: libICE-devel BuildRequires: libSM-devel BuildRequires: libXext-devel BuildRequires: libXv-devel BuildRequires: orc >= 0.4.24 +BuildRequires: pkgconfig BuildRequires: python3-base BuildRequires: python3-xml -BuildRequires: pkgconfig(gstreamer-1.0) >= 1.12.0 -%if !0%{?is_opensuse} -BuildRequires: translation-update-upstream -%endif -BuildRequires: gobject-introspection-devel >= 1.31.1 BuildRequires: update-desktop-files BuildRequires: pkgconfig(alsa) >= 0.9.1 BuildRequires: pkgconfig(freetype2) >= 2.0.9 BuildRequires: pkgconfig(gio-unix-2.0) >= 2.24 +BuildRequires: pkgconfig(gstreamer-1.0) >= 1.12.0 BuildRequires: pkgconfig(gtk+-3.0) >= 3.10 BuildRequires: pkgconfig(gtk+-x11-3.0) >= 3.0.0 BuildRequires: pkgconfig(iso-codes) @@ -64,13 +66,16 @@ BuildRequires: pkgconfig(vorbis) >= 1.0 BuildRequires: pkgconfig(vorbisenc) >= 1.0 BuildRequires: pkgconfig(zlib) PreReq: filesystem -%define gstreamer_plugins_base_req %(xzgrep --text "^GST[_A-Z]*_REQ" %{S:0} | sort -u | sed 's/GST_REQ=/gstreamer >= /') -Requires: %gstreamer_plugins_base_req +%define gstreamer_plugins_base_req %(xzgrep --text "^GST[_A-Z]*_REQ" %{SOURCE0} | sort -u | sed 's/GST_REQ=/gstreamer >= /') +Requires: %{gstreamer_plugins_base_req} Recommends: %{name}-lang Recommends: PackageKit-gstreamer-plugin Supplements: gstreamer # Generic name, never used in SuSE: Provides: gst-plugins-base = %{version} +%if !0%{?is_opensuse} +BuildRequires: translation-update-upstream +%endif %description GStreamer is a streaming media framework based on graphs of filters @@ -405,8 +410,9 @@ This package contains documentation for the gstreamer-plugins-base package. %lang_package + %prep -%setup -q -n %{_name}-%{version} +%autosetup -n %{_name}-%{version} -p1 %if !0%{?is_opensuse} translation-update-upstream po gst-plugins-base-%{gst_branch} %endif @@ -415,7 +421,7 @@ translation-update-upstream po gst-plugins-base-%{gst_branch} # FIXME: GTKDOC_CFLAGS, GST_OBJ_CFLAGS: # Silently ignored compilation of uninstalled gtk-doc scanners without RPM_OPT_FLAGS. export CFLAGS="%{optflags} -fno-strict-aliasing" -export PYTHON=/usr/bin/python3 +export PYTHON=%{_bindir}/python3 %configure\ --with-package-name='openSUSE GStreamer-plugins-base package'\ --with-package-origin='http://download.opensuse.org'\ @@ -427,69 +433,57 @@ export PYTHON=/usr/bin/python3 make %{?_smp_mflags} %install -%makeinstall +%make_install if [ -f %{buildroot}%{_datadir}/appdata/gstreamer-plugins-base.appdata.xml ]; then echo "Please remove the added gstreamer-plugins-base.appdata.xml file from the sources - the tarball installs it" false else mkdir -p %{buildroot}%{_datadir}/appdata - cp %{S:1} %{buildroot}%{_datadir}/appdata/ + cp %{SOURCE1} %{buildroot}%{_datadir}/appdata/ fi -find %{buildroot} -type f -name "*.la" -print -delete +find %{buildroot} -type f -name "*.la" -delete -print %find_lang %{_name}-%{gst_branch} %fdupes %{buildroot}%{_datadir}/gtk-doc/html/ -%post -n libgstallocators-1_0-0 -p /sbin/ldconfig - +%post -n libgstallocators-1_0-0 -p /sbin/ldconfig %postun -n libgstallocators-1_0-0 -p /sbin/ldconfig -%post -n libgstapp-1_0-0 -p /sbin/ldconfig - +%post -n libgstapp-1_0-0 -p /sbin/ldconfig %postun -n libgstapp-1_0-0 -p /sbin/ldconfig -%post -n libgstaudio-1_0-0 -p /sbin/ldconfig - +%post -n libgstaudio-1_0-0 -p /sbin/ldconfig %postun -n libgstaudio-1_0-0 -p /sbin/ldconfig -%post -n libgstfft-1_0-0 -p /sbin/ldconfig - +%post -n libgstfft-1_0-0 -p /sbin/ldconfig %postun -n libgstfft-1_0-0 -p /sbin/ldconfig -%post -n libgstpbutils-1_0-0 -p /sbin/ldconfig - +%post -n libgstpbutils-1_0-0 -p /sbin/ldconfig %postun -n libgstpbutils-1_0-0 -p /sbin/ldconfig -%post -n libgstriff-1_0-0 -p /sbin/ldconfig - +%post -n libgstriff-1_0-0 -p /sbin/ldconfig %postun -n libgstriff-1_0-0 -p /sbin/ldconfig -%post -n libgstrtp-1_0-0 -p /sbin/ldconfig - +%post -n libgstrtp-1_0-0 -p /sbin/ldconfig %postun -n libgstrtp-1_0-0 -p /sbin/ldconfig -%post -n libgstrtsp-1_0-0 -p /sbin/ldconfig - +%post -n libgstrtsp-1_0-0 -p /sbin/ldconfig %postun -n libgstrtsp-1_0-0 -p /sbin/ldconfig -%post -n libgstsdp-1_0-0 -p /sbin/ldconfig - +%post -n libgstsdp-1_0-0 -p /sbin/ldconfig %postun -n libgstsdp-1_0-0 -p /sbin/ldconfig -%post -n libgsttag-1_0-0 -p /sbin/ldconfig - +%post -n libgsttag-1_0-0 -p /sbin/ldconfig %postun -n libgsttag-1_0-0 -p /sbin/ldconfig -%post -n libgstvideo-1_0-0 -p /sbin/ldconfig - +%post -n libgstvideo-1_0-0 -p /sbin/ldconfig %postun -n libgstvideo-1_0-0 -p /sbin/ldconfig %files -%defattr(-, root, root) %doc COPYING COPYING.LIB -%doc %{_mandir}/man1/gst-device-monitor-* -%doc %{_mandir}/man1/gst-discoverer-* -%doc %{_mandir}/man1/gst-play-* +%{_mandir}/man1/gst-device-monitor-* +%{_mandir}/man1/gst-discoverer-* +%{_mandir}/man1/gst-play-* %{_bindir}/gst-device-monitor-%{gst_branch} %{_bindir}/gst-discoverer-%{gst_branch} %{_bindir}/gst-play-%{gst_branch} @@ -528,91 +522,69 @@ find %{buildroot} -type f -name "*.la" -print -delete %files lang -f %{_name}-%{gst_branch}.lang %files -n libgstallocators-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstallocators*.so.* %files -n typelib-1_0-GstAllocators-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstAllocators-*.typelib %files -n libgstapp-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstapp*.so.* %files -n typelib-1_0-GstApp-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstApp-*.typelib %files -n libgstaudio-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstaudio*.so.* %files -n typelib-1_0-GstAudio-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstAudio-*.typelib %files -n libgstfft-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstfft*.so.* %files -n typelib-1_0-GstFft-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstFft-*.typelib %files -n libgstpbutils-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstpbutils*.so.* %files -n typelib-1_0-GstPbutils-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstPbutils-*.typelib %files -n libgstriff-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstriff*.so.* %files -n libgstrtp-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstrtp*.so.* %files -n typelib-1_0-GstRtp-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstRtp-*.typelib %files -n libgstrtsp-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstrtsp*.so.* %files -n typelib-1_0-GstRtsp-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstRtsp-*.typelib %files -n libgstsdp-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstsdp*.so.* %files -n typelib-1_0-GstSdp-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstSdp-*.typelib %files -n libgsttag-1_0-0 -%defattr(-, root, root) %{_libdir}/libgsttag*.so.* %files -n typelib-1_0-GstTag-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstTag-*.typelib %files -n libgstvideo-1_0-0 -%defattr(-, root, root) %{_libdir}/libgstvideo*.so.* %files -n typelib-1_0-GstVideo-1_0 -%defattr(-, root, root) %{_libdir}/girepository-1.0/GstVideo-*.typelib %files devel -%defattr(-, root, root) %{_includedir}/gstreamer-%{gst_branch}/* %{_libdir}/*.so %{_libdir}/pkgconfig/*.pc @@ -622,7 +594,6 @@ find %{buildroot} -type f -name "*.la" -print -delete %{_datadir}/gst-plugins-base/%{gst_branch}/license-translations.dict %files doc -%defattr(-, root, root) %doc AUTHORS NEWS README RELEASE REQUIREMENTS %{_datadir}/gtk-doc/html/gst-plugins-base-libs-%{gst_branch} %{_datadir}/gtk-doc/html/gst-plugins-base-plugins-%{gst_branch}