commit:     92a952a998d41206b6af06fe2d9c3eb9ab2e3f4a
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  3 23:53:25 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Oct  4 00:01:17 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=92a952a9

media-libs/libtheora: Fix undefined behaviour, EAPI-7 bump

Thanks-to: <moatu <AT> opentrash.com>
Bug: https://bugs.gentoo.org/620800
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
Package-Manager: Portage-2.3.50, Repoman-2.3.11

 .../files/libtheora-1.0_beta2-flags.patch          |  4 +-
 .../libtheora/files/libtheora-1.1.1-fix-UB.patch   | 47 ++++++++++
 .../libtheora/files/libtheora-1.1.1-libpng16.patch |  4 +-
 .../files/libtheora-1.1.1-underlinking.patch       |  4 +-
 media-libs/libtheora/libtheora-1.1.1-r2.ebuild     | 99 ++++++++++++++++++++++
 5 files changed, 152 insertions(+), 6 deletions(-)

diff --git a/media-libs/libtheora/files/libtheora-1.0_beta2-flags.patch 
b/media-libs/libtheora/files/libtheora-1.0_beta2-flags.patch
index a47cc577168..ffc6ab5802a 100644
--- a/media-libs/libtheora/files/libtheora-1.0_beta2-flags.patch
+++ b/media-libs/libtheora/files/libtheora-1.0_beta2-flags.patch
@@ -1,6 +1,6 @@
 diff -ur libtheora-1.0beta2.orig/configure.ac libtheora-1.0beta2/configure.ac
---- libtheora-1.0beta2.orig/configure.ac       2007-10-13 00:01:38.000000000 
+0300
-+++ libtheora-1.0beta2/configure.ac    2007-11-25 22:44:49.000000000 +0200
+--- a/configure.ac     2007-10-13 00:01:38.000000000 +0300
++++ b/configure.ac     2007-11-25 22:44:49.000000000 +0200
 @@ -102,8 +102,8 @@
          case $host in 
          *)

diff --git a/media-libs/libtheora/files/libtheora-1.1.1-fix-UB.patch 
b/media-libs/libtheora/files/libtheora-1.1.1-fix-UB.patch
new file mode 100644
index 00000000000..862d6a3b816
--- /dev/null
+++ b/media-libs/libtheora/files/libtheora-1.1.1-fix-UB.patch
@@ -0,0 +1,47 @@
+From 0ae66d565e6bead8604d312bc1a4e9dccf245c88 Mon Sep 17 00:00:00 2001
+From: Tim Terriberry <[email protected]>
+Date: Tue, 8 May 2012 02:51:57 +0000
+Subject: [PATCH] Fix pp_sharp_mod calculation.
+
+This was broken when the dequant_tables indexing changed in commit
+ r16102, but it only affected post-processing quality, so we never
+ noticed.
+With gcc 4.8.0, this can now trigger a segfault during decoder
+ initialization.
+
+svn path=/trunk/theora/; revision=18268
+---
+ lib/decode.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+Note: The hunk header was modified from
+
+    @@ -400,10 +400,10 @@
+
+to
+
+    @@ -397,10 +397,10 @@
+
+to match the source code in the libtheora-1.1.1 tar-ball.
+
+diff --git a/lib/decode.c b/lib/decode.c
+index b803505..9f2516a 100644
+--- a/lib/decode.c
++++ b/lib/decode.c
+@@ -397,10 +397,10 @@ static int oc_dec_init(oc_dec_ctx *_dec,const th_info 
*_info,
+     int qsum;
+     qsum=0;
+     for(qti=0;qti<2;qti++)for(pli=0;pli<3;pli++){
+-      qsum+=_dec->state.dequant_tables[qti][pli][qi][12]+
+-       _dec->state.dequant_tables[qti][pli][qi][17]+
+-       _dec->state.dequant_tables[qti][pli][qi][18]+
+-       _dec->state.dequant_tables[qti][pli][qi][24]<<(pli==0);
++      qsum+=_dec->state.dequant_tables[qi][pli][qti][12]+
++       _dec->state.dequant_tables[qi][pli][qti][17]+
++       _dec->state.dequant_tables[qi][pli][qti][18]+
++       _dec->state.dequant_tables[qi][pli][qti][24]<<(pli==0);
+     }
+     _dec->pp_sharp_mod[qi]=-(qsum>>11);
+   }
+-- 
+2.10.2

diff --git a/media-libs/libtheora/files/libtheora-1.1.1-libpng16.patch 
b/media-libs/libtheora/files/libtheora-1.1.1-libpng16.patch
index 93da700c4d7..46d93332390 100644
--- a/media-libs/libtheora/files/libtheora-1.1.1-libpng16.patch
+++ b/media-libs/libtheora/files/libtheora-1.1.1-libpng16.patch
@@ -1,8 +1,8 @@
 http://bugs.gentoo.org/465450
 http://trac.xiph.org/ticket/1947
 
---- examples/png2theora.c
-+++ examples/png2theora.c
+--- a/examples/png2theora.c
++++ b/examples/png2theora.c
 @@ -462,9 +462,9 @@
    png_set_strip_alpha(png_ptr);
  

diff --git a/media-libs/libtheora/files/libtheora-1.1.1-underlinking.patch 
b/media-libs/libtheora/files/libtheora-1.1.1-underlinking.patch
index b45a368ebd7..7836e3abda2 100644
--- a/media-libs/libtheora/files/libtheora-1.1.1-underlinking.patch
+++ b/media-libs/libtheora/files/libtheora-1.1.1-underlinking.patch
@@ -1,7 +1,7 @@
 http://bugs.gentoo.org/504270
 
---- examples/Makefile.am
-+++ examples/Makefile.am
+--- a/examples/Makefile.am
++++ b/examples/Makefile.am
 @@ -22,7 +22,7 @@
  
  player_example_SOURCES = player_example.c

diff --git a/media-libs/libtheora/libtheora-1.1.1-r2.ebuild 
b/media-libs/libtheora/libtheora-1.1.1-r2.ebuild
new file mode 100644
index 00000000000..43080a81d96
--- /dev/null
+++ b/media-libs/libtheora/libtheora-1.1.1-r2.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic multilib-minimal
+
+DESCRIPTION="The Theora Video Compression Codec"
+HOMEPAGE="https://www.theora.org";
+SRC_URI="https://downloads.xiph.org/releases/theora/${P/_}.tar.bz2";
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc 
~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos 
~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE="doc +encode examples static-libs"
+
+REQUIRED_USE="examples? ( encode )" #285895
+
+RDEPEND="
+       >=media-libs/libogg-1.3.0:=[${MULTILIB_USEDEP}]
+       encode? ( >=media-libs/libvorbis-1.3.3-r1:=[${MULTILIB_USEDEP}] )
+       examples? (
+               media-libs/libpng:0=
+               >=media-libs/libsdl-0.11.0
+               media-libs/libvorbis:=
+       )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       doc? ( app-doc/doxygen )
+       virtual/pkgconfig"
+
+S=${WORKDIR}/${P/_}
+
+VARTEXFONTS=${T}/fonts
+
+DOCS=( AUTHORS CHANGES README )
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.0_beta2-flags.patch
+       "${FILESDIR}"/${P}-underlinking.patch
+       "${FILESDIR}"/${P}-libpng16.patch # bug 465450
+       "${FILESDIR}"/${P}-fix-UB.patch # bug 620800
+)
+
+src_prepare() {
+       default
+
+       # bug 467006
+       sed -i "s/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/" configure.ac || die
+
+       AT_M4DIR=m4 eautoreconf
+}
+
+multilib_src_configure() {
+       use x86 && filter-flags -fforce-addr -frename-registers #200549
+       use doc || export ac_cv_prog_HAVE_DOXYGEN=false
+
+       local myconf=(
+               --disable-spec
+               $(use_enable encode)
+               $(use_enable static-libs static)
+       )
+
+       if [[ "${ABI}" = "${DEFAULT_ABI}" ]] ; then
+               myconf+=( $(use_enable examples) )
+       else
+               # those will be overwritten anyway
+               myconf+=( --disable-examples )
+       fi
+
+       # --disable-spec because LaTeX documentation has been prebuilt
+       ECONF_SOURCE="${S}" econf "${myconf[@]}"
+}
+
+multilib_src_install() {
+       emake \
+               DESTDIR="${D}" \
+               docdir="${EPREFIX}"/usr/share/doc/${PF} \
+               install
+
+       if use examples && [[] "${ABI}" = "${DEFAULT_ABI}" ]]; then
+               dobin examples/.libs/png2theora
+               for bin in dump_{psnr,video} {encoder,player}_example; do
+                       newbin examples/.libs/${bin} theora_${bin}
+               done
+       fi
+}
+
+multilib_src_install_all() {
+       find "${D}" -name '*.la' -delete || die
+       einstalldocs
+
+       if use examples && use doc; then
+               docinto examples
+               dodoc examples/*.[ch]
+               docompress -x /usr/share/doc/${PF}/examples
+               docinto .
+       fi
+}

Reply via email to