Update multimedia/mythtv and related ports to 29.1 [1]

Convert multimedia/mythtv-frontend to a slave port of multimedia/mythtv
which should make future updates much easier.

Upstream security patches have been added to address known
vulnerabilities in the bundled ffmpeg 3.2.

PR:		225652 (initial patches to update to 29.0) [1]
Submitted by:	<lucylangthorne55@gmail.com> [1]
Differential Revision:	https://reviews.freebsd.org/D14563
This commit is contained in:
Jason E. Hale 2018-03-25 17:09:05 +00:00
parent fc45dfb12d
commit db032688df
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=465529
88 changed files with 3295 additions and 1010 deletions

View File

@ -2,9 +2,8 @@
# $FreeBSD$
PORTNAME= mythmusic
PORTVERSION= 0.27.5
DISTVERSIONPREFIX= v
PORTREVISION= 1
DISTVERSION= 29.1
CATEGORIES= audio
PKGNAMEPREFIX= mythplugin-
@ -14,30 +13,34 @@ COMMENT= Music playing plugin for MythTV
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
LIB_DEPENDS= libcdio.so:sysutils/libcdio \
libFLAC.so:audio/flac \
LIB_DEPENDS= libFLAC.so:audio/flac \
libmp3lame.so:audio/lame \
libogg.so:audio/libogg \
libvorbis.so:audio/libvorbis \
libtag.so:audio/taglib \
libfftw3f.so:math/fftw3-float
BUILD_DEPENDS= mythfrontend:multimedia/mythtv
libmyth-29.so:multimedia/mythtv
USE_GITHUB= yes
GH_ACCOUNT= MythTV
GH_PROJECT= mythtv
USE_LDCONFIG= yes
USE_QT5= buildtools_build core gui qmake_build sql xml
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --prefix="${PREFIX}" --disable-all \
--enable-mythmusic
DESTDIRNAME= INSTALL_ROOT
PLIST_SUB= MYTHSHARE="share/mythtv"
WRKSRC_SUBDIR= mythplugins
USE_QT4= linguist_build moc_build qmake_build rcc_build uic_build
HAS_CONFIGURE= yes
USE_LDCONFIG= ${PREFIX}/lib/mythtv/plugins
DESTDIRNAME= INSTALL_ROOT
OPTIONS_DEFINE= CDIO FFTW
PLIST_SUB= MYTHSHARE="share/mythtv"
CDIO_LIB_DEPENDS= libcdio.so:sysutils/libcdio \
libcdio_paranoia.so:sysutils/libcdio-paranoia
CDIO_CONFIGURE_ENABLE= cdio
QMAKESPEC?= ${LOCALBASE}/share/qt4/mkspecs/freebsd-g++
CONFIGURE_ARGS= --prefix="${PREFIX}" --disable-all \
--enable-mythmusic --enable-fftw --enable-opengl
FFTW_DESC= FFTW3-based visualizations
FFTW_LIB_DEPENDS= libfftw3.so:math/fftw3
FFTW_CONFIGURE_ENABLE= fftw
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
@ -46,4 +49,7 @@ post-patch:
@${REINPLACE_CMD} -e 's|/usr/include|${LOCALBASE}/include|g' \
${WRKSRC}/configure
post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/mythtv/plugins/libmythmusic.so
.include <bsd.port.mk>

View File

@ -1,2 +1,3 @@
SHA256 (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 7e625f94332effeadfba8e7ae7c98d44a83bfc25b7c59e39adce67dc2f4e1e1b
SIZE (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 85652939
TIMESTAMP = 1520813358
SHA256 (MythTV-mythtv-v29.1_GH0.tar.gz) = 04a84eb0ded2d2b123624ab2b2e1b8cf824ff4bf8216e452b2516deb929082b2
SIZE (MythTV-mythtv-v29.1_GH0.tar.gz) = 105616234

View File

@ -1,4 +1,4 @@
--- configure.orig 2015-06-16 16:03:30 UTC
--- configure.orig 2018-02-01 11:15:37 UTC
+++ configure
@@ -227,6 +227,10 @@ add_cxxflags(){
append ECXXFLAGS "$@"
@ -11,22 +11,27 @@
check_cxx(){
log check_cxx "$@"
cat > $TMPCXX
@@ -561,6 +565,10 @@ OPENGLV=$(cat mythconfig.mak | grep -e "
EXTRALIBS=$(cat mythconfig.mak | grep -e "^EXTRALIBS=")
EXTRALIBS=${EXTRALIBS#EXTRALIBS=}
@@ -559,6 +563,10 @@ CXXPPFLAGS=${CXXPPFLAGS#CXXPPFLAGS=}
OPENGLV=$(cat mythconfig.mak | grep -e "^CONFIG_OPENGL_VIDEO=yes")
OPENGLES=$(cat mythconfig.mak | grep -e "^HAVE_GLES2_GL2_H=yes")
+add_cppflags "-I${prefix}/include"
+add_cxxflags "-I${prefix}/include"
+add_ldflags "-L${prefix}/lib"
+
if is_qmake4 $qmake || is_qmake4 qmake-qt4; then
if is_qmake4 qmake-qt4; then
qmake=qmake-qt4
@@ -657,6 +665,7 @@ if enabled music ; then
EXTRALIBS=$(cat mythconfig.mak | grep -e "^EXTRALIBS=")
EXTRALIBS=${EXTRALIBS#EXTRALIBS=}
@@ -689,8 +697,10 @@ if enabled music ; then
echo "MythMusic requires FLAC."
fi
+ enable cdio
if ! check_lib cdio/cdio.h cdio_open -lcdio || ! check_lib cdio/cdda.h cdio_cddap_open -lcdio_cdda || ! check_lib cdio/paranoia.h cdio_paranoia_init -lcdio_paranoia ; then
disable cdio
- if ! check_lib cdio/cdio.h cdio_open -lcdio || ! check_lib cdio/cdda.h cdio_cddap_open -lcdio_cdda || ! check_lib cdio/paranoia.h cdio_paranoia_init -lcdio_paranoia ; then
- disable cdio
+ if enabled cdio; then
+ if ! check_lib cdio/cdio.h cdio_open -lcdio || ! check_lib cdio/paranoia/cdda.h cdio_cddap_open -lcdio_cdda || ! check_lib cdio/paranoia/paranoia.h cdio_paranoia_init -lcdio_paranoia ; then
+ disable cdio
+ fi
fi
if ! check_lib lame/lame.h lame_init -lmp3lame ; then

View File

@ -0,0 +1,13 @@
libcdio-paranoia header location changed after moving to separate project circa 2012
--- mythmusic/mythmusic/cddecoder.cpp.orig 2018-02-01 11:15:37 UTC
+++ mythmusic/mythmusic/cddecoder.cpp
@@ -14,7 +14,7 @@
#include <QString>
// libcdio
-#include <cdio/cdda.h>
+#include <cdio/paranoia/cdda.h>
#include <cdio/logging.h>
// MythTV

View File

@ -0,0 +1,15 @@
libcdio-paranoia header location changed after moving to separate project circa 2012
--- mythmusic/mythmusic/cddecoder.h.orig 2018-02-01 11:15:37 UTC
+++ mythmusic/mythmusic/cddecoder.h
@@ -11,8 +11,8 @@ using std::vector;
#endif
#ifdef HAVE_CDIO
-# include <cdio/cdda.h>
-# include <cdio/paranoia.h>
+# include <cdio/paranoia/cdda.h>
+# include <cdio/paranoia/paranoia.h>
#endif
class MusicMetadata;

View File

@ -0,0 +1,25 @@
libcdio-paranoia header location changed after moving to separate project circa 2012
Fix warning: logical not is only applied to the left hand side of comparison
--- mythmusic/mythmusic/cdrip.cpp.orig 2018-02-01 11:15:37 UTC
+++ mythmusic/mythmusic/cdrip.cpp
@@ -8,8 +8,8 @@
#include "config.h"
#ifdef HAVE_CDIO
-# include <cdio/cdda.h>
-# include <cdio/paranoia.h>
+# include <cdio/paranoia/cdda.h>
+# include <cdio/paranoia/paranoia.h>
#endif //def HAVE_CDIO
// C++ includes
@@ -219,7 +219,7 @@ void CDRipperThread::run(void)
{
RunProlog();
- if (!m_tracks->size() > 0)
+ if (!(m_tracks->size() > 0))
{
RunEpilog();
return;

View File

@ -0,0 +1,12 @@
Prevent linking to unneccessary libraries
--- settings.pro.orig 2018-02-25 02:52:28 UTC
+++ settings.pro
@@ -34,6 +34,7 @@ QMAKE_CXXFLAGS += $$ARCHFLAGS
QMAKE_CXXFLAGS += $$CONFIG_DIRECTFB_CXXFLAGS
QMAKE_CXXFLAGS_SHLIB = -DPIC -fPIC
QMAKE_CXXFLAGS += $$ECXXFLAGS
+QMAKE_LFLAGS += -Wl,--as-needed
profile:!win32:!macx:CONFIG += debug

View File

@ -25,7 +25,6 @@ lib/mythtv/plugins/libmythmusic.so
%%MYTHSHARE%%/i18n/mythmusic_sv.qm
%%MYTHSHARE%%/music_settings.xml
%%MYTHSHARE%%/musicmenu.xml
%%MYTHSHARE%%/mythmusic/streams.xml
%%MYTHSHARE%%/themes/default-wide/mm-titlelines.png
%%MYTHSHARE%%/themes/default-wide/mm_blackhole_border.png
%%MYTHSHARE%%/themes/default-wide/mm_volume_background.png

View File

@ -1,88 +1,14 @@
# Created by: Bernhard Froehlich <decke@bluelife.at>
# $FreeBSD$
PORTNAME= mythtv-frontend
DISTVERSIONPREFIX= v
DISTVERSION= 0.27.5
PORTEPOCH= 1
CATEGORIES= multimedia
PORTREVISION= 0
PKGNAMESUFFIX= -${SLAVEPORT}
MAINTAINER= ports@FreeBSD.org
COMMENT= MythTV is a homebrew PVR project
COMMENT= MythTV is a homebrew PVR project (frontend only)
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
MASTERDIR= ${.CURDIR}/../../multimedia/mythtv
SLAVEPORT= frontend
PLIST= ${.CURDIR}/pkg-plist
BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
yasm:devel/yasm
LIB_DEPENDS= libmp3lame.so:audio/lame \
libfreetype.so:print/freetype2 \
libtag.so:audio/taglib \
libxml2.so:textproc/libxml2
CONFLICTS= mythtv-[0-9]*
USE_GITHUB= yes
GH_ACCOUNT= MythTV
GH_PROJECT= mythtv
WRKSRC_SUBDIR= ${GH_PROJECT}
ONLY_FOR_ARCHS= i386 amd64
NOPRECIOUSMAKEVARS= # don't override $(ARCH) in ffmpeg makefiles
USES= gmake libtool pkgconfig
USE_QT4= gui sql network script linguist_build l10n sql-mysql_run \
moc_build qmake_build rcc_build uic_build
QT_NONSTANDARD= yes
HAS_CONFIGURE= yes
USE_LDCONFIG= ${PREFIX}/lib/mythtv/filters
REINPLACE_ARGS= -i ""
DESTDIRNAME= INSTALL_ROOT
DATADIR= ${PREFIX}/share/mythtv
MAKE_ENV= QTDIR="${PREFIX}" \
QMAKESPEC="${QMAKESPEC}"
CPPFLAGS+= ${QTCPPFLAGS}
CONFIGURE_ENV+= QMAKESPEC="${QMAKESPEC}" MOC="${MOC}" \
QTDIR="${PREFIX}" \
PKG_CONFIG_PATH="${LOCALBASE}/libdata/pkgconfig"
LDFLAGS+= -L${LOCALBASE}/lib
CONFIGURE_ARGS= --prefix="${PREFIX}" --cc="${CC}" --cxx="${CXX}" --libxml2-path="${LOCALBASE}/include/libxml2" \
--disable-audio-alsa --disable-indev=alsa --disable-outdev=alsa --disable-mythlogserver \
--disable-firewire --disable-hdhomerun --disable-v4l2 --disable-ivtv --disable-hdpvr \
--disable-dvb --enable-opengl-video --without-bindings=perl,python,php
QMAKESPEC?= ${LOCALBASE}/share/qt4/mkspecs/freebsd-g++
DESKTOP_ENTRIES="MythTV Frontend" "MythTV is a homebrew PVR project" "" \
"mythfrontend" "AudioVideo;Video;" false
OPTIONS_DEFINE= OPENGL JACK PULSEAUDIO VDPAU
OPTIONS_DEFAULT= OPENGL
JACK_LIB_DEPENDS= libjack.so:audio/jack
JACK_CONFIGURE_ENABLE= audio-jack
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CONFIGURE_ENABLE= audio-pulseoutput
VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau
VDPAU_CONFIGURE_ENABLE= vdpau
OPENGL_CONFIGURE_ENABLE= opengl-video
OPENGL_USE= QT4=opengl
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
${WRKSRC}/configure \
${WRKSRC}/libs/libmythtv/libmythtv.pro \
${WRKSRC}/bindings/perl/MythTV/Recording.pm \
${WRKSRC}/programs/mythtranscode/replex/Makefile.standalone \
${WRKSRC}/programs/scripts/database/mythconverg_backup.pl \
${WRKSRC}/programs/scripts/database/mythconverg_restore.pl \
${WRKSRC}/programs/mythcommflag/mythcommflag-analyze
.include <bsd.port.mk>
.include "${MASTERDIR}/Makefile"

View File

@ -1,3 +0,0 @@
TIMESTAMP = 1513802652
SHA256 (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 7e625f94332effeadfba8e7ae7c98d44a83bfc25b7c59e39adce67dc2f4e1e1b
SIZE (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 85652939

View File

@ -1,78 +0,0 @@
--- configure.orig 2013-09-18 20:06:08.000000000 +0000
+++ configure 2013-10-18 11:11:10.000000000 +0000
@@ -846,28 +846,28 @@
log check_cc "$@"
cat > $TMPC
log_file $TMPC
- check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
+ check_cmd $cc $CPPFLAGS $CFLAGS -I${prefix}/include "$@" $CC_C $(cc_o $TMPO) $TMPC
}
check_cxx(){
log check_cxx "$@"
cat > $TMPCPP
log_file $TMPCPP
- check_cmd $cxx $CPPFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
+ check_cmd $cxx $CPPFLAGS $CXXFLAGS -I${prefix}/include "$@" $CXX_C -o $TMPO $TMPCPP
}
check_ecxx(){
log check_cxx "$@"
cat > $TMPCPP
log_file $TMPCPP
- check_cmd $cxx $CPPFLAGS $CXXFLAGS $ECXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
+ check_cmd $cxx $CPPFLAGS $CXXFLAGS $ECXXFLAGS -I${prefix}/include "$@" $CXX_C -o $TMPO $TMPCPP
}
check_cpp(){
log check_cpp "$@"
cat > $TMPC
log_file $TMPC
- check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
+ check_cmd $cc $CPPFLAGS $CFLAGS -I${prefix}/include "$@" $(cc_e $TMPO) $TMPC
}
as_o(){
@@ -2539,7 +2539,7 @@
# machine
arch_default=$(uname -m)
-cpu="generic"
+cpu="i686"
processor=`uname -p 2>/dev/null`
processor_flags=""
tune="generic"
@@ -3931,7 +3931,7 @@
i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
cpuflags="-march=$cpu"
enable cmov
- enable fast_cmov
+ disable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4|pentium4m|prescott|nocona)
@@ -4102,7 +4102,6 @@
append CCONFIG "freebsd"
# Workaround compile errors from missing u_int/uint def
CPPFLAGS=`echo $CPPFLAGS | sed 's/-D_POSIX_C_SOURCE=200112//'`
- disable ivtv
enable backend
;;
bsd/os)
@@ -6383,6 +6382,7 @@
QMAKE_LIBDIR_QT-=${sysroot}${libdir}
QMAKE_LIBDIR-=${sysroot}${libdir}
LATE_LIBS+=-L${sysroot}${libdir}
+FREETYPE_CFLAGS-= -I/usr/local/include
EOF
#echo "endif # FFMPEG_CONFIG_MAK" >> $TMPMAK
@@ -6435,7 +6435,7 @@
BINDIR=\$(INSTALL_ROOT)$bindir
DATADIR=\$(INSTALL_ROOT)$datadir
MANDIR=\$(INSTALL_ROOT)$mandir
-CFLAGS=${CFLAGS} -w
+CFLAGS=${CFLAGS} -I/usr/local/include -w
endif # FFMPEG_CONFIG_MAK
EOF

View File

@ -1,22 +0,0 @@
--- external/FFmpeg/configure.orig 2010-08-23 18:54:20.000000000 +0200
+++ external/FFmpeg/configure 2010-11-01 21:13:19.000000000 +0100
@@ -1528,8 +1528,8 @@
nm_opts='-g'
# machine
-arch_default=$(uname -m)
-cpu="generic"
+arch_default=$(uname -p)
+cpu="i686"
# OS
target_os_default=$(tolower $(uname -s))
@@ -2108,7 +2108,7 @@
i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona)
cpuflags="-march=$cpu"
enable cmov
- enable fast_cmov
+ disable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4|pentium4m|prescott|nocona)

View File

@ -1,11 +0,0 @@
--- external/FFmpeg/libavcodec/x86/ac3dsp_init.c.orig 2013-09-18 20:06:08.000000000 +0000
+++ external/FFmpeg/libavcodec/x86/ac3dsp_init.c 2013-10-18 11:58:01.000000000 +0000
@@ -51,7 +51,7 @@
extern void ff_ac3_extract_exponents_sse2 (uint8_t *exp, int32_t *coef, int nb_coefs);
extern void ff_ac3_extract_exponents_ssse3(uint8_t *exp, int32_t *coef, int nb_coefs);
-#if ARCH_X86_32 && defined(__INTEL_COMPILER)
+#if ARCH_X86_32 && (defined(__INTEL_COMPILER) || defined(__clang__))
# undef HAVE_7REGS
# define HAVE_7REGS 0
#endif

View File

@ -1,10 +0,0 @@
--- external/zeromq/src/Makefile.am.orig 2015-11-16 14:31:23.735432710 +0000
+++ external/zeromq/src/Makefile.am 2015-11-16 14:28:48.465433398 +0000
@@ -1,6 +1,6 @@
lib_LTLIBRARIES = libmythzmq.la
-pkgconfigdir = $(libdir)/pkgconfig
+pkgconfigdir = $(PKG_CONFIG_PATH)
pkgconfig_DATA = libmythzmq.pc
include_HEADERS = ../include/zmq.h ../include/zmq.hpp ../include/zmq_utils.h

View File

@ -1,11 +0,0 @@
--- libs/libmyth/remoteutil.h.orig 2013-09-18 16:06:08.000000000 -0400
+++ libs/libmyth/remoteutil.h 2014-01-22 08:26:34.000000000 -0500
@@ -8,6 +8,7 @@
using namespace std;
#include "mythexp.h"
+#include <sys/types.h>
class ProgramInfo;
class MythEvent;

View File

@ -1,11 +0,0 @@
--- libs/libmythdvdnav/dvdnav/dvdnav.c.orig 2012-03-18 12:13:45.805789048 +0100
+++ libs/libmythdvdnav/dvdnav/dvdnav.c 2012-03-18 12:12:47.166812027 +0100
@@ -33,7 +33,7 @@
#include <limits.h>
#include <string.h>
#include <sys/time.h>
-#include "dvdnav/dvdnav.h"
+#include "dvdnav.h"
#include <dvdread/dvd_reader.h>
#include <dvdread/nav_types.h>
#include <dvdread/ifo_types.h> /* For vm_cmd_t */

View File

@ -1,29 +0,0 @@
--- libs/libmythtv/recorders/dvbstreamhandler.cpp.orig 2012-03-05 03:31:31.000000000 +0100
+++ libs/libmythtv/recorders/dvbstreamhandler.cpp 2012-03-18 11:24:44.309770699 +0100
@@ -614,7 +614,7 @@
{
struct dmx_pes_filter_params pesFilterParams;
memset(&pesFilterParams, 0, sizeof(struct dmx_pes_filter_params));
- pesFilterParams.pid = (__u16) _pid;
+ pesFilterParams.pid = (uint16_t) _pid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.flags = DMX_IMMEDIATE_START;
@@ -634,7 +634,7 @@
{
struct dmx_sct_filter_params sctFilterParams;
memset(&sctFilterParams, 0, sizeof(struct dmx_sct_filter_params));
- switch ( (__u16) _pid )
+ switch ( (uint16_t) _pid )
{
case 0x0: // PAT
sctFilterParams.filter.filter[0] = 0;
@@ -670,7 +670,7 @@
sctFilterParams.filter.mask[0] = 0x00;
break;
}
- sctFilterParams.pid = (__u16) _pid;
+ sctFilterParams.pid = (uint16_t) _pid;
sctFilterParams.timeout = 0;
sctFilterParams.flags = DMX_IMMEDIATE_START;

View File

@ -1,11 +0,0 @@
--- libs/libmythtv/videoout_vdpau.cpp.orig 2010-02-27 06:58:11.000000000 +0100
+++ libs/libmythtv/videoout_vdpau.cpp 2010-04-06 17:40:50.000000000 +0200
@@ -395,7 +395,7 @@
if (frame)
{
// FIXME for 0.23. This should be triggered from AFD by a seek
- if ((abs(frame->frameNumber - framesPlayed) > 8))
+ if ((labs(frame->frameNumber - framesPlayed) > 8))
ClearReferenceFrames();
new_frame = (framesPlayed != frame->frameNumber + 1);
framesPlayed = frame->frameNumber + 1;

View File

@ -1,19 +0,0 @@
--- libs/libmythui/mythgesture.cpp.orig 2013-09-18 16:06:08.000000000 -0400
+++ libs/libmythui/mythgesture.cpp 2014-01-22 08:20:33.000000000 -0500
@@ -28,6 +28,7 @@
#include "mythgesture.h"
+#include <cstdlib>
#include <cmath>
#include <algorithm>
@@ -283,7 +284,7 @@
int dely = p.y() - points.back().y();
/* step by the greatest delta direction */
- if (abs(delx) > abs(dely))
+ if (std::abs(delx) > std::abs(dely))
{
float iy = points.back().y();

View File

@ -1,9 +0,0 @@
--- libs/libmythui/mythpainter.cpp.orig 2013-09-18 16:06:08.000000000 -0400
+++ libs/libmythui/mythpainter.cpp 2014-01-22 08:18:40.000000000 -0500
@@ -1,5 +1,6 @@
#include <stdint.h>
#include <algorithm>
+#include <cstdlib>
// QT headers
#include <QRect>

View File

@ -1,11 +0,0 @@
--- libs/libmythupnp/mmulticastsocketdevice.h.orig 2013-09-18 16:06:08.000000000 -0400
+++ libs/libmythupnp/mmulticastsocketdevice.h 2014-01-22 08:24:26.000000000 -0500
@@ -18,6 +18,7 @@
# include <ws2tcpip.h>
# endif
#else
+# include <sys/types.h>
# include <sys/socket.h>
# include <netinet/in.h>
# include <netinet/ip.h>

View File

@ -1,12 +0,0 @@
--- programs/programs.pro.orig 2012-03-19 06:39:10.000000000 +0100
+++ programs/programs.pro 2012-03-21 23:55:00.883069453 +0100
@@ -11,9 +11,4 @@
!mingw: SUBDIRS += mythtranscode/replex
}
-using_backend {
- SUBDIRS += mythbackend mythfilldatabase mythtv-setup scripts
- SUBDIRS += mythmetadatalookup
-}
-
using_mythtranscode: SUBDIRS += mythtranscode

View File

@ -1,6 +0,0 @@
MythTV is a "Personal Video Recorder", i.e. a computer-based video
recorder. It supports pausing and rewinding live TV, multiple tuner
cards, hardware or software video compression, onscreen program guides
and a distributed architecture.
WWW: http://www.mythtv.org/

View File

@ -15,21 +15,14 @@ bin/mythshutdown
bin/mythtranscode
bin/mythutil
bin/mythwelcome
include/mythtv/QJson/Parser
include/mythtv/QJson/QObjectHelper
include/mythtv/QJson/Serializer
include/mythtv/QJson/parser.h
include/mythtv/QJson/parserrunnable.h
include/mythtv/QJson/qjson_export.h
include/mythtv/QJson/qobjecthelper.h
include/mythtv/QJson/serializer.h
include/mythtv/QJson/serializerrunnable.h
include/mythtv/audioconvert.h
include/mythtv/audiooutput.h
include/mythtv/audiooutputsettings.h
include/mythtv/audiooutpututil.h
include/mythtv/audiosettings.h
include/mythtv/autodeletedeque.h
include/mythtv/blockinput.h
include/mythtv/bluray/array.h
include/mythtv/bluray/attributes.h
include/mythtv/bluray/bdid_parse.h
include/mythtv/bluray/bdparse.h
@ -37,10 +30,11 @@ include/mythtv/bluray/bits.h
include/mythtv/bluray/bluray.h
include/mythtv/bluray/clpi_data.h
include/mythtv/bluray/clpi_parse.h
include/mythtv/bluray/dirs.h
include/mythtv/bluray/dl.h
include/mythtv/bluray/event_queue.h
include/mythtv/bluray/extdata_parse.h
include/mythtv/bluray/file.h
include/mythtv/bluray/file_mythiowrapper.h
include/mythtv/bluray/filesystem.h
include/mythtv/bluray/hdmv_insn.h
include/mythtv/bluray/hdmv_vm.h
@ -50,12 +44,17 @@ include/mythtv/bluray/logging.h
include/mythtv/bluray/macro.h
include/mythtv/bluray/meta_data.h
include/mythtv/bluray/meta_parse.h
include/mythtv/bluray/mobj_data.h
include/mythtv/bluray/mobj_parse.h
include/mythtv/bluray/mobj_print.h
include/mythtv/bluray/mount.h
include/mythtv/bluray/mpls_parse.h
include/mythtv/bluray/mutex.h
include/mythtv/bluray/navigation.h
include/mythtv/bluray/refcnt.h
include/mythtv/bluray/sound_parse.h
include/mythtv/bluray/strutl.h
include/mythtv/bluray/time.h
include/mythtv/bluray/uo_mask_table.h
include/mythtv/bonjourregister.h
include/mythtv/bswap.h
@ -80,18 +79,24 @@ include/mythtv/iso639.h
include/mythtv/langsettings.h
include/mythtv/lcddevice.h
include/mythtv/libavcodec/avcodec.h
include/mythtv/libavcodec/avdct.h
include/mythtv/libavcodec/avfft.h
include/mythtv/libavcodec/d3d11va.h
include/mythtv/libavcodec/dirac.h
include/mythtv/libavcodec/dv_profile.h
include/mythtv/libavcodec/dxva2.h
include/mythtv/libavcodec/old_codec_ids.h
include/mythtv/libavcodec/jni.h
include/mythtv/libavcodec/mediacodec.h
include/mythtv/libavcodec/qsv.h
include/mythtv/libavcodec/vaapi.h
include/mythtv/libavcodec/vda.h
include/mythtv/libavcodec/vdpau.h
include/mythtv/libavcodec/version.h
include/mythtv/libavcodec/videotoolbox.h
include/mythtv/libavcodec/vorbis_parser.h
include/mythtv/libavcodec/xvmc.h
include/mythtv/libavdevice/avdevice.h
include/mythtv/libavdevice/version.h
include/mythtv/libavfilter/asrc_abuffer.h
include/mythtv/libavfilter/avcodec.h
include/mythtv/libavfilter/avfilter.h
include/mythtv/libavfilter/avfiltergraph.h
include/mythtv/libavfilter/buffersink.h
@ -102,9 +107,9 @@ include/mythtv/libavformat/avio.h
include/mythtv/libavformat/version.h
include/mythtv/libavutil/adler32.h
include/mythtv/libavutil/aes.h
include/mythtv/libavutil/aes_ctr.h
include/mythtv/libavutil/attributes.h
include/mythtv/libavutil/audio_fifo.h
include/mythtv/libavutil/audioconvert.h
include/mythtv/libavutil/avassert.h
include/mythtv/libavutil/avconfig.h
include/mythtv/libavutil/avstring.h
@ -113,38 +118,65 @@ include/mythtv/libavutil/base64.h
include/mythtv/libavutil/blowfish.h
include/mythtv/libavutil/bprint.h
include/mythtv/libavutil/bswap.h
include/mythtv/libavutil/buffer.h
include/mythtv/libavutil/camellia.h
include/mythtv/libavutil/cast5.h
include/mythtv/libavutil/channel_layout.h
include/mythtv/libavutil/common.h
include/mythtv/libavutil/cpu.h
include/mythtv/libavutil/crc.h
include/mythtv/libavutil/des.h
include/mythtv/libavutil/dict.h
include/mythtv/libavutil/display.h
include/mythtv/libavutil/downmix_info.h
include/mythtv/libavutil/error.h
include/mythtv/libavutil/eval.h
include/mythtv/libavutil/ffversion.h
include/mythtv/libavutil/fifo.h
include/mythtv/libavutil/file.h
include/mythtv/libavutil/frame.h
include/mythtv/libavutil/hash.h
include/mythtv/libavutil/hmac.h
include/mythtv/libavutil/hwcontext.h
include/mythtv/libavutil/hwcontext_cuda.h
include/mythtv/libavutil/hwcontext_dxva2.h
include/mythtv/libavutil/hwcontext_qsv.h
include/mythtv/libavutil/hwcontext_vaapi.h
include/mythtv/libavutil/hwcontext_vdpau.h
include/mythtv/libavutil/imgutils.h
include/mythtv/libavutil/intfloat.h
include/mythtv/libavutil/intfloat_readwrite.h
include/mythtv/libavutil/intreadwrite.h
include/mythtv/libavutil/lfg.h
include/mythtv/libavutil/log.h
include/mythtv/libavutil/lzo.h
include/mythtv/libavutil/macros.h
include/mythtv/libavutil/mastering_display_metadata.h
include/mythtv/libavutil/mathematics.h
include/mythtv/libavutil/md5.h
include/mythtv/libavutil/mem.h
include/mythtv/libavutil/old_pix_fmts.h
include/mythtv/libavutil/motion_vector.h
include/mythtv/libavutil/murmur3.h
include/mythtv/libavutil/opt.h
include/mythtv/libavutil/parseutils.h
include/mythtv/libavutil/pixdesc.h
include/mythtv/libavutil/pixelutils.h
include/mythtv/libavutil/pixfmt.h
include/mythtv/libavutil/random_seed.h
include/mythtv/libavutil/rational.h
include/mythtv/libavutil/rc4.h
include/mythtv/libavutil/replaygain.h
include/mythtv/libavutil/ripemd.h
include/mythtv/libavutil/samplefmt.h
include/mythtv/libavutil/sha.h
include/mythtv/libavutil/sha512.h
include/mythtv/libavutil/stereo3d.h
include/mythtv/libavutil/tea.h
include/mythtv/libavutil/threadmessage.h
include/mythtv/libavutil/time.h
include/mythtv/libavutil/timecode.h
include/mythtv/libavutil/timestamp.h
include/mythtv/libavutil/tree.h
include/mythtv/libavutil/twofish.h
include/mythtv/libavutil/version.h
include/mythtv/libavutil/xtea.h
include/mythtv/libmyth/audioconvert.h
@ -167,22 +199,18 @@ include/mythtv/libmyth/mythwidgets.h
include/mythtv/libmyth/mythwizard.h
include/mythtv/libmyth/netgrabbermanager.h
include/mythtv/libmyth/netutils.h
include/mythtv/libmyth/oldsettings.h
include/mythtv/libmyth/output.h
include/mythtv/libmyth/programinfo.h
include/mythtv/libmyth/programtypes.h
include/mythtv/libmyth/recordingtypes.h
include/mythtv/libmyth/remotefile.h
include/mythtv/libmyth/remoteutil.h
include/mythtv/libmyth/rssparse.h
include/mythtv/libmyth/schemawizard.h
include/mythtv/libmyth/settings.h
include/mythtv/libmyth/standardsettings.h
include/mythtv/libmyth/storagegroupeditor.h
include/mythtv/libmyth/uitypes.h
include/mythtv/libmyth/virtualkeyboard_qt.h
include/mythtv/libmyth/visual.h
include/mythtv/libmyth/volumebase.h
include/mythtv/libmyth/xmlparse.h
include/mythtv/libmythbase/autodeletedeque.h
include/mythtv/libmythbase/bonjourregister.h
include/mythtv/libmythbase/bswap.h
@ -196,7 +224,6 @@ include/mythtv/libmythbase/iso3166.h
include/mythtv/libmythbase/iso639.h
include/mythtv/libmythbase/lcddevice.h
include/mythtv/libmythbase/loggingserver.h
include/mythtv/libmythbase/mcodecs.h
include/mythtv/libmythbase/mthread.h
include/mythtv/libmythbase/mthreadpool.h
include/mythtv/libmythbase/mythbaseexp.h
@ -222,6 +249,7 @@ include/mythtv/libmythbase/mythobservable.h
include/mythtv/libmythbase/mythplugin.h
include/mythtv/libmythbase/mythpluginapi.h
include/mythtv/libmythbase/mythqtcompat.h
include/mythtv/libmythbase/mythsession.h
include/mythtv/libmythbase/mythsingledownload.h
include/mythtv/libmythbase/mythsocket.h
include/mythtv/libmythbase/mythsocket_cb.h
@ -245,23 +273,44 @@ include/mythtv/libmythbase/version.h
include/mythtv/libmythservicecontracts/datacontracthelper.h
include/mythtv/libmythservicecontracts/datacontracts/artworkInfo.h
include/mythtv/libmythservicecontracts/datacontracts/artworkInfoList.h
include/mythtv/libmythservicecontracts/datacontracts/backendInfo.h
include/mythtv/libmythservicecontracts/datacontracts/blurayInfo.h
include/mythtv/libmythservicecontracts/datacontracts/buildInfo.h
include/mythtv/libmythservicecontracts/datacontracts/captureCard.h
include/mythtv/libmythservicecontracts/datacontracts/captureCardList.h
include/mythtv/libmythservicecontracts/datacontracts/castMember.h
include/mythtv/libmythservicecontracts/datacontracts/castMemberList.h
include/mythtv/libmythservicecontracts/datacontracts/channelGroup.h
include/mythtv/libmythservicecontracts/datacontracts/channelGroupList.h
include/mythtv/libmythservicecontracts/datacontracts/channelInfoList.h
include/mythtv/libmythservicecontracts/datacontracts/connectionInfo.h
include/mythtv/libmythservicecontracts/datacontracts/cutList.h
include/mythtv/libmythservicecontracts/datacontracts/cutting.h
include/mythtv/libmythservicecontracts/datacontracts/databaseInfo.h
include/mythtv/libmythservicecontracts/datacontracts/enum.h
include/mythtv/libmythservicecontracts/datacontracts/enumItem.h
include/mythtv/libmythservicecontracts/datacontracts/envInfo.h
include/mythtv/libmythservicecontracts/datacontracts/frontendActionList.h
include/mythtv/libmythservicecontracts/datacontracts/frontendStatus.h
include/mythtv/libmythservicecontracts/datacontracts/imageMetadataInfo.h
include/mythtv/libmythservicecontracts/datacontracts/imageMetadataInfoList.h
include/mythtv/libmythservicecontracts/datacontracts/imageSyncInfo.h
include/mythtv/libmythservicecontracts/datacontracts/input.h
include/mythtv/libmythservicecontracts/datacontracts/inputList.h
include/mythtv/libmythservicecontracts/datacontracts/labelValue.h
include/mythtv/libmythservicecontracts/datacontracts/lineup.h
include/mythtv/libmythservicecontracts/datacontracts/liveStreamInfo.h
include/mythtv/libmythservicecontracts/datacontracts/liveStreamInfoList.h
include/mythtv/libmythservicecontracts/datacontracts/logInfo.h
include/mythtv/libmythservicecontracts/datacontracts/logMessage.h
include/mythtv/libmythservicecontracts/datacontracts/logMessageList.h
include/mythtv/libmythservicecontracts/datacontracts/musicMetadataInfo.h
include/mythtv/libmythservicecontracts/datacontracts/musicMetadataInfoList.h
include/mythtv/libmythservicecontracts/datacontracts/programAndChannel.h
include/mythtv/libmythservicecontracts/datacontracts/programGuide.h
include/mythtv/libmythservicecontracts/datacontracts/recRule.h
include/mythtv/libmythservicecontracts/datacontracts/recRuleFilter.h
include/mythtv/libmythservicecontracts/datacontracts/recRuleFilterList.h
include/mythtv/libmythservicecontracts/datacontracts/recRuleList.h
include/mythtv/libmythservicecontracts/datacontracts/recording.h
include/mythtv/libmythservicecontracts/datacontracts/settingList.h
@ -278,6 +327,7 @@ include/mythtv/libmythservicecontracts/datacontracts/videoMultiplexList.h
include/mythtv/libmythservicecontracts/datacontracts/videoSource.h
include/mythtv/libmythservicecontracts/datacontracts/videoSourceList.h
include/mythtv/libmythservicecontracts/datacontracts/wolInfo.h
include/mythtv/libmythservicecontracts/enums/recStatus.h
include/mythtv/libmythservicecontracts/service.h
include/mythtv/libmythservicecontracts/serviceexp.h
include/mythtv/libmythservicecontracts/services/captureServices.h
@ -286,7 +336,10 @@ include/mythtv/libmythservicecontracts/services/contentServices.h
include/mythtv/libmythservicecontracts/services/dvrServices.h
include/mythtv/libmythservicecontracts/services/frontendServices.h
include/mythtv/libmythservicecontracts/services/guideServices.h
include/mythtv/libmythservicecontracts/services/imageServices.h
include/mythtv/libmythservicecontracts/services/musicServices.h
include/mythtv/libmythservicecontracts/services/mythServices.h
include/mythtv/libmythservicecontracts/services/rttiServices.h
include/mythtv/libmythservicecontracts/services/videoServices.h
include/mythtv/libmythui/mythdialogbox.h
include/mythtv/libmythui/mythfontproperties.h
@ -344,18 +397,20 @@ include/mythtv/libswresample/version.h
include/mythtv/libswscale/swscale.h
include/mythtv/libswscale/version.h
include/mythtv/loggingserver.h
include/mythtv/mcodecs.h
include/mythtv/metadata/bluraymetadata.h
include/mythtv/metadata/cleanup.h
include/mythtv/metadata/dbaccess.h
include/mythtv/metadata/dirscan.h
include/mythtv/metadata/globals.h
include/mythtv/metadata/imagemanager.h
include/mythtv/metadata/imagemetadata.h
include/mythtv/metadata/imagetypes.h
include/mythtv/metadata/lyricsdata.h
include/mythtv/metadata/metadatacommon.h
include/mythtv/metadata/metadatadownload.h
include/mythtv/metadata/metadatafactory.h
include/mythtv/metadata/metadatagrabber.h
include/mythtv/metadata/metadataimagedownload.h
include/mythtv/metadata/metadataimagehelper.h
include/mythtv/metadata/metaio.h
include/mythtv/metadata/metaioavfcomment.h
include/mythtv/metadata/metaioflacvorbis.h
@ -364,6 +419,7 @@ include/mythtv/metadata/metaiomp4.h
include/mythtv/metadata/metaiooggvorbis.h
include/mythtv/metadata/metaiotaglib.h
include/mythtv/metadata/metaiowavpack.h
include/mythtv/metadata/musicfilescanner.h
include/mythtv/metadata/musicmetadata.h
include/mythtv/metadata/musicutils.h
include/mythtv/metadata/mythmetaexp.h
@ -376,9 +432,11 @@ include/mythtv/metadata/videometadatalistmanager.h
include/mythtv/metadata/videoscan.h
include/mythtv/metadata/videoutils.h
include/mythtv/metadataimagehelper.h
include/mythtv/minilzo.h
include/mythtv/mpeg2dec/mpeg2.h
include/mythtv/mthread.h
include/mythtv/mthreadpool.h
include/mythtv/mythavutil.h
include/mythtv/mythbaseexp.h
include/mythtv/mythcdrom.h
include/mythtv/mythcommandlineparser.h
@ -399,6 +457,7 @@ include/mythtv/mythdirs.h
include/mythtv/mythdownloadmanager.h
include/mythtv/mythevent.h
include/mythtv/mythexp.h
include/mythtv/mythframe.h
include/mythtv/mythlocale.h
include/mythtv/mythlogging.h
include/mythtv/mythmedia.h
@ -409,6 +468,7 @@ include/mythtv/mythplugin.h
include/mythtv/mythpluginapi.h
include/mythtv/mythqtcompat.h
include/mythtv/mythrssmanager.h
include/mythtv/mythsession.h
include/mythtv/mythsingledownload.h
include/mythtv/mythsocket.h
include/mythtv/mythsocket_cb.h
@ -425,7 +485,6 @@ include/mythtv/mythwidgets.h
include/mythtv/mythwizard.h
include/mythtv/netgrabbermanager.h
include/mythtv/netutils.h
include/mythtv/oldsettings.h
include/mythtv/output.h
include/mythtv/playgroup.h
include/mythtv/plist.h
@ -442,10 +501,11 @@ include/mythtv/schemawizard.h
include/mythtv/serverpool.h
include/mythtv/settings.h
include/mythtv/signalhandling.h
include/mythtv/standardsettings.h
include/mythtv/storagegroup.h
include/mythtv/storagegroupeditor.h
include/mythtv/threadedfilewriter.h
include/mythtv/uitypes.h
include/mythtv/udfread.h
include/mythtv/upnp/bufferedsocketdevice.h
include/mythtv/upnp/configuration.h
include/mythtv/upnp/eventing.h
@ -468,6 +528,7 @@ include/mythtv/upnp/upnpcds.h
include/mythtv/upnp/upnpcdsobjects.h
include/mythtv/upnp/upnpcmgr.h
include/mythtv/upnp/upnpdevice.h
include/mythtv/upnp/upnphelpers.h
include/mythtv/upnp/upnpsubscription.h
include/mythtv/upnp/upnptaskcache.h
include/mythtv/upnp/upnptaskevent.h
@ -476,76 +537,71 @@ include/mythtv/upnp/upnptasksearch.h
include/mythtv/upnp/upnputil.h
include/mythtv/upnp/wsdl.h
include/mythtv/upnp/xmlSerializer.h
include/mythtv/upnp/xsd.h
include/mythtv/verbosedefs.h
include/mythtv/version.h
include/mythtv/virtualkeyboard_qt.h
include/mythtv/visual.h
include/mythtv/volumebase.h
include/mythtv/xmlparse.h
lib/libmyth-0.27.so
lib/libmyth-0.27.so.0
lib/libmyth-0.27.so.0.27
lib/libmyth-0.27.so.0.27.0
lib/libmyth-29.so
lib/libmyth-29.so.29
lib/libmyth-29.so.29.0
lib/libmyth-29.so.29.0.0
lib/libmythavcodec.so
lib/libmythavcodec.so.54
lib/libmythavcodec.so.54.92.100
lib/libmythavcodec.so.57
lib/libmythavcodec.so.57.64.100
lib/libmythavdevice.so
lib/libmythavdevice.so.54
lib/libmythavdevice.so.54.3.103
lib/libmythavdevice.so.57
lib/libmythavdevice.so.57.1.100
lib/libmythavfilter.so
lib/libmythavfilter.so.3
lib/libmythavfilter.so.3.42.103
lib/libmythavfilter.so.6
lib/libmythavfilter.so.6.65.100
lib/libmythavformat.so
lib/libmythavformat.so.54
lib/libmythavformat.so.54.63.104
lib/libmythavformat.so.57
lib/libmythavformat.so.57.56.100
lib/libmythavutil.so
lib/libmythavutil.so.52
lib/libmythavutil.so.52.18.100
lib/libmythbase-0.27.so
lib/libmythbase-0.27.so.0
lib/libmythbase-0.27.so.0.27
lib/libmythbase-0.27.so.0.27.0
lib/libmythfreemheg-0.27.so
lib/libmythfreemheg-0.27.so.0
lib/libmythfreemheg-0.27.so.0.27
lib/libmythfreemheg-0.27.so.0.27.0
lib/libmythmetadata-0.27.so
lib/libmythmetadata-0.27.so.0
lib/libmythmetadata-0.27.so.0.27
lib/libmythmetadata-0.27.so.0.27.0
lib/libmythavutil.so.55
lib/libmythavutil.so.55.34.100
lib/libmythbase-29.so
lib/libmythbase-29.so.29
lib/libmythbase-29.so.29.0
lib/libmythbase-29.so.29.0.0
lib/libmythfreemheg-29.so
lib/libmythfreemheg-29.so.29
lib/libmythfreemheg-29.so.29.0
lib/libmythfreemheg-29.so.29.0.0
lib/libmythmetadata-29.so
lib/libmythmetadata-29.so.29
lib/libmythmetadata-29.so.29.0
lib/libmythmetadata-29.so.29.0.0
lib/libmythpostproc.so
lib/libmythpostproc.so.52
lib/libmythpostproc.so.52.2.100
lib/libmythprotoserver-0.27.so
lib/libmythprotoserver-0.27.so.0
lib/libmythprotoserver-0.27.so.0.27
lib/libmythprotoserver-0.27.so.0.27.0
lib/libmythqjson.so
lib/libmythqjson.so.0
lib/libmythqjson.so.0.7
lib/libmythqjson.so.0.7.1
lib/libmythservicecontracts-0.27.so
lib/libmythservicecontracts-0.27.so.0
lib/libmythservicecontracts-0.27.so.0.27
lib/libmythservicecontracts-0.27.so.0.27.0
lib/libmythpostproc.so.54
lib/libmythpostproc.so.54.1.100
lib/libmythprotoserver-29.so
lib/libmythprotoserver-29.so.29
lib/libmythprotoserver-29.so.29.0
lib/libmythprotoserver-29.so.29.0.0
lib/libmythservicecontracts-29.so
lib/libmythservicecontracts-29.so.29
lib/libmythservicecontracts-29.so.29.0
lib/libmythservicecontracts-29.so.29.0.0
lib/libmythswresample.so
lib/libmythswresample.so.0
lib/libmythswresample.so.0.17.102
lib/libmythswresample.so.2
lib/libmythswresample.so.2.3.100
lib/libmythswscale.so
lib/libmythswscale.so.2
lib/libmythswscale.so.2.2.100
lib/libmythtv-0.27.so
lib/libmythtv-0.27.so.0
lib/libmythtv-0.27.so.0.27
lib/libmythtv-0.27.so.0.27.0
lib/libmythui-0.27.so
lib/libmythui-0.27.so.0
lib/libmythui-0.27.so.0.27
lib/libmythui-0.27.so.0.27.0
lib/libmythupnp-0.27.so
lib/libmythupnp-0.27.so.0
lib/libmythupnp-0.27.so.0.27
lib/libmythupnp-0.27.so.0.27.0
lib/libmythswscale.so.4
lib/libmythswscale.so.4.2.100
lib/libmythtv-29.so
lib/libmythtv-29.so.29
lib/libmythtv-29.so.29.0
lib/libmythtv-29.so.29.0.0
lib/libmythui-29.so
lib/libmythui-29.so.29
lib/libmythui-29.so.29.0
lib/libmythui-29.so.29.0.0
lib/libmythupnp-29.so
lib/libmythupnp-29.so.29
lib/libmythupnp-29.so.29.0
lib/libmythupnp-29.so.29.0.0
lib/mythtv/filters/libadjust.so
lib/mythtv/filters/libbobdeint.so
lib/mythtv/filters/libcrop.so
@ -595,99 +651,114 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/fonts/Tiresias Infofont.ttf
%%DATADIR%%/fonts/texgyrechorus-mediumitalic.otf
%%DATADIR%%/fonts/tiresias_gpl3.txt
%%DATADIR%%/html/3rdParty/jquery/MYTH_README
%%DATADIR%%/html/3rdParty/jquery/galleria/LICENSE
%%DATADIR%%/html/3rdParty/jquery/galleria/galleria.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/flickr/flickr-demo.html
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/flickr/flickr-loader.gif
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/flickr/galleria.flickr.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/flickr/galleria.flickr.min.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/flickr/loader.gif
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/history/galleria.history.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/history/galleria.history.min.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/history/history-demo.html
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/picasa/galleria.picasa.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/picasa/galleria.picasa.min.js
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/picasa/loader.gif
%%DATADIR%%/html/3rdParty/jquery/galleria/plugins/picasa/picasa-demo.html
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/README.rst
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/classic-demo.html
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/classic-loader.gif
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/classic-map.png
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/galleria.classic.css
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/galleria.classic.js
%%DATADIR%%/html/3rdParty/jquery/galleria/themes/classic/galleria.classic.min.js
%%DATADIR%%/html/3rdParty/jquery/jquery-2.0.3.js
%%DATADIR%%/html/3rdParty/jquery/jquery-2.0.3.min.js
%%DATADIR%%/html/3rdParty/jquery/jquery-2.1.4.min.js
%%DATADIR%%/html/3rdParty/jquery/jqueryContextMenu/js/jquery.contextmenu.js
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/application.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/code.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/css.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/db.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/directory.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/doc.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/file.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/film.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/flash.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/folder_open.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/html.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/java.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/linux.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/music.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/pdf.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/php.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/picture.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/ppt.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/psd.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/ruby.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/script.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/spinner.gif
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/txt.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/xls.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/images/zip.png
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/jqueryFileTree.css
%%DATADIR%%/html/3rdParty/jquery/jqueryFileTree/jqueryFileTree.js
%%DATADIR%%/html/3rdParty/jquery/jqueryGrid/css/ui.jqgrid.css
%%DATADIR%%/html/3rdParty/jquery/jqueryGrid/js/grid.locale-en.js
%%DATADIR%%/html/3rdParty/jquery/jqueryGrid/js/jquery.jqGrid.js
%%DATADIR%%/html/3rdParty/jquery/jqueryJScroll/README.md
%%DATADIR%%/html/3rdParty/jquery/jqueryJScroll/jquery.jscroll.js
%%DATADIR%%/html/3rdParty/jquery/jqueryJScroll/jscroll.jquery.json
%%DATADIR%%/html/3rdParty/jquery/jqueryMultiSelect/css/jquery.multiselect.css
%%DATADIR%%/html/3rdParty/jquery/jqueryMultiSelect/css/ui.multiselect.css
%%DATADIR%%/html/3rdParty/jquery/jqueryMultiSelect/js/jquery.multiselect.js
%%DATADIR%%/html/3rdParty/jquery/jqueryMultiSelect/js/ui-multiselect-en.js
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_flat_30_cccccc_40x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_flat_50_5c5c5c_40x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_glass_40_ffc73d_1x400.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_hexagon_10_000000_12x10.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_highlight-hard_20_0b6a98_1x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_highlight-soft_33_003147_1x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_highlight-soft_35_222222_1x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_highlight-soft_44_444444_1x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-icons_222222_256x240.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-icons_4b8e0b_256x240.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-icons_a83300_256x240.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-icons_cccccc_256x240.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/images/ui-icons_ffffff_256x240.png
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/jquery-ui-1.10.3.css
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/css/jquery-ui.css
%%DATADIR%%/html/3rdParty/jquery/jqueryUI/js/jquery-ui-1.10.3.js
%%DATADIR%%/html/3rdParty/jwplayer.qsp
%%DATADIR%%/html/backend_index.qsp
%%DATADIR%%/html/css/Status.css
%%DATADIR%%/html/css/images/ui-bg_flat_30_cccccc_40x100.png
%%DATADIR%%/html/css/images/ui-bg_flat_50_5c5c5c_40x100.png
%%DATADIR%%/html/css/images/ui-bg_glass_40_ffc73d_1x400.png
%%DATADIR%%/html/css/images/ui-bg_hexagon_10_000000_12x10.png
%%DATADIR%%/html/css/images/ui-bg_highlight-hard_20_0b6a98_1x100.png
%%DATADIR%%/html/css/images/ui-bg_highlight-soft_33_003147_1x100.png
%%DATADIR%%/html/css/images/ui-bg_highlight-soft_35_222222_1x100.png
%%DATADIR%%/html/css/images/ui-bg_highlight-soft_44_444444_1x100.png
%%DATADIR%%/html/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
%%DATADIR%%/html/css/images/ui-icons_222222_256x240.png
%%DATADIR%%/html/css/images/ui-icons_4b8e0b_256x240.png
%%DATADIR%%/html/css/images/ui-icons_a83300_256x240.png
%%DATADIR%%/html/css/images/ui-icons_cccccc_256x240.png
%%DATADIR%%/html/css/images/ui-icons_ffffff_256x240.png
%%DATADIR%%/html/css/jquery-ui.css
%%DATADIR%%/html/css/menustyle.css
%%DATADIR%%/html/css/settings.css
%%DATADIR%%/html/css/setup.css
%%DATADIR%%/html/css/site.css
%%DATADIR%%/html/css/ui.jqgrid.css
%%DATADIR%%/html/css/ui.multiselect.css
%%DATADIR%%/html/css/wsdl.css
%%DATADIR%%/html/debug/websocket.qsp
%%DATADIR%%/html/frontend_index.qsp
%%DATADIR%%/html/images/blank.gif
%%DATADIR%%/html/images/checkerboard_100x100.png
%%DATADIR%%/html/images/favicon.ico
%%DATADIR%%/html/images/icons/README
%%DATADIR%%/html/images/icons/upnp_large_icon.jpg
%%DATADIR%%/html/images/icons/upnp_large_icon.png
%%DATADIR%%/html/images/icons/upnp_small_icon.jpg
%%DATADIR%%/html/images/icons/upnp_small_icon.png
%%DATADIR%%/html/images/menu-button-bg.gif
%%DATADIR%%/html/images/mythtv.png
%%DATADIR%%/html/images/ui-bg_flat_30_cccccc_40x100.png
%%DATADIR%%/html/images/ui-bg_flat_50_5c5c5c_40x100.png
%%DATADIR%%/html/images/ui-bg_glass_40_ffc73d_1x400.png
%%DATADIR%%/html/images/ui-bg_hexagon_10_000000_12x10.png
%%DATADIR%%/html/images/ui-bg_highlight-hard_20_0b6a98_1x100.png
%%DATADIR%%/html/images/ui-bg_highlight-soft_33_003147_1x100.png
%%DATADIR%%/html/images/ui-bg_highlight-soft_35_222222_1x100.png
%%DATADIR%%/html/images/ui-bg_highlight-soft_44_444444_1x100.png
%%DATADIR%%/html/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
%%DATADIR%%/html/images/ui-icons_222222_256x240.png
%%DATADIR%%/html/images/ui-icons_4b8e0b_256x240.png
%%DATADIR%%/html/images/ui-icons_a83300_256x240.png
%%DATADIR%%/html/images/ui-icons_cccccc_256x240.png
%%DATADIR%%/html/images/ui-icons_ffffff_256x240.png
%%DATADIR%%/html/index.html
%%DATADIR%%/html/js/databaseutil.js
%%DATADIR%%/html/js/fileutil.js
%%DATADIR%%/html/js/galleria/LICENSE
%%DATADIR%%/html/js/galleria/galleria-1.2.3.js
%%DATADIR%%/html/js/galleria/galleria-1.2.3.min.js
%%DATADIR%%/html/js/galleria/themes/classic/README.rst
%%DATADIR%%/html/js/galleria/themes/classic/classic-demo.html
%%DATADIR%%/html/js/galleria/themes/classic/classic-loader.gif
%%DATADIR%%/html/js/galleria/themes/classic/classic-map.png
%%DATADIR%%/html/js/galleria/themes/classic/galleria.classic.css
%%DATADIR%%/html/js/galleria/themes/classic/galleria.classic.js
%%DATADIR%%/html/js/galleria/themes/classic/galleria.classic.min.js
%%DATADIR%%/html/js/grid.locale-en.js
%%DATADIR%%/html/js/inspect.js
%%DATADIR%%/html/js/jquery-ui.min.js
%%DATADIR%%/html/js/jquery.contextmenu.js
%%DATADIR%%/html/js/jquery.jqGrid.min.js
%%DATADIR%%/html/js/jquery.min.js
%%DATADIR%%/html/js/jqueryFileTree/images/application.png
%%DATADIR%%/html/js/jqueryFileTree/images/code.png
%%DATADIR%%/html/js/jqueryFileTree/images/css.png
%%DATADIR%%/html/js/jqueryFileTree/images/db.png
%%DATADIR%%/html/js/jqueryFileTree/images/directory.png
%%DATADIR%%/html/js/jqueryFileTree/images/doc.png
%%DATADIR%%/html/js/jqueryFileTree/images/file.png
%%DATADIR%%/html/js/jqueryFileTree/images/film.png
%%DATADIR%%/html/js/jqueryFileTree/images/flash.png
%%DATADIR%%/html/js/jqueryFileTree/images/folder_open.png
%%DATADIR%%/html/js/jqueryFileTree/images/html.png
%%DATADIR%%/html/js/jqueryFileTree/images/java.png
%%DATADIR%%/html/js/jqueryFileTree/images/linux.png
%%DATADIR%%/html/js/jqueryFileTree/images/music.png
%%DATADIR%%/html/js/jqueryFileTree/images/pdf.png
%%DATADIR%%/html/js/jqueryFileTree/images/php.png
%%DATADIR%%/html/js/jqueryFileTree/images/picture.png
%%DATADIR%%/html/js/jqueryFileTree/images/ppt.png
%%DATADIR%%/html/js/jqueryFileTree/images/psd.png
%%DATADIR%%/html/js/jqueryFileTree/images/ruby.png
%%DATADIR%%/html/js/jqueryFileTree/images/script.png
%%DATADIR%%/html/js/jqueryFileTree/images/spinner.gif
%%DATADIR%%/html/js/jqueryFileTree/images/txt.png
%%DATADIR%%/html/js/jqueryFileTree/images/xls.png
%%DATADIR%%/html/js/jqueryFileTree/images/zip.png
%%DATADIR%%/html/js/jqueryFileTree/jqueryFileTree.css
%%DATADIR%%/html/js/jqueryFileTree/jqueryFileTree.js
%%DATADIR%%/html/js/menu.js
%%DATADIR%%/html/js/ui-multiselect-en.js
%%DATADIR%%/html/js/ui.multiselect.js
%%DATADIR%%/html/js/settings.js
%%DATADIR%%/html/js/util.qjs
%%DATADIR%%/html/js/utility.js
%%DATADIR%%/html/js/websocket_events.js
%%DATADIR%%/html/menu.qsp
%%DATADIR%%/html/misc/css/overview.css
%%DATADIR%%/html/misc/database-backup.html
%%DATADIR%%/html/misc/database-repair.html
%%DATADIR%%/html/misc/databasetabs.html
@ -697,12 +768,15 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/html/misc/js/databasetabs.js
%%DATADIR%%/html/misc/js/hardwareprofile.js
%%DATADIR%%/html/misc/js/messagetab.js
%%DATADIR%%/html/misc/js/overview.js
%%DATADIR%%/html/misc/js/viewlogs.js
%%DATADIR%%/html/misc/message.html
%%DATADIR%%/html/misc/messagetab.html
%%DATADIR%%/html/misc/misc_template.html
%%DATADIR%%/html/misc/overview.qsp
%%DATADIR%%/html/misc/placeholder.html
%%DATADIR%%/html/misc/viewlogs.html
%%DATADIR%%/html/robots.txt
%%DATADIR%%/html/samples/hlstest.qsp
%%DATADIR%%/html/samples/js/samples.js
%%DATADIR%%/html/samples/livestream_rec.qsp
@ -710,9 +784,11 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/html/samples/recorded.qsp
%%DATADIR%%/html/samples/serverside.qsp
%%DATADIR%%/html/samples/storagegroups.qsp
%%DATADIR%%/html/setup/ajax_backends/setting_util.qsp
%%DATADIR%%/html/setup/channeleditor-channeldetail-multi.html
%%DATADIR%%/html/setup/channeleditor-channeldetail.html
%%DATADIR%%/html/setup/channeleditor.html
%%DATADIR%%/html/setup/css/common.css
%%DATADIR%%/html/setup/database.html
%%DATADIR%%/html/setup/expert.html
%%DATADIR%%/html/setup/general.html
@ -723,28 +799,81 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/html/setup/jobqueue-jobs.qsp
%%DATADIR%%/html/setup/jobqueue.html
%%DATADIR%%/html/setup/js/channeleditor.js
%%DATADIR%%/html/setup/js/common.js
%%DATADIR%%/html/setup/js/database.js
%%DATADIR%%/html/setup/js/general.js
%%DATADIR%%/html/setup/js/guidedatasources.js
%%DATADIR%%/html/setup/js/jobqueue.js
%%DATADIR%%/html/setup/js/password.js
%%DATADIR%%/html/setup/js/setup.js
%%DATADIR%%/html/setup/js/storagegroups.js
%%DATADIR%%/html/setup/js/systemevents.js
%%DATADIR%%/html/setup/js/wizard.js
%%DATADIR%%/html/setup/overview.html
%%DATADIR%%/html/setup/password.html
%%DATADIR%%/html/setup/setup_template.html
%%DATADIR%%/html/setup/storagegroups-add-dir.html
%%DATADIR%%/html/setup/storagegroups-add-new.html
%%DATADIR%%/html/setup/storagegroups.html
%%DATADIR%%/html/setup/systemevents.html
%%DATADIR%%/html/setup/webfrontend-settings.qsp
%%DATADIR%%/html/setup/wizard-database.html
%%DATADIR%%/html/setup/wizard-guide_data.html
%%DATADIR%%/html/setup/wizard-media_storage.html
%%DATADIR%%/html/setup/wizard-network.qsp
%%DATADIR%%/html/setup/wizard-recording_devices.html
%%DATADIR%%/html/setup/wizard.html
%%DATADIR%%/html/tv/ajax_backends/dvr_util.qsp
%%DATADIR%%/html/tv/ajax_backends/program_util.qsp
%%DATADIR%%/html/tv/css/category_colors.css
%%DATADIR%%/html/tv/css/common.css
%%DATADIR%%/html/tv/css/guide.css
%%DATADIR%%/html/tv/css/icons.css
%%DATADIR%%/html/tv/css/programsearch.css
%%DATADIR%%/html/tv/css/recordingrules.css
%%DATADIR%%/html/tv/css/recordings.css
%%DATADIR%%/html/tv/css/schedule.css
%%DATADIR%%/html/tv/css/tvplayer.css
%%DATADIR%%/html/tv/css/upcoming.css
%%DATADIR%%/html/tv/guide.qsp
%%DATADIR%%/html/tv/images/blank.png
%%DATADIR%%/html/tv/images/cat_movie.svg
%%DATADIR%%/html/tv/images/channel_icon.svg
%%DATADIR%%/html/tv/images/fl_autoexp.svg
%%DATADIR%%/html/tv/images/fl_bookmark.svg
%%DATADIR%%/html/tv/images/fl_commflag.svg
%%DATADIR%%/html/tv/images/fl_watched.svg
%%DATADIR%%/html/tv/images/hd_1080.svg
%%DATADIR%%/html/tv/images/hd_720.svg
%%DATADIR%%/html/tv/images/hd_tv.svg
%%DATADIR%%/html/tv/images/play_arrow.png
%%DATADIR%%/html/tv/images/play_arrow.svg
%%DATADIR%%/html/tv/images/recording_icons_sprite.svg
%%DATADIR%%/html/tv/images/wastebin.svg
%%DATADIR%%/html/tv/js/common.js
%%DATADIR%%/html/tv/js/constants.js
%%DATADIR%%/html/tv/js/guide.js
%%DATADIR%%/html/tv/js/programsearch.js
%%DATADIR%%/html/tv/js/recordings.js
%%DATADIR%%/html/tv/js/schedule.js
%%DATADIR%%/html/tv/js/tvutil.qjs
%%DATADIR%%/html/tv/js/upcoming.js
%%DATADIR%%/html/tv/programsearch.qsp
%%DATADIR%%/html/tv/recordingrules.qsp
%%DATADIR%%/html/tv/recordings.qsp
%%DATADIR%%/html/tv/schedule.qsp
%%DATADIR%%/html/tv/stream.qsp
%%DATADIR%%/html/tv/tvplayer.qsp
%%DATADIR%%/html/tv/upcoming.qsp
%%DATADIR%%/html/video/css/gallery.css
%%DATADIR%%/html/video/gallery.qsp
%%DATADIR%%/html/video/gallery_detail.qsp
%%DATADIR%%/html/video/images/folder_icon.png
%%DATADIR%%/html/video/images/mv_gallery_dir_up.png
%%DATADIR%%/html/video/images/unknown.png
%%DATADIR%%/html/video/js/gallery.js
%%DATADIR%%/html/video/js/gallery.qjs
%%DATADIR%%/html/xslt/class.xslt
%%DATADIR%%/html/xslt/enum.xslt
%%DATADIR%%/html/xslt/service.xslt
%%DATADIR%%/i18n/mythfrontend_bg.qm
%%DATADIR%%/i18n/mythfrontend_ca.qm
@ -955,6 +1084,7 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/MythCenter/qtlook.txt
%%DATADIR%%/themes/MythCenter/recordings-ui.xml
%%DATADIR%%/themes/MythCenter/schedule-ui.xml
%%DATADIR%%/themes/MythCenter/status-ui.xml
%%DATADIR%%/themes/MythCenter/themeinfo.xml
%%DATADIR%%/themes/MythCenter/title/title_dvd.png
%%DATADIR%%/themes/MythCenter/title/title_gallery.png
@ -1222,7 +1352,6 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/Terra/video/video_gallery_background_selected.png
%%DATADIR%%/themes/Terra/watermarks/README.license
%%DATADIR%%/themes/Terra/watermarks/aerial.png
%%DATADIR%%/themes/Terra/watermarks/appearance.png
%%DATADIR%%/themes/Terra/watermarks/archive.png
%%DATADIR%%/themes/Terra/watermarks/audio.png
%%DATADIR%%/themes/Terra/watermarks/browser.png
@ -1264,6 +1393,7 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/Terra/watermarks/select_music.png
%%DATADIR%%/themes/Terra/watermarks/status.png
%%DATADIR%%/themes/Terra/watermarks/stop_light.png
%%DATADIR%%/themes/Terra/watermarks/themechooser.png
%%DATADIR%%/themes/Terra/watermarks/tools.png
%%DATADIR%%/themes/Terra/watermarks/tv.png
%%DATADIR%%/themes/Terra/watermarks/vcr.png
@ -1433,28 +1563,18 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/default/htmls/notfound.html
%%DATADIR%%/themes/default/htmls/progdetails_page1.html
%%DATADIR%%/themes/default/htmls/progdetails_page2.html
%%DATADIR%%/themes/default/image-ui.xml
%%DATADIR%%/themes/default/keyboard/ar.xml
%%DATADIR%%/themes/default/keyboard/ar_ui.xml
%%DATADIR%%/themes/default/keyboard/da.xml
%%DATADIR%%/themes/default/keyboard/da_ui.xml
%%DATADIR%%/themes/default/keyboard/de.xml
%%DATADIR%%/themes/default/keyboard/de_ui.xml
%%DATADIR%%/themes/default/keyboard/el.xml
%%DATADIR%%/themes/default/keyboard/el_ui.xml
%%DATADIR%%/themes/default/keyboard/en_gb.xml
%%DATADIR%%/themes/default/keyboard/en_gb_ui.xml
%%DATADIR%%/themes/default/keyboard/en_us.xml
%%DATADIR%%/themes/default/keyboard/en_us_ui.xml
%%DATADIR%%/themes/default/keyboard/es.xml
%%DATADIR%%/themes/default/keyboard/es_ui.xml
%%DATADIR%%/themes/default/keyboard/fr.xml
%%DATADIR%%/themes/default/keyboard/fr_ch.xml
%%DATADIR%%/themes/default/keyboard/fr_ch_ui.xml
%%DATADIR%%/themes/default/keyboard/fr_ui.xml
%%DATADIR%%/themes/default/keyboard/he.xml
%%DATADIR%%/themes/default/keyboard/he_ui.xml
%%DATADIR%%/themes/default/keyboard/it.xml
%%DATADIR%%/themes/default/keyboard/it_ui.xml
%%DATADIR%%/themes/default/keyboard/key_down.png
%%DATADIR%%/themes/default/keyboard/key_down_back.png
%%DATADIR%%/themes/default/keyboard/key_down_del.png
@ -1491,14 +1611,11 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/default/keyboard/keyboard.xml
%%DATADIR%%/themes/default/keyboard/leftarrow.png
%%DATADIR%%/themes/default/keyboard/nb.xml
%%DATADIR%%/themes/default/keyboard/nb_ui.xml
%%DATADIR%%/themes/default/keyboard/returnarrow.png
%%DATADIR%%/themes/default/keyboard/rightarrow.png
%%DATADIR%%/themes/default/keyboard/ru.xml
%%DATADIR%%/themes/default/keyboard/ru_ui.xml
%%DATADIR%%/themes/default/keyboard/shiftarrow.png
%%DATADIR%%/themes/default/keyboard/sv.xml
%%DATADIR%%/themes/default/keyboard/sv_ui.xml
%%DATADIR%%/themes/default/lb-arrow.png
%%DATADIR%%/themes/default/lb-check-empty.png
%%DATADIR%%/themes/default/lb-check-full.png
@ -1769,6 +1886,7 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/default/menu_playback.xml
%%DATADIR%%/themes/default/menu_playback_compact.xml
%%DATADIR%%/themes/default/mono.png
%%DATADIR%%/themes/default/musicscanner.png
%%DATADIR%%/themes/default/mv_browse_background.png
%%DATADIR%%/themes/default/mv_browse_selector.png
%%DATADIR%%/themes/default/mv_filerequest.png
@ -1830,9 +1948,13 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/default/shared/directory.png
%%DATADIR%%/themes/default/shared/executable.png
%%DATADIR%%/themes/default/shared/file.png
%%DATADIR%%/themes/default/shared/folder-reg.png
%%DATADIR%%/themes/default/shared/folder-sel.png
%%DATADIR%%/themes/default/shared/grid_back_reg.png
%%DATADIR%%/themes/default/shared/grid_back_sel.png
%%DATADIR%%/themes/default/shared/grid_noimage.png
%%DATADIR%%/themes/default/shared/movie-reg.png
%%DATADIR%%/themes/default/shared/movie-sel.png
%%DATADIR%%/themes/default/shared/secure.png
%%DATADIR%%/themes/default/shared/unsecure.png
%%DATADIR%%/themes/default/shared/updirectory.png
@ -1840,6 +1962,7 @@ lib/mythtv/filters/libyadif.so
%%DATADIR%%/themes/default/solid-container.png
%%DATADIR%%/themes/default/solid-cr-background.png
%%DATADIR%%/themes/default/sr-background.png
%%DATADIR%%/themes/default/standardsetting-ui.xml
%%DATADIR%%/themes/default/status-bar.png
%%DATADIR%%/themes/default/status-ui.xml
%%DATADIR%%/themes/default/stereo.png

View File

@ -3,132 +3,172 @@
PORTNAME= mythtv
DISTVERSIONPREFIX= v
DISTVERSION= 0.27.5
DISTVERSION= 29.1
PORTREVISION?= 0
PORTEPOCH= 1
CATEGORIES= multimedia
MAINTAINER= ports@FreeBSD.org
COMMENT= MythTV is a homebrew PVR project
MAINTAINER?= ports@FreeBSD.org
COMMENT?= MythTV is a homebrew PVR project
LICENSE= GPLv2
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
ONLY_FOR_ARCHS= amd64 i386
LIB_DEPENDS= libmp3lame.so:audio/lame \
libfreetype.so:print/freetype2 \
libtag.so:audio/taglib \
libxml2.so:textproc/libxml2 \
libudf.so:sysutils/libcdio \
libexiv2.so:graphics/exiv2 \
libva.so:multimedia/libva \
libass.so:multimedia/libass \
libfftw3f.so:math/fftw3-float \
libfftw3_threads.so:math/fftw3 \
libjack.so:audio/jack
BUILD_DEPENDS= v4l_compat>=1.0.20100321:multimedia/v4l_compat \
yasm:devel/yasm
RUN_DEPENDS= tv_check:textproc/p5-xmltv \
wget:ftp/wget
CONFLICTS= mythtv-frontend-[0-9]*
libfftw3f.so:math/fftw3-float \
libfreetype.so:print/freetype2 \
libxml2.so:textproc/libxml2
BUILD_DEPENDS= yasm:devel/yasm
USES= gmake iconv libtool pkgconfig pathfix ssl
USE_GITHUB= yes
GH_ACCOUNT= MythTV
USE_GL= gl
USE_LDCONFIG= yes
USE_QT5= buildtools_build core dbus gui imageformats_run \
linguist_build network opengl qmake_build script sql \
sql-mysql_run webkit widgets xml
QT_NONSTANDARD= yes
USE_XORG= x11 xv xrandr xxf86vm xinerama xext xcb
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --prefix="${PREFIX}" --cc="${CC}" --cxx="${CXX}" \
--libxml2-path="${LOCALBASE}/include/libxml2" \
--enable-opengl-video \
--disable-audio-alsa --disable-indev=alsa --disable-outdev=alsa \
--disable-mythlogserver
CONFIGURE_ENV= QMAKESPEC="${QMAKESPEC}" MOC="${MOC}" \
QTDIR="${PREFIX}" PKG_CONFIG_PATH="${LOCALBASE}/libdata/pkgconfig"
MAKE_ENV= QTDIR="${PREFIX}" \
QMAKESPEC="${QMAKESPEC}"
NOPRECIOUSMAKEVARS= # don't override ARCH in ffmpeg makefiles
DESTDIRNAME= INSTALL_ROOT
CPPFLAGS+= ${QTCPPFLAGS}
LDFLAGS+= -L${LOCALBASE}/lib
REINPLACE_ARGS= -i ""
WRKSRC_SUBDIR= ${PORTNAME}
ONLY_FOR_ARCHS= i386 amd64
DESKTOP_ENTRIES="MythTV Frontend" "MythTV is a homebrew PVR project" "" \
"mythfrontend" "AudioVideo;Video;" false
.if defined(SLAVEPORT) && ${SLAVEPORT} == "frontend"
CONFLICTS_INSTALL= mythtv
CONFIGURE_ARGS+=--disable-dvb --disable-firewire --disable-hdhomerun \
--disable-hdpvr --disable-ivtv --disable-v4l2 \
--without-bindings=perl,python,php
EXTRA_PATCHES= ${FILESDIR}/extrapatch-programs_programs.pro
OPTIONS_EXCLUDE+= BINDINGS LIRC MYSQL
.else
CONFLICTS_INSTALL= mythtv-frontend
BUILD_DEPENDS+= v4l_compat>=1.0.20100321:multimedia/v4l_compat
RUN_DEPENDS+= tv_check:textproc/p5-xmltv \
wget:ftp/wget
USES+= perl5 python:2.7 shebangfix
USE_PERL5= run build
NOPRECIOUSMAKEVARS= # don't override $(ARCH) in ffmpeg makefiles
USES= gmake iconv libtool perl5 pkgconfig pathfix shebangfix ssl
SHEBANG_FILES= programs/scripts/database/mythconverg_backup.pl \
programs/scripts/database/mythconverg_restore.pl
USE_QT4= corelib dbus gui sql network script linguist_build l10n sql-mysql_run \
moc_build qmake_build rcc_build uic_build imageformats webkit xml
USE_GL= gl
USE_XORG= x11 xv xrandr xxf86vm xinerama xext
QT_NONSTANDARD= yes
HAS_CONFIGURE= yes
USE_LDCONFIG= ${PREFIX}/lib/mythtv/filters
REINPLACE_ARGS= -i ""
USE_RC_SUBR= mythbackend
DESTDIRNAME= INSTALL_ROOT
SHEBANG_FILES= programs/scripts/database/*.pl \
programs/scripts/internetcontent/*.py \
programs/scripts/internetcontent/*.pl \
programs/scripts/internetcontent/nv_python_libs/*.py \
programs/scripts/hardwareprofile/*.py \
programs/scripts/metadata/Television/ttvdb.py \
programs/scripts/metadata/Movie/tmdb3.py
CONFIGURE_ARGS+=--dvb-path="${LOCALBASE}/include" \
--enable-ivtv --enable-v4l2 --enable-xv
USERS= mythtv
GROUPS= mythtv
MAKE_ENV= QTDIR="${PREFIX}" \
QMAKESPEC="${QMAKESPEC}"
DATADIR= ${PREFIX}/share/mythtv
SUB_FILES= pkg-message
.endif
CPPFLAGS+= ${QTCPPFLAGS}
CONFIGURE_ENV+= QMAKESPEC="${QMAKESPEC}" MOC="${MOC}" \
QTDIR="${PREFIX}"
CONFIGURE_ENV+= PKG_CONFIG_PATH="${LOCALBASE}/libdata/pkgconfig"
LDFLAGS+= -L${LOCALBASE}/lib
OPTIONS_DEFINE= BINDINGS JACK LIRC MYSQL PULSEAUDIO VDPAU
OPTIONS_DEFAULT= BINDINGS VDPAU
OPTIONS_SUB= yes
CONFIGURE_ARGS= --prefix="${PREFIX}" --cc="${CC}" --cxx="${CXX}" --dvb-path="${LOCALBASE}/include/libdvbv5" \
--libxml2-path="${LOCALBASE}/include/libxml2" --enable-v4l2 --enable-ivtv --enable-xv \
--disable-audio-alsa --disable-indev=alsa --disable-outdev=alsa --disable-mythlogserver
BINDINGS_DESC= Perl and Python bindings
BINDINGS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}MySQLdb>=1.2.2:databases/py-MySQLdb@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}urlgrabber>=3.1.0_1:www/py-urlgrabber@${PY_FLAVOR} \
p5-DBI>=0:databases/p5-DBI \
p5-DBD-mysql>0:databases/p5-DBD-mysql \
p5-Net-UPnP>=0:multimedia/p5-Net-UPnP \
p5-IO-Socket-INET6>=2.51:net/p5-IO-Socket-INET6 \
p5-HTTP-Request-Params>=0:www/p5-HTTP-Request-Params \
p5-LWP-UserAgent-Determined>=0:www/p5-LWP-UserAgent-Determined
BINDINGS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}MySQLdb>=1.2.2:databases/py-MySQLdb@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}futures>0:devel/py-futures@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests-cache>0:www/py-requests-cache@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}urlgrabber>=3.1.0_1:www/py-urlgrabber@${PY_FLAVOR} \
p5-DBI>=0:databases/p5-DBI \
p5-DBD-mysql>0:databases/p5-DBD-mysql \
p5-Net-UPnP>=0:multimedia/p5-Net-UPnP \
p5-IO-Socket-INET6>=2.51:net/p5-IO-Socket-INET6 \
p5-HTTP-Request-Params>=0:www/p5-HTTP-Request-Params \
p5-LWP-UserAgent-Determined>=0:www/p5-LWP-UserAgent-Determined
BINDINGS_CONFIGURE_ON= --python=${PYTHON_CMD}
BINDINGS_CONFIGURE_OFF= --without-bindings=perl,python
QMAKESPEC?= ${LOCALBASE}/share/qt4/mkspecs/freebsd-g++
OPTIONS_DEFINE= BINDINGS LIRC MYSQL OPENGL VDPAU
OPTIONS_DEFAULT= BINDINGS OPENGL VDPAU
OPTIONS_SUB= yes
BINDINGS_DESC= Perl and Python bindings
JACK_LIB_DEPENDS= libjack.so:audio/jack
JACK_CONFIGURE_ON= --enable-audio-jack --enable-indev=jack
JACK_CONFIGURE_OFF= --disable-audio-jack --disable-indev=jack
LIRC_LIB_DEPENDS= liblirc_client.so:comms/lirc
MYSQL_USES= mysql:client,server
MYSQL_USES_OFF= mysql
LIRC_CONFIGURE_ENABLE= lirc
MYSQL_DESC= Install MySQL server in addition to client
MYSQL_USES= mysql:client,server
MYSQL_USES_OFF= mysql
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CONFIGURE_ENABLE= audio-pulse audio-pulseoutput
VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau
VDPAU_CONFIGURE_ENABLE= vdpau
OPENGL_CONFIGURE_ENABLE= opengl-video
OPENGL_USE= QT4=opengl
.include <bsd.port.options.mk>
SUB_FILES= pkg-message
.if ${PORT_OPTIONS:MBINDINGS}
CONFIGURE_ARGS+= --python=${PYTHON_CMD}
USES+= python:2.7
PYDISTUTILS_PKGNAME=MythTV
PYDISTUTILS_PKGVERSION=0.27._1
BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}MySQLdb>=1.2.2:databases/py-MySQLdb@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}urlgrabber>=3.1.0_1:www/py-urlgrabber@${PY_FLAVOR} \
p5-HTTP-Request-Params>=0:www/p5-HTTP-Request-Params \
p5-LWP-UserAgent-Determined>=0:www/p5-LWP-UserAgent-Determined \
p5-Net-UPnP>=0:multimedia/p5-Net-UPnP \
p5-IO-Socket-INET6>=2.51:net/p5-IO-Socket-INET6 \
p5-DBI>=0:databases/p5-DBI \
p5-DBD-mysql>0:databases/p5-DBD-mysql
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}MySQLdb>=1.2.2:databases/py-MySQLdb@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}urlgrabber>=3.1.0_1:www/py-urlgrabber@${PY_FLAVOR} \
p5-HTTP-Request-Params>=0:www/p5-HTTP-Request-Params \
p5-LWP-UserAgent-Determined>=0:www/p5-LWP-UserAgent-Determined \
p5-Net-UPnP>=0:multimedia/p5-Net-UPnP \
p5-IO-Socket-INET6>=2.51:net/p5-IO-Socket-INET6 \
p5-DBI>=0:databases/p5-DBI \
p5-DBD-mysql>0:databases/p5-DBD-mysql
.else
CONFIGURE_ARGS+=--without-bindings=perl,python
.endif
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
${WRKSRC}/configure \
${WRKSRC}/libs/libmythtv/libmythtv.pro \
${WRKSRC}/bindings/perl/MythTV/Recording.pm \
${WRKSRC}/programs/mythtranscode/replex/Makefile.standalone \
${WRKSRC}/programs/mythtranscode/external/replex/Makefile.standalone \
${WRKSRC}/programs/scripts/database/mythconverg_backup.pl \
${WRKSRC}/programs/scripts/database/mythconverg_restore.pl \
${WRKSRC}/programs/mythcommflag/mythcommflag-analyze
post-install:
.if !defined(SLAVEPORT)
@${MKDIR} ${STAGEDIR}${PREFIX}/share/mythtv/database
@${CP} ${WRKSRC}/database/mc.sql ${STAGEDIR}${PREFIX}/share/mythtv/database
${INSTALL_DATA} ${WRKSRC}/database/mc.sql ${STAGEDIR}${PREFIX}/share/mythtv/database
.endif
@${FIND} ${STAGEDIR}${PREFIX}/bin -type f -exec ${SH} -c "${FILE} -i '{}' | \
${GREP} -q 'x-executable; charset=binary'" \; -print | ${XARGS} ${STRIP_CMD}
@(cd ${STAGEDIR}${PREFIX} && ${STRIP_CMD} lib/libmyth*.so lib/mythtv/filters/lib*.so)
# Apply additional substitutions to pkg-plist generated by the 'makeplist' target
create-plist: stage
@(cd ${.CURDIR} && ${MAKE} makeplist > pkg-plist && \
${REINPLACE_CMD} -E \
-e '1d' -e '/etc\/rc.d\/mythbackend/d' -e '/packlist/d' \
-e '/mythfrontend.desktop/d' \
-e '/(^%%PYTHON_SITELIBDIR%%|^%%SITE_PERL%%|mythpython|mythwikiscripts)/s|^|%%BINDINGS%%|g' \
pkg-plist)
.include <bsd.port.mk>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1513802652
SHA256 (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 7e625f94332effeadfba8e7ae7c98d44a83bfc25b7c59e39adce67dc2f4e1e1b
SIZE (MythTV-mythtv-v0.27.5_GH0.tar.gz) = 85652939
TIMESTAMP = 1520812634
SHA256 (MythTV-mythtv-v29.1_GH0.tar.gz) = 04a84eb0ded2d2b123624ab2b2e1b8cf824ff4bf8216e452b2516deb929082b2
SIZE (MythTV-mythtv-v29.1_GH0.tar.gz) = 105616234

View File

@ -0,0 +1,17 @@
Disable backend components for multimedia/mythtv-frontend
--- programs/programs.pro.orig 2018-01-11 12:39:22 UTC
+++ programs/programs.pro
@@ -15,12 +15,4 @@ using_frontend {
!mingw:!win32-msvc*: SUBDIRS += mythtranscode/external/replex
}
-using_backend {
- SUBDIRS += mythbackend mythfilldatabase mythtv-setup
- SUBDIRS += mythmetadatalookup
-
- !win32-msvc*:SUBDIRS += scripts
- !mingw:!win32-msvc*: SUBDIRS += mythfilerecorder
-}
-
using_mythtranscode: SUBDIRS += mythtranscode

View File

@ -0,0 +1,239 @@
From 0e0a413725e0221e1a9d0b7595e22bf57e23a09c Mon Sep 17 00:00:00 2001
From: "Ronald S. Bultje" <rsbultje@gmail.com>
Date: Mon, 5 Dec 2016 08:02:33 -0500
Subject: [PATCH] http: make length/offset-related variables unsigned.
Fixes #5992, reported and found by Paul Cher <paulcher@icloud.com>.
(cherry picked from commit 2a05c8f813de6f2278827734bf8102291e7484aa)
---
libavformat/http.c | 70 +++++++++++++++++++++++++++++-------------------------
1 file changed, 38 insertions(+), 32 deletions(-)
diff --git libavformat/http.c libavformat/http.c
index d48958d8a3c..13f3be42271 100644
--- external/FFmpeg/libavformat/http.c
+++ external/FFmpeg/libavformat/http.c
@@ -62,8 +62,8 @@ typedef struct HTTPContext {
int line_count;
int http_code;
/* Used if "Transfer-Encoding: chunked" otherwise -1. */
- int64_t chunksize;
- int64_t off, end_off, filesize;
+ uint64_t chunksize;
+ uint64_t off, end_off, filesize;
char *location;
HTTPAuthState auth_state;
HTTPAuthState proxy_auth_state;
@@ -95,9 +95,9 @@ typedef struct HTTPContext {
AVDictionary *cookie_dict;
int icy;
/* how much data was read since the last ICY metadata packet */
- int icy_data_read;
+ uint64_t icy_data_read;
/* after how many bytes of read data a new metadata packet will be found */
- int icy_metaint;
+ uint64_t icy_metaint;
char *icy_metadata_headers;
char *icy_metadata_packet;
AVDictionary *metadata;
@@ -489,7 +489,7 @@ static int http_open(URLContext *h, const char *uri, int flags,
else
h->is_streamed = 1;
- s->filesize = -1;
+ s->filesize = UINT64_MAX;
s->location = av_strdup(uri);
if (!s->location)
return AVERROR(ENOMEM);
@@ -616,9 +616,9 @@ static void parse_content_range(URLContext *h, const char *p)
if (!strncmp(p, "bytes ", 6)) {
p += 6;
- s->off = strtoll(p, NULL, 10);
+ s->off = strtoull(p, NULL, 10);
if ((slash = strchr(p, '/')) && strlen(slash) > 0)
- s->filesize = strtoll(slash + 1, NULL, 10);
+ s->filesize = strtoull(slash + 1, NULL, 10);
}
if (s->seekable == -1 && (!s->is_akamai || s->filesize != 2147483647))
h->is_streamed = 0; /* we _can_ in fact seek */
@@ -808,8 +808,9 @@ static int process_line(URLContext *h, char *line, int line_count,
if ((ret = parse_location(s, p)) < 0)
return ret;
*new_location = 1;
- } else if (!av_strcasecmp(tag, "Content-Length") && s->filesize == -1) {
- s->filesize = strtoll(p, NULL, 10);
+ } else if (!av_strcasecmp(tag, "Content-Length") &&
+ s->filesize == UINT64_MAX) {
+ s->filesize = strtoull(p, NULL, 10);
} else if (!av_strcasecmp(tag, "Content-Range")) {
parse_content_range(h, p);
} else if (!av_strcasecmp(tag, "Accept-Ranges") &&
@@ -818,7 +819,7 @@ static int process_line(URLContext *h, char *line, int line_count,
h->is_streamed = 0;
} else if (!av_strcasecmp(tag, "Transfer-Encoding") &&
!av_strncasecmp(p, "chunked", 7)) {
- s->filesize = -1;
+ s->filesize = UINT64_MAX;
s->chunksize = 0;
} else if (!av_strcasecmp(tag, "WWW-Authenticate")) {
ff_http_auth_handle_header(&s->auth_state, tag, p);
@@ -842,7 +843,7 @@ static int process_line(URLContext *h, char *line, int line_count,
if (parse_cookie(s, p, &s->cookie_dict))
av_log(h, AV_LOG_WARNING, "Unable to parse '%s'\n", p);
} else if (!av_strcasecmp(tag, "Icy-MetaInt")) {
- s->icy_metaint = strtoll(p, NULL, 10);
+ s->icy_metaint = strtoull(p, NULL, 10);
} else if (!av_strncasecmp(tag, "Icy-", 4)) {
if ((ret = parse_icy(s, tag, p)) < 0)
return ret;
@@ -972,7 +973,7 @@ static int http_read_header(URLContext *h, int *new_location)
char line[MAX_URL_SIZE];
int err = 0;
- s->chunksize = -1;
+ s->chunksize = UINT64_MAX;
for (;;) {
if ((err = http_get_line(s, line, sizeof(line))) < 0)
@@ -1006,7 +1007,7 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
int post, err;
char headers[HTTP_HEADERS_SIZE] = "";
char *authstr = NULL, *proxyauthstr = NULL;
- int64_t off = s->off;
+ uint64_t off = s->off;
int len = 0;
const char *method;
int send_expect_100 = 0;
@@ -1060,7 +1061,7 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
// server supports seeking by analysing the reply headers.
if (!has_header(s->headers, "\r\nRange: ") && !post && (s->off > 0 || s->end_off || s->seekable == -1)) {
len += av_strlcatf(headers + len, sizeof(headers) - len,
- "Range: bytes=%"PRId64"-", s->off);
+ "Range: bytes=%"PRIu64"-", s->off);
if (s->end_off)
len += av_strlcatf(headers + len, sizeof(headers) - len,
"%"PRId64, s->end_off - 1);
@@ -1135,7 +1136,7 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
s->line_count = 0;
s->off = 0;
s->icy_data_read = 0;
- s->filesize = -1;
+ s->filesize = UINT64_MAX;
s->willclose = 0;
s->end_chunked_post = 0;
s->end_header = 0;
@@ -1175,15 +1176,13 @@ static int http_buf_read(URLContext *h, uint8_t *buf, int size)
memcpy(buf, s->buf_ptr, len);
s->buf_ptr += len;
} else {
- int64_t target_end = s->end_off ? s->end_off : s->filesize;
- if ((!s->willclose || s->chunksize < 0) &&
- target_end >= 0 && s->off >= target_end)
+ uint64_t target_end = s->end_off ? s->end_off : s->filesize;
+ if ((!s->willclose || s->chunksize == UINT64_MAX) && s->off >= target_end)
return AVERROR_EOF;
len = ffurl_read(s->hd, buf, size);
- if (!len && (!s->willclose || s->chunksize < 0) &&
- target_end >= 0 && s->off < target_end) {
+ if (!len && (!s->willclose || s->chunksize == UINT64_MAX) && s->off < target_end) {
av_log(h, AV_LOG_ERROR,
- "Stream ends prematurely at %"PRId64", should be %"PRId64"\n",
+ "Stream ends prematurely at %"PRIu64", should be %"PRIu64"\n",
s->off, target_end
);
return AVERROR(EIO);
@@ -1247,7 +1246,7 @@ static int http_read_stream(URLContext *h, uint8_t *buf, int size)
return err;
}
- if (s->chunksize >= 0) {
+ if (s->chunksize != UINT64_MAX) {
if (!s->chunksize) {
char line[32];
@@ -1256,13 +1255,19 @@ static int http_read_stream(URLContext *h, uint8_t *buf, int size)
return err;
} while (!*line); /* skip CR LF from last chunk */
- s->chunksize = strtoll(line, NULL, 16);
+ s->chunksize = strtoull(line, NULL, 16);
- av_log(NULL, AV_LOG_TRACE, "Chunked encoding data size: %"PRId64"'\n",
+ av_log(h, AV_LOG_TRACE,
+ "Chunked encoding data size: %"PRIu64"'\n",
s->chunksize);
if (!s->chunksize)
return 0;
+ else if (s->chunksize == UINT64_MAX) {
+ av_log(h, AV_LOG_ERROR, "Invalid chunk size %"PRIu64"\n",
+ s->chunksize);
+ return AVERROR(EINVAL);
+ }
}
size = FFMIN(size, s->chunksize);
}
@@ -1273,17 +1278,17 @@ static int http_read_stream(URLContext *h, uint8_t *buf, int size)
read_ret = http_buf_read(h, buf, size);
if ( (read_ret < 0 && s->reconnect && (!h->is_streamed || s->reconnect_streamed) && s->filesize > 0 && s->off < s->filesize)
|| (read_ret == 0 && s->reconnect_at_eof && (!h->is_streamed || s->reconnect_streamed))) {
- int64_t target = h->is_streamed ? 0 : s->off;
+ uint64_t target = h->is_streamed ? 0 : s->off;
if (s->reconnect_delay > s->reconnect_delay_max)
return AVERROR(EIO);
- av_log(h, AV_LOG_INFO, "Will reconnect at %"PRId64" error=%s.\n", s->off, av_err2str(read_ret));
+ av_log(h, AV_LOG_INFO, "Will reconnect at %"PRIu64" error=%s.\n", s->off, av_err2str(read_ret));
av_usleep(1000U*1000*s->reconnect_delay);
s->reconnect_delay = 1 + 2*s->reconnect_delay;
seek_ret = http_seek_internal(h, target, SEEK_SET, 1);
if (seek_ret != target) {
- av_log(h, AV_LOG_ERROR, "Failed to reconnect at %"PRId64".\n", target);
+ av_log(h, AV_LOG_ERROR, "Failed to reconnect at %"PRIu64".\n", target);
return read_ret;
}
@@ -1338,10 +1343,11 @@ static int store_icy(URLContext *h, int size)
{
HTTPContext *s = h->priv_data;
/* until next metadata packet */
- int remaining = s->icy_metaint - s->icy_data_read;
+ uint64_t remaining;
- if (remaining < 0)
+ if (s->icy_metaint < s->icy_data_read)
return AVERROR_INVALIDDATA;
+ remaining = s->icy_metaint - s->icy_data_read;
if (!remaining) {
/* The metadata packet is variable sized. It has a 1 byte header
@@ -1455,7 +1461,7 @@ static int64_t http_seek_internal(URLContext *h, int64_t off, int whence, int fo
{
HTTPContext *s = h->priv_data;
URLContext *old_hd = s->hd;
- int64_t old_off = s->off;
+ uint64_t old_off = s->off;
uint8_t old_buf[BUFFER_SIZE];
int old_buf_size, ret;
AVDictionary *options = NULL;
@@ -1466,7 +1472,7 @@ static int64_t http_seek_internal(URLContext *h, int64_t off, int whence, int fo
((whence == SEEK_CUR && off == 0) ||
(whence == SEEK_SET && off == s->off)))
return s->off;
- else if ((s->filesize == -1 && whence == SEEK_END))
+ else if ((s->filesize == UINT64_MAX && whence == SEEK_END))
return AVERROR(ENOSYS);
if (whence == SEEK_CUR)
@@ -1621,7 +1627,7 @@ static int http_proxy_open(URLContext *h, const char *uri, int flags)
s->buf_ptr = s->buffer;
s->buf_end = s->buffer;
s->line_count = 0;
- s->filesize = -1;
+ s->filesize = UINT64_MAX;
cur_auth_type = s->proxy_auth_state.auth_type;
/* Note: This uses buffering, potentially reading more than the

View File

@ -0,0 +1,35 @@
From 32b95471a86ae383c0f76361d954aec511f7043a Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 5 Dec 2016 11:14:51 +0100
Subject: [PATCH] avformat/rtmppkt: Check for packet size mismatches
Fixes out of array access
Found-by: Paul Cher <paulcher@icloud.com>
Reviewed-by: Paul Cher <paulcher@icloud.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 7d57ca4d9a75562fa32e40766211de150f8b3ee7)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rtmppkt.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git libavformat/rtmppkt.c libavformat/rtmppkt.c
index 0d693c27f7f..cde0da78ce1 100644
--- external/FFmpeg/libavformat/rtmppkt.c.orig
+++ external/FFmpeg/libavformat/rtmppkt.c
@@ -235,6 +235,14 @@ static int rtmp_packet_read_one_chunk(URLContext *h, RTMPPacket *p,
if (hdr != RTMP_PS_TWELVEBYTES)
timestamp += prev_pkt[channel_id].timestamp;
+ if (prev_pkt[channel_id].read && size != prev_pkt[channel_id].size) {
+ av_log(NULL, AV_LOG_ERROR, "RTMP packet size mismatch %d != %d\n",
+ size,
+ prev_pkt[channel_id].size);
+ ff_rtmp_packet_destroy(&prev_pkt[channel_id]);
+ prev_pkt[channel_id].read = 0;
+ }
+
if (!prev_pkt[channel_id].read) {
if ((ret = ff_rtmp_packet_create(p, channel_id, type, timestamp,
size)) < 0)

View File

@ -0,0 +1,40 @@
From c12ee64e80af2517005231388fdf4ea78f16bb0e Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 5 Dec 2016 17:27:45 +0100
Subject: [PATCH] ffserver: Check chunk size
Fixes out of array access
Fixes: poc_ffserver.py
Found-by: Paul Cher <paulcher@icloud.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit a5d25faa3f4b18dac737fdb35d0dd68eb0dc2156)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
ffserver.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git ffserver.c ffserver.c
index 453d790e6cd..aec808e78cb 100644
--- external/FFmpeg/ffserver.c.orig
+++ external/FFmpeg/ffserver.c
@@ -2702,8 +2702,10 @@ static int http_receive_data(HTTPContext *c)
} else if (c->buffer_ptr - c->buffer >= 2 &&
!memcmp(c->buffer_ptr - 1, "\r\n", 2)) {
c->chunk_size = strtol(c->buffer, 0, 16);
- if (c->chunk_size == 0) // end of stream
+ if (c->chunk_size <= 0) { // end of stream or invalid chunk size
+ c->chunk_size = 0;
goto fail;
+ }
c->buffer_ptr = c->buffer;
break;
} else if (++loop_run > 10)
@@ -2725,6 +2727,7 @@ static int http_receive_data(HTTPContext *c)
/* end of connection : close it */
goto fail;
else {
+ av_assert0(len <= c->chunk_size);
c->chunk_size -= len;
c->buffer_ptr += len;
c->data_count += len;

View File

@ -0,0 +1,31 @@
From ed2572b9c8f885e2a4764d2e34604442a71899a1 Mon Sep 17 00:00:00 2001
From: Matt Wolenetz <wolenetz@google.com>
Date: Wed, 14 Dec 2016 15:26:19 -0800
Subject: [PATCH] lavf/mov.c: Avoid heap allocation wrap in mov_read_uuid
Core of patch is from paul@paulmehta.com
Reference https://crbug.com/643951
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Check value reduced as the code does not support values beyond INT_MAX
Also the check is moved to a more common place and before integer truncation
(cherry picked from commit 2d453188c2303da641dafb048dc1806790526dfd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mov.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavformat/mov.c libavformat/mov.c
index 17d0475aae1..74b58255784 100644
--- external/FFmpeg/libavformat/mov.c
+++ external/FFmpeg/libavformat/mov.c
@@ -4436,7 +4436,7 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom)
0x9c, 0x71, 0x99, 0x94, 0x91, 0xe3, 0xaf, 0xac
};
- if (atom.size < sizeof(uuid) || atom.size == INT64_MAX)
+ if (atom.size < sizeof(uuid) || atom.size >= FFMIN(INT_MAX, SIZE_MAX))
return AVERROR_INVALIDDATA;
ret = avio_read(pb, uuid, sizeof(uuid));

View File

@ -0,0 +1,30 @@
From cf8e004a51b08c6e8ceaeebca85ab84c7ed0b4cf Mon Sep 17 00:00:00 2001
From: Matt Wolenetz <wolenetz@google.com>
Date: Wed, 14 Dec 2016 15:24:42 -0800
Subject: [PATCH] lavf/mov.c: Avoid heap allocation wrap in mov_read_hdlr
Core of patch is from paul@paulmehta.com
Reference https://crbug.com/643950
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Check value reduced as the code does not support larger lengths
(cherry picked from commit fd30e4d57fe5841385f845440688505b88c0f4a9)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mov.c | 2 ++
1 file changed, 2 insertions(+)
diff --git libavformat/mov.c libavformat/mov.c
index 1e2141808da..17d0475aae1 100644
--- external/FFmpeg/libavformat/mov.c
+++ external/FFmpeg/libavformat/mov.c
@@ -739,6 +739,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
title_size = atom.size - 24;
if (title_size > 0) {
+ if (title_size > FFMIN(INT_MAX, SIZE_MAX-1))
+ return AVERROR_INVALIDDATA;
title_str = av_malloc(title_size + 1); /* Add null terminator */
if (!title_str)
return AVERROR(ENOMEM);

View File

@ -0,0 +1,28 @@
From a1a14982ec5b9954637cdc9ce8daf01d211e5c79 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 7 Feb 2017 15:49:09 +0100
Subject: [PATCH] avcodec/pictordec: Fix logic error
Fixes: 559/clusterfuzz-testcase-6424225917173760
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 8c2ea3030af7b40a3c4275696fb5c76cdb80950a)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/pictordec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavcodec/pictordec.c libavcodec/pictordec.c
index ff6eb7f4fc9..0cfc7858326 100644
--- external/FFmpeg/libavcodec/pictordec.c
+++ external/FFmpeg/libavcodec/pictordec.c
@@ -142,7 +142,7 @@ static int decode_frame(AVCodecContext *avctx,
if (av_image_check_size(s->width, s->height, 0, avctx) < 0)
return -1;
- if (s->width != avctx->width && s->height != avctx->height) {
+ if (s->width != avctx->width || s->height != avctx->height) {
ret = ff_set_dimensions(avctx, s->width, s->height);
if (ret < 0)
return ret;

View File

@ -0,0 +1,37 @@
From bd6c1d5149fbc4f2a0200ad99e7f56f4fb7d518a Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 23 Jan 2017 01:25:27 +0100
Subject: [PATCH] avcodec/pngdec: Fix off by 1 size in decode_zbuf()
Fixes out of array access
Fixes: 444/fuzz-2-ffmpeg_VIDEO_AV_CODEC_ID_PNG_fuzzer
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit e371f031b942d73e02c090170975561fabd5c264)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/pngdec.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git libavcodec/pngdec.c libavcodec/pngdec.c
index 36275ae43f5..7ade0cee661 100644
--- external/FFmpeg/libavcodec/pngdec.c
+++ external/FFmpeg/libavcodec/pngdec.c
@@ -437,13 +437,13 @@ static int decode_zbuf(AVBPrint *bp, const uint8_t *data,
av_bprint_init(bp, 0, -1);
while (zstream.avail_in > 0) {
- av_bprint_get_buffer(bp, 1, &buf, &buf_size);
- if (!buf_size) {
+ av_bprint_get_buffer(bp, 2, &buf, &buf_size);
+ if (buf_size < 2) {
ret = AVERROR(ENOMEM);
goto fail;
}
zstream.next_out = buf;
- zstream.avail_out = buf_size;
+ zstream.avail_out = buf_size - 1;
ret = inflate(&zstream, Z_PARTIAL_FLUSH);
if (ret != Z_OK && ret != Z_STREAM_END) {
ret = AVERROR_EXTERNAL;

View File

@ -0,0 +1,116 @@
From e1940d2458353943e2fab6bdb87d2278077e22a5 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Mon, 20 Mar 2017 22:47:48 +0100
Subject: [PATCH] avcodec/dnxhd_parser: take into account compressed frame size
and skip it
Fixes #6214 and vsynth1-dnxhd-720p-hr-lb.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
libavcodec/dnxhd_parser.c | 65 +++++++++++++++++++++++++++----
tests/ref/vsynth/vsynth1-dnxhd-720p-hr-lb | 4 +-
2 files changed, 60 insertions(+), 9 deletions(-)
diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c
index 033b8ee7e11..4f9bbceeeb5 100644
--- external/FFmpeg/libavcodec/dnxhd_parser.c
+++ external/FFmpeg/libavcodec/dnxhd_parser.c
@@ -31,8 +31,24 @@ typedef struct {
ParseContext pc;
int interlaced;
int cur_field; /* first field is 0, second is 1 */
+ int cur_byte;
+ int remaining;
+ int w, h;
} DNXHDParserContext;
+static int dnxhd_get_hr_frame_size(int cid, int w, int h)
+{
+ int result, i = ff_dnxhd_get_cid_table(cid);
+
+ if (i < 0)
+ return i;
+
+ result = ((h + 15) / 16) * ((w + 15) / 16) * ff_dnxhd_cid_table[i].packet_scale.num / ff_dnxhd_cid_table[i].packet_scale.den;
+ result = (result + 2048) / 4096 * 4096;
+
+ return FFMAX(result, 8192);
+}
+
static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
const uint8_t *buf, int buf_size)
{
@@ -51,30 +67,65 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
pic_found = 1;
interlaced = (state&2)>>1; /* byte following the 5-byte header prefix */
cur_field = state&1;
+ dctx->cur_byte = 0;
+ dctx->remaining = 0;
break;
}
}
}
- if (pic_found) {
+ if (pic_found && !dctx->remaining) {
if (!buf_size) /* EOF considered as end of frame */
return 0;
for (; i < buf_size; i++) {
+ dctx->cur_byte++;
state = (state << 8) | buf[i];
- if (ff_dnxhd_check_header_prefix(state & 0xffffffffff00LL) != 0) {
- if (!interlaced || dctx->cur_field) {
+
+ if (dctx->cur_byte == 24) {
+ dctx->h = (state >> 32) & 0xFFFF;
+ } else if (dctx->cur_byte == 26) {
+ dctx->w = (state >> 32) & 0xFFFF;
+ } else if (dctx->cur_byte == 42) {
+ int cid = (state >> 32) & 0xFFFFFFFF;
+
+ if (cid <= 0)
+ continue;
+
+ dctx->remaining = avpriv_dnxhd_get_frame_size(cid);
+ if (dctx->remaining <= 0) {
+ dctx->remaining = dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h);
+ if (dctx->remaining <= 0)
+ return dctx->remaining;
+ }
+ if (buf_size - i >= dctx->remaining && (!dctx->interlaced || dctx->cur_field)) {
+ int remaining = dctx->remaining;
+
pc->frame_start_found = 0;
pc->state64 = -1;
dctx->interlaced = interlaced;
dctx->cur_field = 0;
- return i - 5;
+ dctx->cur_byte = 0;
+ dctx->remaining = 0;
+ return remaining;
} else {
- /* continue, to get the second field */
- dctx->interlaced = interlaced = (state&2)>>1;
- dctx->cur_field = cur_field = state&1;
+ dctx->remaining -= buf_size;
}
}
}
+ } else if (pic_found) {
+ if (dctx->remaining > buf_size) {
+ dctx->remaining -= buf_size;
+ } else {
+ int remaining = dctx->remaining;
+
+ pc->frame_start_found = 0;
+ pc->state64 = -1;
+ dctx->interlaced = interlaced;
+ dctx->cur_field = 0;
+ dctx->cur_byte = 0;
+ dctx->remaining = 0;
+ return remaining;
+ }
}
pc->frame_start_found = pic_found;
pc->state64 = state;

View File

@ -0,0 +1,82 @@
From da693f8daa62cb76a2aa05021d6c8d53a1b816b2 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Sun, 23 Apr 2017 11:53:57 +0200
Subject: [PATCH] avcodec/dnxhd_parser: fix parsing interlaced video, simplify
code
There appears to be no need to treat interlaced videos differently,
also that code is flawed, as for at least one input cur_field would
be always 0.
Fixes ticket #6344.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
(cherry picked from commit ac30754a148df58822a272555d1f6f860e42037e)
---
libavcodec/dnxhd_parser.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c
index 4f9bbceeeb5..a1f632a620e 100644
--- external/FFmpeg/libavcodec/dnxhd_parser.c
+++ external/FFmpeg/libavcodec/dnxhd_parser.c
@@ -29,8 +29,6 @@
typedef struct {
ParseContext pc;
- int interlaced;
- int cur_field; /* first field is 0, second is 1 */
int cur_byte;
int remaining;
int w, h;
@@ -56,8 +54,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
uint64_t state = pc->state64;
int pic_found = pc->frame_start_found;
int i = 0;
- int interlaced = dctx->interlaced;
- int cur_field = dctx->cur_field;
if (!pic_found) {
for (i = 0; i < buf_size; i++) {
@@ -65,8 +61,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
if (ff_dnxhd_check_header_prefix(state & 0xffffffffff00LL) != 0) {
i++;
pic_found = 1;
- interlaced = (state&2)>>1; /* byte following the 5-byte header prefix */
- cur_field = state&1;
dctx->cur_byte = 0;
dctx->remaining = 0;
break;
@@ -97,13 +91,11 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
if (dctx->remaining <= 0)
return dctx->remaining;
}
- if (buf_size - i >= dctx->remaining && (!dctx->interlaced || dctx->cur_field)) {
+ if (buf_size - i + 47 >= dctx->remaining) {
int remaining = dctx->remaining;
pc->frame_start_found = 0;
pc->state64 = -1;
- dctx->interlaced = interlaced;
- dctx->cur_field = 0;
dctx->cur_byte = 0;
dctx->remaining = 0;
return remaining;
@@ -120,8 +112,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
pc->frame_start_found = 0;
pc->state64 = -1;
- dctx->interlaced = interlaced;
- dctx->cur_field = 0;
dctx->cur_byte = 0;
dctx->remaining = 0;
return remaining;
@@ -129,8 +119,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
}
pc->frame_start_found = pic_found;
pc->state64 = state;
- dctx->interlaced = interlaced;
- dctx->cur_field = cur_field;
return END_NOT_FOUND;
}

View File

@ -0,0 +1,45 @@
From 0a709e2a10b8288a0cc383547924ecfe285cef89 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Wed, 14 Jun 2017 16:58:20 +0200
Subject: [PATCH] avcodec/dnxhd_parser: Do not return invalid value from
dnxhd_find_frame_end() on error
Fixes: Null pointer dereference
Fixes: CVE-2017-9608
Found-by: Yihan Lian
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 611b35627488a8d0763e75c25ee0875c5b7987dd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/dnxhd_parser.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c
index a1f632a620e..f1166be1007 100644
--- external/FFmpeg/libavcodec/dnxhd_parser.c
+++ external/FFmpeg/libavcodec/dnxhd_parser.c
@@ -81,16 +81,18 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
dctx->w = (state >> 32) & 0xFFFF;
} else if (dctx->cur_byte == 42) {
int cid = (state >> 32) & 0xFFFFFFFF;
+ int remaining;
if (cid <= 0)
continue;
- dctx->remaining = avpriv_dnxhd_get_frame_size(cid);
- if (dctx->remaining <= 0) {
- dctx->remaining = dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h);
- if (dctx->remaining <= 0)
- return dctx->remaining;
+ remaining = avpriv_dnxhd_get_frame_size(cid);
+ if (remaining <= 0) {
+ remaining = dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h);
+ if (remaining <= 0)
+ continue;
}
+ dctx->remaining = remaining;
if (buf_size - i + 47 >= dctx->remaining) {
int remaining = dctx->remaining;

View File

@ -0,0 +1,32 @@
From 85c8c0c826e78d159ea242ce64d7e8feeeeca741 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sun, 7 May 2017 18:50:49 +0200
Subject: [PATCH] avcodec/xwddec: Check bpp more completely
Fixes out of array access
Fixes: 1399/clusterfuzz-testcase-minimized-4866094172995584
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 441026fcb13ac23aa10edc312bdacb6445a0ad06)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/xwddec.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git libavcodec/xwddec.c libavcodec/xwddec.c
index 64cd8418a20..8b0845fc013 100644
--- external/FFmpeg/libavcodec/xwddec.c
+++ external/FFmpeg/libavcodec/xwddec.c
@@ -157,9 +157,9 @@ static int xwd_decode_frame(AVCodecContext *avctx, void *data,
case XWD_GRAY_SCALE:
if (bpp != 1 && bpp != 8)
return AVERROR_INVALIDDATA;
- if (pixdepth == 1) {
+ if (bpp == 1 && pixdepth == 1) {
avctx->pix_fmt = AV_PIX_FMT_MONOWHITE;
- } else if (pixdepth == 8) {
+ } else if (bpp == 8 && pixdepth == 8) {
avctx->pix_fmt = AV_PIX_FMT_GRAY8;
}
break;

View File

@ -0,0 +1,29 @@
From 536af4212100dee1577fe2d30814762c58038efc Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Fri, 5 May 2017 20:42:11 +0200
Subject: [PATCH] avcodec/dfa: Fix off by 1 error
Fixes out of array access
Fixes: 1345/clusterfuzz-testcase-minimized-6062963045695488
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit f52fbf4f3ed02a7d872d8a102006f29b4421f360)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/dfa.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavcodec/dfa.c libavcodec/dfa.c
index f45d019a792..5ddb647c4cb 100644
--- external/FFmpeg/libavcodec/dfa.c
+++ external/FFmpeg/libavcodec/dfa.c
@@ -175,7 +175,7 @@ static int decode_dds1(GetByteContext *gb, uint8_t *frame, int width, int height
return AVERROR_INVALIDDATA;
frame += v;
} else {
- if (frame_end - frame < width + 3)
+ if (frame_end - frame < width + 4)
return AVERROR_INVALIDDATA;
frame[0] = frame[1] =
frame[width] = frame[width + 1] = bytestream2_get_byte(gb);

View File

@ -0,0 +1,91 @@
From 25dac3128b605f2867e3e0f0288b896f84d3a033 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sat, 3 Jun 2017 21:20:04 +0200
Subject: [PATCH] avformat/hls: Check local file extensions
This reduces the attack surface of local file-system
information leaking.
It prevents the existing exploit leading to an information leak. As
well as similar hypothetical attacks.
Leaks of information from files and symlinks ending in common multimedia extensions
are still possible. But files with sensitive information like private keys and passwords
generally do not use common multimedia filename extensions.
It does not stop leaks via remote addresses in the LAN.
The existing exploit depends on a specific decoder as well.
It does appear though that the exploit should be possible with any decoder.
The problem is that as long as sensitive information gets into the decoder,
the output of the decoder becomes sensitive as well.
The only obvious solution is to prevent access to sensitive information. Or to
disable hls or possibly some of its feature. More complex solutions like
checking the path to limit access to only subdirectories of the hls path may
work as an alternative. But such solutions are fragile and tricky to implement
portably and would not stop every possible attack nor would they work with all
valid hls files.
Developers have expressed their dislike / objected to disabling hls by default as well
as disabling hls with local files. There also where objections against restricting
remote url file extensions. This here is a less robust but also lower
inconvenience solution.
It can be applied stand alone or together with other solutions.
limiting the check to local files was suggested by nevcairiel
This recommits the security fix without the author name joke which was
originally requested by Nicolas.
Found-by: Emil Lerner and Pavel Cheremushkin
Reported-by: Thierry Foucu <tfoucu@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 189ff4219644532bdfa7bab28dfedaee4d6d4021)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/hls.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git libavformat/hls.c libavformat/hls.c
index 2bf86fadc64..ffefd284f86 100644
--- external/FFmpeg/libavformat/hls.c
+++ external/FFmpeg/libavformat/hls.c
@@ -204,6 +204,7 @@ typedef struct HLSContext {
char *http_proxy; ///< holds the address of the HTTP proxy server
AVDictionary *avio_opts;
int strict_std_compliance;
+ char *allowed_extensions;
} HLSContext;
static int read_chomp_line(AVIOContext *s, char *buf, int maxlen)
@@ -618,8 +619,19 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
return AVERROR_INVALIDDATA;
// only http(s) & file are allowed
- if (!av_strstart(proto_name, "http", NULL) && !av_strstart(proto_name, "file", NULL))
+ if (av_strstart(proto_name, "file", NULL)) {
+ if (strcmp(c->allowed_extensions, "ALL") && !av_match_ext(url, c->allowed_extensions)) {
+ av_log(s, AV_LOG_ERROR,
+ "Filename extension of \'%s\' is not a common multimedia extension, blocked for security reasons.\n"
+ "If you wish to override this adjust allowed_extensions, you can set it to \'ALL\' to allow all\n",
+ url);
+ return AVERROR_INVALIDDATA;
+ }
+ } else if (av_strstart(proto_name, "http", NULL)) {
+ ;
+ } else
return AVERROR_INVALIDDATA;
+
if (!strncmp(proto_name, url, strlen(proto_name)) && url[strlen(proto_name)] == ':')
;
else if (av_strstart(url, "crypto", NULL) && !strncmp(proto_name, url + 7, strlen(proto_name)) && url[7 + strlen(proto_name)] == ':')
@@ -2127,6 +2139,10 @@ static int hls_probe(AVProbeData *p)
static const AVOption hls_options[] = {
{"live_start_index", "segment index to start live streams at (negative values are from the end)",
OFFSET(live_start_index), AV_OPT_TYPE_INT, {.i64 = -3}, INT_MIN, INT_MAX, FLAGS},
+ {"allowed_extensions", "List of file extensions that hls is allowed to access",
+ OFFSET(allowed_extensions), AV_OPT_TYPE_STRING,
+ {.str = "3gp,aac,avi,flac,mkv,m3u8,m4a,m4s,m4v,mpg,mov,mp2,mp3,mp4,mpeg,mpegts,ogg,ogv,oga,ts,vob,wav"},
+ INT_MIN, INT_MAX, FLAGS},
{NULL}
};

View File

@ -0,0 +1,31 @@
From 5415c88e370692a3cf10b998ab230b4a02fc237f Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 30 May 2017 21:29:20 +0200
Subject: [PATCH] avformat/avidec: Limit formats in gab2 to srt and ass/ssa
This prevents part of one exploit leading to an information leak
Found-by: Emil Lerner and Pavel Cheremushkin
Reported-by: Thierry Foucu <tfoucu@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit a5d849b149ca67ced2d271dc84db0bc95a548abb)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/avidec.c | 3 +++
1 file changed, 3 insertions(+)
diff --git libavformat/avidec.c libavformat/avidec.c
index ebd14abb12c..9afac825d43 100644
--- external/FFmpeg/libavformat/avidec.c
+++ external/FFmpeg/libavformat/avidec.c
@@ -1098,6 +1098,9 @@ static int read_gab2_sub(AVFormatContext *s, AVStream *st, AVPacket *pkt)
if (!sub_demuxer)
goto error;
+ if (strcmp(sub_demuxer->name, "srt") && strcmp(sub_demuxer->name, "ass"))
+ goto error;
+
if (!(ast->sub_ctx = avformat_alloc_context()))
goto error;

View File

@ -0,0 +1,47 @@
From 869e8b1d0f549e926ecb246f916c9066f881db4a Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Wed, 10 May 2017 18:37:49 +0200
Subject: [PATCH] avcodec/webp: Always set pix_fmt
Fixes: out of array access
Fixes: 1434/clusterfuzz-testcase-minimized-6314998085189632
Fixes: 1435/clusterfuzz-testcase-minimized-6483783723253760
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 6b5d3fb26fb4be48e4966e4b1d97c2165538d4ef)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/vp8.c | 2 ++
libavcodec/webp.c | 3 +--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git libavcodec/vp8.c libavcodec/vp8.c
index 068223920e4..63e78492848 100644
--- external/FFmpeg/libavcodec/vp8.c
+++ external/FFmpeg/libavcodec/vp8.c
@@ -2548,6 +2548,8 @@ int vp78_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
enum AVDiscard skip_thresh;
VP8Frame *av_uninit(curframe), *prev_frame;
+ av_assert0(avctx->pix_fmt == AV_PIX_FMT_YUVA420P || avctx->pix_fmt == AV_PIX_FMT_YUV420P);
+
if (is_vp7)
ret = vp7_decode_frame_header(s, avpkt->data, avpkt->size);
else
diff --git libavcodec/webp.c libavcodec/webp.c
index 7d23cc74356..b2ae5bcbba9 100644
--- external/FFmpeg/libavcodec/webp.c
+++ external/FFmpeg/libavcodec/webp.c
@@ -1327,9 +1327,8 @@ static int vp8_lossy_decode_frame(AVCodecContext *avctx, AVFrame *p,
if (!s->initialized) {
ff_vp8_decode_init(avctx);
s->initialized = 1;
- if (s->has_alpha)
- avctx->pix_fmt = AV_PIX_FMT_YUVA420P;
}
+ avctx->pix_fmt = s->has_alpha ? AV_PIX_FMT_YUVA420P : AV_PIX_FMT_YUV420P;
s->lossless = 0;
if (data_size > INT_MAX) {

View File

@ -0,0 +1,29 @@
From 7a69c1b2abfa96f0578cbd3ff82126b883ba6ef0 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sat, 6 May 2017 22:24:52 +0200
Subject: [PATCH] avcodec/cdxl: Check format parameter
Fixes out of array access
Fixes: 1378/clusterfuzz-testcase-minimized-5715088008806400
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit e1b60aad77c27ed5d4dfc11e5e6a05a38c70489d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/cdxl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavcodec/cdxl.c libavcodec/cdxl.c
index 7a9b41943d8..5c0ecb279c7 100644
--- external/FFmpeg/libavcodec/cdxl.c
+++ external/FFmpeg/libavcodec/cdxl.c
@@ -277,7 +277,7 @@ static int cdxl_decode_frame(AVCodecContext *avctx, void *data,
c->padded_bits = aligned_width - c->avctx->width;
if (c->video_size < aligned_width * avctx->height * (int64_t)c->bpp / 8)
return AVERROR_INVALIDDATA;
- if (!encoding && c->palette_size && c->bpp <= 8) {
+ if (!encoding && c->palette_size && c->bpp <= 8 && c->format != CHUNKY) {
avctx->pix_fmt = AV_PIX_FMT_PAL8;
} else if (encoding == 1 && (c->bpp == 6 || c->bpp == 8)) {
if (c->palette_size != (1 << (c->bpp - 1)))

View File

@ -0,0 +1,29 @@
From 7f3a671ece8fd711e2ebc71a4e08cda591d810a8 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 8 May 2017 11:46:03 +0200
Subject: [PATCH] avcodec/cdxl: Check format for BGR24
Fixes: out of array access
Fixes: 1427/clusterfuzz-testcase-minimized-5020737339392000
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 1e42736b95065c69a7481d0cf55247024f54b660)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/cdxl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavcodec/cdxl.c libavcodec/cdxl.c
index 5c0ecb279c7..78f5d50102f 100644
--- external/FFmpeg/libavcodec/cdxl.c
+++ external/FFmpeg/libavcodec/cdxl.c
@@ -279,7 +279,7 @@ static int cdxl_decode_frame(AVCodecContext *avctx, void *data,
return AVERROR_INVALIDDATA;
if (!encoding && c->palette_size && c->bpp <= 8 && c->format != CHUNKY) {
avctx->pix_fmt = AV_PIX_FMT_PAL8;
- } else if (encoding == 1 && (c->bpp == 6 || c->bpp == 8)) {
+ } else if (encoding == 1 && (c->bpp == 6 || c->bpp == 8) && c->format != CHUNKY) {
if (c->palette_size != (1 << (c->bpp - 1)))
return AVERROR_INVALIDDATA;
avctx->pix_fmt = AV_PIX_FMT_BGR24;

View File

@ -0,0 +1,49 @@
From 5bb861d45b86803ec39295cfc04889d2a7138361 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sun, 16 Jul 2017 14:57:20 +0200
Subject: [PATCH] avcodec/apedec: Fix integer overflow
Fixes: out of array access
Fixes: PoC.ape and others
Found-by: Bingchang, Liu@VARAS of IIE
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit ba4beaf6149f7241c8bd85fe853318c2f6837ad0)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/apedec.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git libavcodec/apedec.c libavcodec/apedec.c
index b99598b4ee7..072e3b42cff 100644
--- external/FFmpeg/libavcodec/apedec.c
+++ external/FFmpeg/libavcodec/apedec.c
@@ -1412,6 +1412,7 @@ static int ape_decode_frame(AVCodecContext *avctx, void *data,
int32_t *sample24;
int i, ch, ret;
int blockstodecode;
+ uint64_t decoded_buffer_size;
/* this should never be negative, but bad things will happen if it is, so
check it just to make sure. */
@@ -1467,7 +1468,7 @@ static int ape_decode_frame(AVCodecContext *avctx, void *data,
skip_bits_long(&s->gb, offset);
}
- if (!nblocks || nblocks > INT_MAX) {
+ if (!nblocks || nblocks > INT_MAX / 2 / sizeof(*s->decoded_buffer) - 8) {
av_log(avctx, AV_LOG_ERROR, "Invalid sample count: %"PRIu32".\n",
nblocks);
return AVERROR_INVALIDDATA;
@@ -1493,8 +1494,9 @@ static int ape_decode_frame(AVCodecContext *avctx, void *data,
blockstodecode = s->samples;
/* reallocate decoded sample buffer if needed */
- av_fast_malloc(&s->decoded_buffer, &s->decoded_size,
- 2 * FFALIGN(blockstodecode, 8) * sizeof(*s->decoded_buffer));
+ decoded_buffer_size = 2LL * FFALIGN(blockstodecode, 8) * sizeof(*s->decoded_buffer);
+ av_assert0(decoded_buffer_size <= INT_MAX);
+ av_fast_malloc(&s->decoded_buffer, &s->decoded_size, decoded_buffer_size);
if (!s->decoded_buffer)
return AVERROR(ENOMEM);
memset(s->decoded_buffer, 0, s->decoded_size);

View File

@ -0,0 +1,119 @@
From f2a6f41dd7b962e0dd24fe695b002532a42e2230 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Fri, 28 Jul 2017 13:41:59 +0200
Subject: [PATCH] avformat/rtmppkt: Convert ff_amf_tag_size() to bytestream2
Fixes: out of array accesses
Fixes: crash-9238fa9e8d4fde3beda1f279626f53812cb001cb-SEGV
Found-by: JunDong Xie of Ant-financial Light-Year Security Lab
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 08c073434e25cba8c43aae5ed9554fdd594adfb0)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rtmppkt.c | 68 ++++++++++++++++++++++++++++++++++++---------------
1 file changed, 48 insertions(+), 20 deletions(-)
diff --git libavformat/rtmppkt.c libavformat/rtmppkt.c
index cde0da78ce1..2ea88d09c57 100644
--- external/FFmpeg/libavformat/rtmppkt.c
+++ external/FFmpeg/libavformat/rtmppkt.c
@@ -433,50 +433,78 @@ void ff_rtmp_packet_destroy(RTMPPacket *pkt)
pkt->size = 0;
}
-int ff_amf_tag_size(const uint8_t *data, const uint8_t *data_end)
+static int amf_tag_skip(GetByteContext *gb)
{
- const uint8_t *base = data;
AMFDataType type;
unsigned nb = -1;
int parse_key = 1;
- if (data >= data_end)
+ if (bytestream2_get_bytes_left(gb) < 1)
return -1;
- switch ((type = *data++)) {
- case AMF_DATA_TYPE_NUMBER: return 9;
- case AMF_DATA_TYPE_BOOL: return 2;
- case AMF_DATA_TYPE_STRING: return 3 + AV_RB16(data);
- case AMF_DATA_TYPE_LONG_STRING: return 5 + AV_RB32(data);
- case AMF_DATA_TYPE_NULL: return 1;
- case AMF_DATA_TYPE_DATE: return 11;
+
+ type = bytestream2_get_byte(gb);
+ switch (type) {
+ case AMF_DATA_TYPE_NUMBER:
+ bytestream2_get_be64(gb);
+ return 0;
+ case AMF_DATA_TYPE_BOOL:
+ bytestream2_get_byte(gb);
+ return 0;
+ case AMF_DATA_TYPE_STRING:
+ bytestream2_skip(gb, bytestream2_get_be16(gb));
+ return 0;
+ case AMF_DATA_TYPE_LONG_STRING:
+ bytestream2_skip(gb, bytestream2_get_be32(gb));
+ return 0;
+ case AMF_DATA_TYPE_NULL:
+ return 0;
+ case AMF_DATA_TYPE_DATE:
+ bytestream2_skip(gb, 10);
+ return 0;
case AMF_DATA_TYPE_ARRAY:
parse_key = 0;
case AMF_DATA_TYPE_MIXEDARRAY:
- nb = bytestream_get_be32(&data);
+ nb = bytestream2_get_be32(gb);
case AMF_DATA_TYPE_OBJECT:
while (nb-- > 0 || type != AMF_DATA_TYPE_ARRAY) {
int t;
if (parse_key) {
- int size = bytestream_get_be16(&data);
+ int size = bytestream2_get_be16(gb);
if (!size) {
- data++;
+ bytestream2_get_byte(gb);
break;
}
- if (size < 0 || size >= data_end - data)
+ if (size < 0 || size >= bytestream2_get_bytes_left(gb))
return -1;
- data += size;
+ bytestream2_skip(gb, size);
}
- t = ff_amf_tag_size(data, data_end);
- if (t < 0 || t >= data_end - data)
+ t = amf_tag_skip(gb);
+ if (t < 0 || bytestream2_get_bytes_left(gb) <= 0)
return -1;
- data += t;
}
- return data - base;
- case AMF_DATA_TYPE_OBJECT_END: return 1;
+ return 0;
+ case AMF_DATA_TYPE_OBJECT_END: return 0;
default: return -1;
}
}
+int ff_amf_tag_size(const uint8_t *data, const uint8_t *data_end)
+{
+ GetByteContext gb;
+ int ret;
+
+ if (data >= data_end)
+ return -1;
+
+ bytestream2_init(&gb, data, data_end - data);
+
+ ret = amf_tag_skip(&gb);
+ if (ret < 0 || bytestream2_get_bytes_left(&gb) <= 0)
+ return -1;
+ av_assert0(bytestream2_tell(&gb) >= 0 && bytestream2_tell(&gb) <= data_end - data);
+ return bytestream2_tell(&gb);
+}
+
int ff_amf_get_field_value(const uint8_t *data, const uint8_t *data_end,
const uint8_t *name, uint8_t *dst, int dst_size)
{

View File

@ -0,0 +1,111 @@
From b375cc8bb74a33a7b38175023ee337b1c378281f Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Fri, 28 Jul 2017 14:37:26 +0200
Subject: [PATCH] avformat/rtmppkt: Convert ff_amf_get_field_value() to
bytestream2
Fixes: out of array accesses
Found-by: JunDong Xie of Ant-financial Light-Year Security Lab
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit ffcc82219cef0928bed2d558b19ef6ea35634130)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rtmppkt.c | 57 +++++++++++++++++++++++++++++++++------------------
1 file changed, 37 insertions(+), 20 deletions(-)
diff --git libavformat/rtmppkt.c libavformat/rtmppkt.c
index 2ea88d09c57..ca7838868e0 100644
--- external/FFmpeg/libavformat/rtmppkt.c
+++ external/FFmpeg/libavformat/rtmppkt.c
@@ -505,53 +505,70 @@ int ff_amf_tag_size(const uint8_t *data, const uint8_t *data_end)
return bytestream2_tell(&gb);
}
-int ff_amf_get_field_value(const uint8_t *data, const uint8_t *data_end,
+static int amf_get_field_value2(GetByteContext *gb,
const uint8_t *name, uint8_t *dst, int dst_size)
{
int namelen = strlen(name);
int len;
- while (*data != AMF_DATA_TYPE_OBJECT && data < data_end) {
- len = ff_amf_tag_size(data, data_end);
- if (len < 0)
- len = data_end - data;
- data += len;
+ while (bytestream2_peek_byte(gb) != AMF_DATA_TYPE_OBJECT && bytestream2_get_bytes_left(gb) > 0) {
+ int ret = amf_tag_skip(gb);
+ if (ret < 0)
+ return -1;
}
- if (data_end - data < 3)
+ if (bytestream2_get_bytes_left(gb) < 3)
return -1;
- data++;
+ bytestream2_get_byte(gb);
+
for (;;) {
- int size = bytestream_get_be16(&data);
+ int size = bytestream2_get_be16(gb);
if (!size)
break;
- if (size < 0 || size >= data_end - data)
+ if (size < 0 || size >= bytestream2_get_bytes_left(gb))
return -1;
- data += size;
- if (size == namelen && !memcmp(data-size, name, namelen)) {
- switch (*data++) {
+ bytestream2_skip(gb, size);
+ if (size == namelen && !memcmp(gb->buffer-size, name, namelen)) {
+ switch (bytestream2_get_byte(gb)) {
case AMF_DATA_TYPE_NUMBER:
- snprintf(dst, dst_size, "%g", av_int2double(AV_RB64(data)));
+ snprintf(dst, dst_size, "%g", av_int2double(bytestream2_get_be64(gb)));
break;
case AMF_DATA_TYPE_BOOL:
- snprintf(dst, dst_size, "%s", *data ? "true" : "false");
+ snprintf(dst, dst_size, "%s", bytestream2_get_byte(gb) ? "true" : "false");
break;
case AMF_DATA_TYPE_STRING:
- len = bytestream_get_be16(&data);
- av_strlcpy(dst, data, FFMIN(len+1, dst_size));
+ len = bytestream2_get_be16(gb);
+ if (dst_size < 1)
+ return -1;
+ if (dst_size < len + 1)
+ len = dst_size - 1;
+ bytestream2_get_buffer(gb, dst, len);
+ dst[len] = 0;
break;
default:
return -1;
}
return 0;
}
- len = ff_amf_tag_size(data, data_end);
- if (len < 0 || len >= data_end - data)
+ len = amf_tag_skip(gb);
+ if (len < 0 || bytestream2_get_bytes_left(gb) <= 0)
return -1;
- data += len;
}
return -1;
}
+int ff_amf_get_field_value(const uint8_t *data, const uint8_t *data_end,
+ const uint8_t *name, uint8_t *dst, int dst_size)
+{
+ GetByteContext gb;
+
+ if (data >= data_end)
+ return -1;
+
+ bytestream2_init(&gb, data, data_end - data);
+
+ return amf_get_field_value2(&gb, name, dst, dst_size);
+}
+
static const char* rtmp_packet_type(int type)
{
switch (type) {

View File

@ -0,0 +1,41 @@
From 6a10b962e3053b9fc851fcce23a60ac653abdc8c Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Wed, 26 Jul 2017 03:26:59 +0200
Subject: [PATCH] avcodec/dnxhddec: Move mb height check out of non hr branch
Fixes: out of array access
Fixes: poc.dnxhd
Found-by: Bingchang, Liu@VARAS of IIE
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 296debd213bd6dce7647cedd34eb64e5b94cdc92)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/dnxhddec.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git libavcodec/dnxhddec.c libavcodec/dnxhddec.c
index 4d1b006bb50..66a0de2e627 100644
--- external/FFmpeg/libavcodec/dnxhddec.c
+++ external/FFmpeg/libavcodec/dnxhddec.c
@@ -294,14 +294,18 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
if (ctx->mb_height > 68 && ff_dnxhd_check_header_prefix_hr(header_prefix)) {
ctx->data_offset = 0x170 + (ctx->mb_height << 2);
} else {
- if (ctx->mb_height > 68 ||
- (ctx->mb_height << frame->interlaced_frame) > (ctx->height + 15) >> 4) {
+ if (ctx->mb_height > 68) {
av_log(ctx->avctx, AV_LOG_ERROR,
"mb height too big: %d\n", ctx->mb_height);
return AVERROR_INVALIDDATA;
}
ctx->data_offset = 0x280;
}
+ if ((ctx->mb_height << frame->interlaced_frame) > (ctx->height + 15) >> 4) {
+ av_log(ctx->avctx, AV_LOG_ERROR,
+ "mb height too big: %d\n", ctx->mb_height);
+ return AVERROR_INVALIDDATA;
+ }
if (buf_size < ctx->data_offset) {
av_log(ctx->avctx, AV_LOG_ERROR,

View File

@ -0,0 +1,33 @@
From 2bbef8ee271240ce4509b23fd33e35076715a39f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=20and=20=E5=BC=A0=E6=B4=AA=E4=BA=AE=28?=
=?UTF-8?q?=E6=9C=9B=E5=88=9D=29?= <tony.sh and wangchu.zhl@alibaba-inc.com>
Date: Fri, 25 Aug 2017 01:15:28 +0200
Subject: [PATCH] avformat/rmdec: Fix DoS due to lack of eof check
Fixes: loop.ivr
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 124eb202e70678539544f6268efc98131f19fa49)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rmdec.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git libavformat/rmdec.c libavformat/rmdec.c
index 4d565291af2..7656812eb16 100644
--- external/FFmpeg/libavformat/rmdec.c
+++ external/FFmpeg/libavformat/rmdec.c
@@ -1238,8 +1238,11 @@ static int ivr_read_header(AVFormatContext *s)
av_log(s, AV_LOG_DEBUG, "%s = '%s'\n", key, val);
} else if (type == 4) {
av_log(s, AV_LOG_DEBUG, "%s = '0x", key);
- for (j = 0; j < len; j++)
+ for (j = 0; j < len; j++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
av_log(s, AV_LOG_DEBUG, "%X", avio_r8(pb));
+ }
av_log(s, AV_LOG_DEBUG, "'\n");
} else if (len == 4 && type == 3 && !strncmp(key, "StreamCount", tlen)) {
nb_streams = value = avio_rb32(pb);

View File

@ -0,0 +1,28 @@
From d4fc6b211f19365fbae4b4388ec396b293fda249 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Fri, 25 Aug 2017 01:15:30 +0200
Subject: [PATCH] avformat/mvdec: Fix DoS due to lack of eof check
Fixes: loop.mv
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 4f05e2e2dc1a89f38cd9f0960a6561083d714f1e)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mvdec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git libavformat/mvdec.c libavformat/mvdec.c
index 80ef4b1569a..e9e9fab5036 100644
--- external/FFmpeg/libavformat/mvdec.c
+++ external/FFmpeg/libavformat/mvdec.c
@@ -338,6 +338,8 @@ static int mv_read_header(AVFormatContext *avctx)
uint32_t pos = avio_rb32(pb);
uint32_t asize = avio_rb32(pb);
uint32_t vsize = avio_rb32(pb);
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
avio_skip(pb, 8);
av_add_index_entry(ast, pos, timestamp, asize, 0, AVINDEX_KEYFRAME);
av_add_index_entry(vst, pos + asize, i, vsize, 0, AVINDEX_KEYFRAME);

View File

@ -0,0 +1,45 @@
From 5bc9f70441d7e7067cba9188898c9252c72bab35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=20and=20=E5=BC=A0=E6=B4=AA=E4=BA=AE=28?=
=?UTF-8?q?=E6=9C=9B=E5=88=9D=29?= <tony.sh and wangchu.zhl@alibaba-inc.com>
Date: Fri, 25 Aug 2017 01:15:29 +0200
Subject: [PATCH] avformat/rl2: Fix DoS due to lack of eof check
Fixes: loop.rl2
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 96f24d1bee7fe7bac08e2b7c74db1a046c9dc0de)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rl2.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git libavformat/rl2.c libavformat/rl2.c
index 0bec8f1d9ab..eb1682dfcb7 100644
--- external/FFmpeg/libavformat/rl2.c
+++ external/FFmpeg/libavformat/rl2.c
@@ -170,12 +170,21 @@ static av_cold int rl2_read_header(AVFormatContext *s)
}
/** read offset and size tables */
- for(i=0; i < frame_count;i++)
+ for(i=0; i < frame_count;i++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
chunk_size[i] = avio_rl32(pb);
- for(i=0; i < frame_count;i++)
+ }
+ for(i=0; i < frame_count;i++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
chunk_offset[i] = avio_rl32(pb);
- for(i=0; i < frame_count;i++)
+ }
+ for(i=0; i < frame_count;i++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
audio_size[i] = avio_rl32(pb) & 0xFFFF;
+ }
/** build the sample index */
for(i=0;i<frame_count;i++){

View File

@ -0,0 +1,38 @@
From f94517934bf0ff2510f472fa2bc4cd362951109c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=20and=20=E5=BC=A0=E6=B4=AA=E4=BA=AE=28?=
=?UTF-8?q?=E6=9C=9B=E5=88=9D=29?= <tony.sh and wangchu.zhl@alibaba-inc.com>
Date: Fri, 25 Aug 2017 12:37:25 +0200
Subject: [PATCH] avformat/asfdec: Fix DoS due to lack of eof check
Fixes: loop.asf
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 7f9ec5593e04827249e7aeb466da06a98a0d7329)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/asfdec_f.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git libavformat/asfdec_f.c libavformat/asfdec_f.c
index b973eff96e4..2cacafe50d5 100644
--- external/FFmpeg/libavformat/asfdec_f.c
+++ external/FFmpeg/libavformat/asfdec_f.c
@@ -749,13 +749,15 @@ static int asf_read_marker(AVFormatContext *s, int64_t size)
count = avio_rl32(pb); // markers count
avio_rl16(pb); // reserved 2 bytes
name_len = avio_rl16(pb); // name length
- for (i = 0; i < name_len; i++)
- avio_r8(pb); // skip the name
+ avio_skip(pb, name_len);
for (i = 0; i < count; i++) {
int64_t pres_time;
int name_len;
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
+
avio_rl64(pb); // offset, 8 bytes
pres_time = avio_rl64(pb); // presentation time
pres_time -= asf->hdr.preroll * 10000;

View File

@ -0,0 +1,88 @@
From 2920c7cec0b1958b59e5e7990078bea4428f6912 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sat, 26 Aug 2017 01:26:58 +0200
Subject: [PATCH] avformat/hls: Fix DoS due to infinite loop
Fixes: loop.m3u
The default max iteration count of 1000 is arbitrary and ideas for a better solution are welcome
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Previous version reviewed-by: Steven Liu <lingjiujianke@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 7ec414892ddcad88313848494b6fc5f437c9ca4a)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
doc/demuxers.texi | 18 ++++++++++++++++++
libavformat/hls.c | 7 +++++++
2 files changed, 25 insertions(+)
diff --git doc/demuxers.texi doc/demuxers.texi
index 2934a1cf7f4..d56ad1622a8 100644
--- external/FFmpeg/doc/demuxers.texi
+++ external/FFmpeg/doc/demuxers.texi
@@ -293,6 +293,24 @@ used to end the output video at the length of the shortest input file,
which in this case is @file{input.mp4} as the GIF in this example loops
infinitely.
+@section hls
+
+HLS demuxer
+
+It accepts the following options:
+
+@table @option
+@item live_start_index
+segment index to start live streams at (negative values are from the end).
+
+@item allowed_extensions
+',' separated list of file extensions that hls is allowed to access.
+
+@item max_reload
+Maximum number of times a insufficient list is attempted to be reloaded.
+Default value is 1000.
+@end table
+
@section image2
Image file demuxer.
diff --git libavformat/hls.c libavformat/hls.c
index ffefd284f86..87948726da6 100644
--- external/FFmpeg/libavformat/hls.c
+++ external/FFmpeg/libavformat/hls.c
@@ -205,6 +205,7 @@ typedef struct HLSContext {
AVDictionary *avio_opts;
int strict_std_compliance;
char *allowed_extensions;
+ int max_reload;
} HLSContext;
static int read_chomp_line(AVIOContext *s, char *buf, int maxlen)
@@ -1255,6 +1256,7 @@ static int read_data(void *opaque, uint8_t *buf, int buf_size)
HLSContext *c = v->parent->priv_data;
int ret, i;
int just_opened = 0;
+ int reload_count = 0;
restart:
if (!v->needed)
@@ -1286,6 +1288,9 @@ static int read_data(void *opaque, uint8_t *buf, int buf_size)
reload_interval = default_reload_interval(v);
reload:
+ reload_count++;
+ if (reload_count > c->max_reload)
+ return AVERROR_EOF;
if (!v->finished &&
av_gettime_relative() - v->last_load_time >= reload_interval) {
if ((ret = parse_playlist(c, v->url, v, NULL)) < 0) {
@@ -2143,6 +2148,8 @@ static const AVOption hls_options[] = {
OFFSET(allowed_extensions), AV_OPT_TYPE_STRING,
{.str = "3gp,aac,avi,flac,mkv,m3u8,m4a,m4s,m4v,mpg,mov,mp2,mp3,mp4,mpeg,mpegts,ogg,ogv,oga,ts,vob,wav"},
INT_MIN, INT_MAX, FLAGS},
+ {"max_reload", "Maximum number of times a insufficient list is attempted to be reloaded",
+ OFFSET(max_reload), AV_OPT_TYPE_INT, {.i64 = 1000}, 0, INT_MAX, FLAGS},
{NULL}
};

View File

@ -0,0 +1,34 @@
From 98e177c7288574b336d80618f4ec5d1f94243070 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=20and=20=E5=BC=A0=E6=B4=AA=E4=BA=AE=28?=
=?UTF-8?q?=E6=9C=9B=E5=88=9D=29?= <tony.sh and wangchu.zhl@alibaba-inc.com>
Date: Fri, 25 Aug 2017 01:15:27 +0200
Subject: [PATCH] avformat/cinedec: Fix DoS due to lack of eof check
Fixes: loop.cine
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 7e80b63ecd259d69d383623e75b318bf2bd491f6)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/cinedec.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git libavformat/cinedec.c libavformat/cinedec.c
index 32cccf566b4..c615d4fc497 100644
--- external/FFmpeg/libavformat/cinedec.c
+++ external/FFmpeg/libavformat/cinedec.c
@@ -267,8 +267,12 @@ static int cine_read_header(AVFormatContext *avctx)
/* parse image offsets */
avio_seek(pb, offImageOffsets, SEEK_SET);
- for (i = 0; i < st->duration; i++)
+ for (i = 0; i < st->duration; i++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
+
av_add_index_entry(st, avio_rl64(pb), i, 0, 0, AVINDEX_KEYFRAME);
+ }
return 0;
}

View File

@ -0,0 +1,33 @@
From 816f7337bf3ed3e08afdc28278668d8eb81910cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=28=E6=99=93=E9=BB=91=29?=
<tony.sh@alibaba-inc.com>
Date: Tue, 29 Aug 2017 23:59:21 +0200
Subject: [PATCH] avformat/mxfdec: Fix Sign error in mxf_read_primer_pack()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: 20170829B.mxf
Co-Author: 张洪亮(望初)" <wangchu.zhl@alibaba-inc.com>
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 9d00fb9d70ee8c0cc7002b89318c5be00f1bbdad)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mxfdec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavformat/mxfdec.c libavformat/mxfdec.c
index e2e34b246f7..0e9153847e8 100644
--- external/FFmpeg/libavformat/mxfdec.c
+++ external/FFmpeg/libavformat/mxfdec.c
@@ -500,7 +500,7 @@ static int mxf_read_primer_pack(void *arg, AVIOContext *pb, int tag, int size, U
avpriv_request_sample(pb, "Primer pack item length %d", item_len);
return AVERROR_PATCHWELCOME;
}
- if (item_num > 65536) {
+ if (item_num > 65536 || item_num < 0) {
av_log(mxf->fc, AV_LOG_ERROR, "item_num %d is too large\n", item_num);
return AVERROR_INVALIDDATA;
}

View File

@ -0,0 +1,43 @@
From 9cbac3602610afa0867b03bc1475c5c13441d096 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=28=E6=99=93=E9=BB=91=29?=
<tony.sh@alibaba-inc.com>
Date: Tue, 29 Aug 2017 23:59:21 +0200
Subject: [PATCH] avformat/mxfdec: Fix DoS issues in
mxf_read_index_entry_array()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: 20170829A.mxf
Co-Author: 张洪亮(望初)" <wangchu.zhl@alibaba-inc.com>
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 900f39692ca0337a98a7cf047e4e2611071810c2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mxfdec.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git libavformat/mxfdec.c libavformat/mxfdec.c
index 2ad0c288f89..e2e34b246f7 100644
--- external/FFmpeg/libavformat/mxfdec.c
+++ external/FFmpeg/libavformat/mxfdec.c
@@ -899,6 +899,8 @@ static int mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment *seg
segment->nb_index_entries = avio_rb32(pb);
length = avio_rb32(pb);
+ if(segment->nb_index_entries && length < 11)
+ return AVERROR_INVALIDDATA;
if (!(segment->temporal_offset_entries=av_calloc(segment->nb_index_entries, sizeof(*segment->temporal_offset_entries))) ||
!(segment->flag_entries = av_calloc(segment->nb_index_entries, sizeof(*segment->flag_entries))) ||
@@ -909,6 +911,8 @@ static int mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment *seg
}
for (i = 0; i < segment->nb_index_entries; i++) {
+ if(avio_feof(pb))
+ return AVERROR_INVALIDDATA;
segment->temporal_offset_entries[i] = avio_r8(pb);
avio_r8(pb); /* KeyFrameOffset */
segment->flag_entries[i] = avio_r8(pb);

View File

@ -0,0 +1,38 @@
From a051de092e9c709b69d24d94b66a382909be67d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B5=A9=28=E6=99=93=E9=BB=91=29?=
<tony.sh@alibaba-inc.com>
Date: Tue, 29 Aug 2017 23:59:21 +0200
Subject: [PATCH] avformat/nsvdec: Fix DoS due to lack of eof check in
nsvs_file_offset loop.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: 20170829.nsv
Co-Author: 张洪亮(望初)" <wangchu.zhl@alibaba-inc.com>
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit c24bcb553650b91e9eff15ef6e54ca73de2453b7)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/nsvdec.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git libavformat/nsvdec.c libavformat/nsvdec.c
index 507fb396a51..16d2fa59e21 100644
--- external/FFmpeg/libavformat/nsvdec.c
+++ external/FFmpeg/libavformat/nsvdec.c
@@ -350,8 +350,11 @@ static int nsv_parse_NSVf_header(AVFormatContext *s)
if (!nsv->nsvs_file_offset)
return AVERROR(ENOMEM);
- for(i=0;i<table_entries_used;i++)
+ for(i=0;i<table_entries_used;i++) {
+ if (avio_feof(pb))
+ return AVERROR_INVALIDDATA;
nsv->nsvs_file_offset[i] = avio_rl32(pb) + size;
+ }
if(table_entries > table_entries_used &&
avio_rl32(pb) == MKTAG('T','O','C','2')) {

View File

@ -0,0 +1,34 @@
From c9527df274ada02a19c2f973b29d1d5b7069d4bf Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 5 Sep 2017 00:16:29 +0200
Subject: [PATCH] avformat/mov: Fix DoS in read_tfra()
Fixes: Missing EOF check in loop
No testcase
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 9cb4eb772839c5e1de2855d126bf74ff16d13382)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/mov.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git libavformat/mov.c libavformat/mov.c
index 405476fd712..b97aa001a37 100644
--- external/FFmpeg/libavformat/mov.c
+++ external/FFmpeg/libavformat/mov.c
@@ -5394,6 +5394,13 @@ static int read_tfra(MOVContext *mov, AVIOContext *f)
}
for (i = 0; i < index->item_count; i++) {
int64_t time, offset;
+
+ if (avio_feof(f)) {
+ index->item_count = 0;
+ av_freep(&index->items);
+ return AVERROR_INVALIDDATA;
+ }
+
if (version == 1) {
time = avio_rb64(f);
offset = avio_rb64(f);

View File

@ -0,0 +1,32 @@
From 4e4177dde23be77a97887f409f237e17ef53f329 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 5 Sep 2017 00:16:29 +0200
Subject: [PATCH] avformat/asfdec: Fix DoS in asf_build_simple_index()
Fixes: Missing EOF check in loop
No testcase
Found-by: Xiaohei and Wangchu from Alibaba Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit afc9c683ed9db01edb357bc8c19edad4282b3a97)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/asfdec_f.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git libavformat/asfdec_f.c libavformat/asfdec_f.c
index 2cacafe50d5..d9dfbf0fa33 100644
--- external/FFmpeg/libavformat/asfdec_f.c
+++ external/FFmpeg/libavformat/asfdec_f.c
@@ -1610,6 +1610,11 @@ static int asf_build_simple_index(AVFormatContext *s, int stream_index)
int64_t pos = s->internal->data_offset + s->packet_size * (int64_t)pktnum;
int64_t index_pts = FFMAX(av_rescale(itime, i, 10000) - asf->hdr.preroll, 0);
+ if (avio_feof(s->pb)) {
+ ret = AVERROR_INVALIDDATA;
+ goto end;
+ }
+
if (pos != last_pos) {
av_log(s, AV_LOG_DEBUG, "pktnum:%d, pktct:%d pts: %"PRId64"\n",
pktnum, pktct, index_pts);

View File

@ -0,0 +1,48 @@
From 726133b6d2cd8f5f43b5af536024d8e02791d8cf Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 22 Aug 2017 11:02:38 +0200
Subject: [PATCH] ffprobe: Fix null pointer dereference with color primaries
Found-by: AD-lab of venustech
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 837cb4325b712ff1aab531bf41668933f61d75d2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit b2c39fcc3c0749490dc93bca80f56724878b55fe)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
ffprobe.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git ffprobe.c ffprobe.c
index 79fe296489d..703304a8c0f 100644
--- external/FFmpeg/ffprobe.c
+++ external/FFmpeg/ffprobe.c
@@ -1789,6 +1789,16 @@ static void print_pkt_side_data(WriterContext *w,
writer_print_section_footer(w);
}
+static void print_primaries(WriterContext *w, enum AVColorPrimaries color_primaries)
+{
+ const char *val = av_color_primaries_name(color_primaries);
+ if (!val || color_primaries == AVCOL_PRI_UNSPECIFIED) {
+ print_str_opt("color_primaries", "unknown");
+ } else {
+ print_str("color_primaries", val);
+ }
+}
+
static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int packet_idx)
{
char val_str[128];
@@ -2258,10 +2268,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
else
print_str_opt("color_transfer", av_color_transfer_name(par->color_trc));
- if (par->color_primaries != AVCOL_PRI_UNSPECIFIED)
- print_str("color_primaries", av_color_primaries_name(par->color_primaries));
- else
- print_str_opt("color_primaries", av_color_primaries_name(par->color_primaries));
+ print_primaries(w, par->color_primaries);
if (par->chroma_location != AVCHROMA_LOC_UNSPECIFIED)
print_str("chroma_location", av_chroma_location_name(par->chroma_location));

View File

@ -0,0 +1,28 @@
From 53a6cdf89d694be1f075729f16e0a9e2dcbbcb78 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Wed, 23 Aug 2017 21:30:37 +0200
Subject: [PATCH] avformat/rtpdec_h264: Fix heap-buffer-overflow
Fixes: rtp_sdp/poc.sdp
Found-by: Bingchang <l.bing.chang.bc@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit c42a1388a6d1bfd8001bf6a4241d8ca27e49326d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/rtpdec_h264.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git libavformat/rtpdec_h264.c libavformat/rtpdec_h264.c
index 8dd56a549e4..6f8148ab6d5 100644
--- external/FFmpeg/libavformat/rtpdec_h264.c
+++ external/FFmpeg/libavformat/rtpdec_h264.c
@@ -166,7 +166,7 @@ static int sdp_parse_fmtp_config_h264(AVFormatContext *s,
parse_profile_level_id(s, h264_data, value);
} else if (!strcmp(attr, "sprop-parameter-sets")) {
int ret;
- if (value[strlen(value) - 1] == ',') {
+ if (*value == 0 || value[strlen(value) - 1] == ',') {
av_log(s, AV_LOG_WARNING, "Missing PPS in sprop-parameter-sets, ignoring\n");
return 0;
}

View File

@ -0,0 +1,78 @@
From 0eb0b21c7f4f2b6a3a74d2d252f95b81a4d472c3 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Sat, 30 Sep 2017 00:20:09 +0200
Subject: [PATCH] avcodec/x86/lossless_videoencdsp: Fix handling of small
widths
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes out of array access
Fixes: crash-huf.avi
Regression since: 6b41b4414934cc930468ccd5db598dd6ef643987
This could also be fixed by adding checks in the C code that calls the dsp
Found-by: Zhibin Hu and 连一汉 <lianyihan@360.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit df62b70de8aaa285168e72fe8f6e740843ca91fa)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/x86/huffyuvencdsp.asm | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git libavcodec/x86/huffyuvencdsp.asm libavcodec/x86/huffyuvencdsp.asm
index a55a1de65de..7a1ce2e839e 100644
--- external/FFmpeg/libavcodec/x86/huffyuvencdsp.asm
+++ external/FFmpeg/libavcodec/x86/huffyuvencdsp.asm
@@ -42,10 +42,11 @@ cglobal diff_bytes, 4,5,2, dst, src1, src2, w
%define i t0q
%endmacro
-; label to jump to if w < regsize
-%macro DIFF_BYTES_LOOP_PREP 1
+; labels to jump to if w < regsize and w < 0
+%macro DIFF_BYTES_LOOP_PREP 2
mov i, wq
and i, -2 * regsize
+ js %2
jz %1
add dstq, i
add src1q, i
@@ -87,7 +88,7 @@ cglobal diff_bytes, 4,5,2, dst, src1, src2, w
%if mmsize > 16
; fall back to narrower xmm
%define regsize mmsize / 2
- DIFF_BYTES_LOOP_PREP .setup_loop_gpr_aa
+ DIFF_BYTES_LOOP_PREP .setup_loop_gpr_aa, .end_aa
.loop2_%1%2:
DIFF_BYTES_LOOP_CORE %1, %2, xm0, xm1
add i, 2 * regsize
@@ -114,7 +115,7 @@ cglobal diff_bytes, 4,5,2, dst, src1, src2, w
INIT_MMX mmx
DIFF_BYTES_PROLOGUE
%define regsize mmsize
- DIFF_BYTES_LOOP_PREP .skip_main_aa
+ DIFF_BYTES_LOOP_PREP .skip_main_aa, .end_aa
DIFF_BYTES_BODY a, a
%undef i
%endif
@@ -122,7 +123,7 @@ DIFF_BYTES_PROLOGUE
INIT_XMM sse2
DIFF_BYTES_PROLOGUE
%define regsize mmsize
- DIFF_BYTES_LOOP_PREP .skip_main_aa
+ DIFF_BYTES_LOOP_PREP .skip_main_aa, .end_aa
test dstq, regsize - 1
jnz .loop_uu
test src1q, regsize - 1
@@ -138,7 +139,7 @@ DIFF_BYTES_PROLOGUE
%define regsize mmsize
; Directly using unaligned SSE2 version is marginally faster than
; branching based on arguments.
- DIFF_BYTES_LOOP_PREP .skip_main_uu
+ DIFF_BYTES_LOOP_PREP .skip_main_uu, .end_uu
test dstq, regsize - 1
jnz .loop_uu
test src1q, regsize - 1

View File

@ -0,0 +1,93 @@
From 519a54cc195b92fe6ba71fd156e31e944d862d7e Mon Sep 17 00:00:00 2001
From: Rostislav Pehlivanov <atomnuker@gmail.com>
Date: Wed, 8 Nov 2017 23:50:04 +0000
Subject: [PATCH] vc2enc_dwt: pad the temporary buffer by the slice size
Since non-Haar wavelets need to look into pixels outside the frame, we
need to pad the buffer. The old factor of two seemed to be a workaround
that fact and only padded to the left and bottom. This correctly pads
by the slice size and as such reduces memory usage and potential
exploits.
Reported by Liu Bingchang.
Ideally, there should be no temporary buffer but the encoder is designed
to deinterleave the coefficients into the classical wavelet structure
with the lower frequency values in the top left corner.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
(cherry picked from commit 3228ac730c11eca49d5680d5550128e397061c85)
---
libavcodec/vc2enc.c | 3 ++-
libavcodec/vc2enc_dwt.c | 12 +++++++++---
libavcodec/vc2enc_dwt.h | 4 +++-
3 files changed, 14 insertions(+), 5 deletions(-)
diff --git libavcodec/vc2enc.c libavcodec/vc2enc.c
index eda390163ff..745c6e974d5 100644
--- external/FFmpeg/libavcodec/vc2enc.c
+++ external/FFmpeg/libavcodec/vc2enc.c
@@ -1190,7 +1190,8 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx)
/* DWT init */
if (ff_vc2enc_init_transforms(&s->transform_args[i].t,
s->plane[i].coef_stride,
- s->plane[i].dwt_height))
+ s->plane[i].dwt_height,
+ s->slice_width, s->slice_height))
goto alloc_fail;
}
diff --git libavcodec/vc2enc_dwt.c libavcodec/vc2enc_dwt.c
index c60b003a313..d22af8a3138 100644
--- external/FFmpeg/libavcodec/vc2enc_dwt.c
+++ external/FFmpeg/libavcodec/vc2enc_dwt.c
@@ -255,21 +255,27 @@ static void vc2_subband_dwt_haar_shift(VC2TransformContext *t, dwtcoef *data,
dwt_haar(t, data, stride, width, height, 1);
}
-av_cold int ff_vc2enc_init_transforms(VC2TransformContext *s, int p_width, int p_height)
+av_cold int ff_vc2enc_init_transforms(VC2TransformContext *s, int p_stride,
+ int p_height, int slice_w, int slice_h)
{
s->vc2_subband_dwt[VC2_TRANSFORM_9_7] = vc2_subband_dwt_97;
s->vc2_subband_dwt[VC2_TRANSFORM_5_3] = vc2_subband_dwt_53;
s->vc2_subband_dwt[VC2_TRANSFORM_HAAR] = vc2_subband_dwt_haar;
s->vc2_subband_dwt[VC2_TRANSFORM_HAAR_S] = vc2_subband_dwt_haar_shift;
- s->buffer = av_malloc(2*p_width*p_height*sizeof(dwtcoef));
+ /* Pad by the slice size, only matters for non-Haar wavelets */
+ s->buffer = av_calloc((p_stride + slice_w)*(p_height + slice_h), sizeof(dwtcoef));
if (!s->buffer)
return 1;
+ s->padding = (slice_h >> 1)*p_stride + (slice_w >> 1);
+ s->buffer += s->padding;
+
return 0;
}
av_cold void ff_vc2enc_free_transforms(VC2TransformContext *s)
{
- av_freep(&s->buffer);
+ av_free(s->buffer - s->padding);
+ s->buffer = NULL;
}
diff --git libavcodec/vc2enc_dwt.h libavcodec/vc2enc_dwt.h
index 7fbbfbe0ed9..a6932bcdaf0 100644
--- external/FFmpeg/libavcodec/vc2enc_dwt.h
+++ external/FFmpeg/libavcodec/vc2enc_dwt.h
@@ -41,12 +41,14 @@ enum VC2TransformType {
typedef struct VC2TransformContext {
dwtcoef *buffer;
+ int padding;
void (*vc2_subband_dwt[VC2_TRANSFORMS_NB])(struct VC2TransformContext *t,
dwtcoef *data, ptrdiff_t stride,
int width, int height);
} VC2TransformContext;
-int ff_vc2enc_init_transforms(VC2TransformContext *t, int p_width, int p_height);
+int ff_vc2enc_init_transforms(VC2TransformContext *t, int p_stride, int p_height,
+ int slice_w, int slice_h);
void ff_vc2enc_free_transforms(VC2TransformContext *t);
#endif /* AVCODEC_VC2ENC_DWT_H */

View File

@ -0,0 +1,28 @@
From b2c9771dd435fbce4f0a422bbdc16ecf7b243395 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 9 Oct 2017 00:32:30 +0200
Subject: [PATCH] avcodec/mpeg_er: Clear mcsel in mpeg_er_decode_mb()
Fixes out of array read
Should fix: 3516/clusterfuzz-testcase-minimized-4608518562775040 (not reprodoceable)
Found-by: Insu Yun, Georgia Tech.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 127a362630e11fe724e2e63fc871791fdcbcfa64)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/mpeg_er.c | 1 +
1 file changed, 1 insertion(+)
diff --git libavcodec/mpeg_er.c libavcodec/mpeg_er.c
index dd87ae9cc9e..9bd269c4402 100644
--- external/FFmpeg/libavcodec/mpeg_er.c
+++ external/FFmpeg/libavcodec/mpeg_er.c
@@ -71,6 +71,7 @@ static void mpeg_er_decode_mb(void *opaque, int ref, int mv_dir, int mv_type,
s->mb_skipped = mb_skipped;
s->mb_x = mb_x;
s->mb_y = mb_y;
+ s->mcsel = 0;
memcpy(s->mv, mv, sizeof(*mv));
ff_init_block_index(s);

View File

@ -0,0 +1,33 @@
From b51f515c5c837351f2104b43c0e2a0562a759086 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 13 Nov 2017 20:47:48 +0100
Subject: [PATCH] avcodec/x86/mpegvideodsp: Fix signedness bug in need_emu
Fixes: out of array read
Fixes: 3516/attachment-311488.dat
Found-by: Insu Yun, Georgia Tech.
Tested-by: wuninsu@gmail.com
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 58cf31cee7a456057f337b3102a03206d833d5e8)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/x86/mpegvideodsp.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git libavcodec/x86/mpegvideodsp.c libavcodec/x86/mpegvideodsp.c
index e0498f38496..6009b64e076 100644
--- external/FFmpeg/libavcodec/x86/mpegvideodsp.c
+++ external/FFmpeg/libavcodec/x86/mpegvideodsp.c
@@ -52,8 +52,9 @@ static void gmc_mmx(uint8_t *dst, uint8_t *src,
const int dyh = (dyy - (1 << (16 + shift))) * (h - 1);
const int dxh = dxy * (h - 1);
const int dyw = dyx * (w - 1);
- int need_emu = (unsigned) ix >= width - w ||
- (unsigned) iy >= height - h;
+ int need_emu = (unsigned) ix >= width - w || width < w ||
+ (unsigned) iy >= height - h || height< h
+ ;
if ( // non-constant fullpel offset (3% of blocks)
((ox ^ (ox + dxw)) | (ox ^ (ox + dxh)) | (ox ^ (ox + dxw + dxh)) |

View File

@ -0,0 +1,44 @@
Fix for CVE-2018-6392
https://security-tracker.debian.org/tracker/CVE-2018-6392
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/3f621455d62e46745453568d915badd5b1e5bcd5
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/c6939f65a116b1ffed345d29d8621ee4ffb32235
--- external/FFmpeg/libavfilter/vf_transpose.c.orig 2018-02-01 11:15:37 UTC
+++ external/FFmpeg/libavfilter/vf_transpose.c
@@ -27,6 +27,7 @@
#include <stdio.h>
+#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
@@ -54,6 +55,7 @@ enum TransposeDir {
typedef struct TransContext {
const AVClass *class;
int hsub, vsub;
+ int planes;
int pixsteps[4];
int passthrough; ///< PassthroughType, landscape passthrough mode enabled
@@ -106,7 +108,11 @@ static int config_props_output(AVFilterLink *outlink)
s->hsub = desc_in->log2_chroma_w;
s->vsub = desc_in->log2_chroma_h;
+ s->planes = av_pix_fmt_count_planes(outlink->format);
+ av_assert0(desc_in->nb_components == desc_out->nb_components);
+
+
av_image_fill_max_pixsteps(s->pixsteps, NULL, desc_out);
outlink->w = inlink->h;
@@ -148,7 +154,7 @@ static int filter_slice(AVFilterContext *ctx, void *ar
AVFrame *in = td->in;
int plane;
- for (plane = 0; out->data[plane]; plane++) {
+ for (plane = 0; plane < s->planes; plane++) {
int hsub = plane == 1 || plane == 2 ? s->hsub : 0;
int vsub = plane == 1 || plane == 2 ? s->vsub : 0;
int pixstep = s->pixsteps[plane];

View File

@ -0,0 +1,15 @@
Fix for CVE-2018-6621
https://security-tracker.debian.org/tracker/CVE-2018-6621
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/118e1b0b3370dd1c0da442901b486689efd1654b
--- external/FFmpeg/libavcodec/utvideodec.c.orig 2018-03-01 05:12:04 UTC
+++ external/FFmpeg/libavcodec/utvideodec.c
@@ -534,7 +534,7 @@ static int decode_frame(AVCodecContext *avctx, void *d
for (j = 0; j < c->slices; j++) {
slice_end = bytestream2_get_le32u(&gb);
if (slice_end < 0 || slice_end < slice_start ||
- bytestream2_get_bytes_left(&gb) < slice_end) {
+ bytestream2_get_bytes_left(&gb) < slice_end + 1024LL) {
av_log(avctx, AV_LOG_ERROR, "Incorrect slice size\n");
return AVERROR_INVALIDDATA;
}

View File

@ -1,6 +1,6 @@
--- configure.orig 2015-06-16 16:03:30 UTC
--- configure.orig 2018-01-11 12:39:22 UTC
+++ configure
@@ -846,28 +846,28 @@ check_cc(){
@@ -1003,35 +1003,35 @@ check_cc(){
log check_cc "$@"
cat > $TMPC
log_file $TMPC
@ -24,6 +24,14 @@
+ check_cmd $cxx $CPPFLAGS $CXXFLAGS $ECXXFLAGS -I${prefix}/include "$@" $CXX_C -o $TMPO $TMPCPP
}
check_objcc(){
log check_objcc "$@"
cat > $TMPM
log_file $TMPM
- check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
+ check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS -I${prefix}/include "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
}
check_cpp(){
log check_cpp "$@"
cat > $TMPC
@ -33,46 +41,12 @@
}
as_o(){
@@ -2539,7 +2539,7 @@ python_default="python"
# machine
arch_default=$(uname -m)
-cpu="generic"
+cpu="i686"
processor=`uname -p 2>/dev/null`
processor_flags=""
tune="generic"
@@ -3931,7 +3931,7 @@ elif enabled x86; then
i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
cpuflags="-march=$cpu"
enable cmov
- enable fast_cmov
+ disable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4|pentium4m|prescott|nocona)
@@ -4102,7 +4102,6 @@ case $target_os in
append CCONFIG "freebsd"
# Workaround compile errors from missing u_int/uint def
CPPFLAGS=`echo $CPPFLAGS | sed 's/-D_POSIX_C_SOURCE=200112//'`
- disable ivtv
enable backend
;;
bsd/os)
@@ -6389,6 +6388,7 @@ cat <<EOF >> $TMPMAK
QMAKE_LIBDIR_QT-=${sysroot}${libdir}
QMAKE_LIBDIR-=${sysroot}${libdir}
LATE_LIBS+=-L${sysroot}${libdir}
+FREETYPE_CFLAGS-= -I/usr/local/include
EOF
#echo "endif # FFMPEG_CONFIG_MAK" >> $TMPMAK
@@ -6441,7 +6441,7 @@ INCDIR=\$(INSTALL_ROOT)$incdir
@@ -8840,7 +8840,7 @@ INCDIR=\$(INSTALL_ROOT)$incdir
BINDIR=\$(INSTALL_ROOT)$bindir
DATADIR=\$(INSTALL_ROOT)$datadir
MANDIR=\$(INSTALL_ROOT)$mandir
-CFLAGS=${CFLAGS} -w
+CFLAGS=${CFLAGS} -I/usr/local/include -w
-CFLAGS=${CFLAGS} -DFF_API_OLD_DECODE_AUDIO=1 -w
+CFLAGS=${CFLAGS} -DFF_API_OLD_DECODE_AUDIO=1 -I${prefix}/include -w
endif # FFMPEG_CONFIG_MAK
EOF

View File

@ -1,22 +1,29 @@
--- external/FFmpeg/configure.orig 2015-06-16 16:03:30 UTC
Fix arch detection
Fix runtime crashes on i386: enforce stack-alignment=16
--- external/FFmpeg/configure.orig 2018-02-01 11:15:37 UTC
+++ external/FFmpeg/configure
@@ -2167,8 +2167,8 @@ yasmexe_default="yasm"
nogas=":"
@@ -3189,12 +3189,7 @@ target_os_default=$(tolower $(uname -s))
host_os=$target_os_default
# machine
-arch_default=$(uname -m)
-cpu="generic"
-if test "$target_os_default" = aix; then
- arch_default=$(uname -p)
- strip_default="strip -X32_64"
-else
- arch_default=$(uname -m)
-fi
+arch_default=$(uname -p)
+cpu="i686"
cpu="generic"
intrinsics="none"
# OS
target_os_default=$(tolower $(uname -s))
@@ -3137,7 +3137,7 @@ elif enabled x86; then
i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
cpuflags="-march=$cpu"
enable cmov
- enable fast_cmov
+ disable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4|pentium4m|prescott|nocona)
@@ -6217,6 +6212,9 @@ elif enabled llvm_gcc; then
elif enabled clang; then
check_cflags -mllvm -stack-alignment=16
check_cflags -mstack-alignment=16
+ if enabled x86_32; then
+ check_cflags -mstackrealign
+ fi
check_cflags -Qunused-arguments
check_cflags -Werror=implicit-function-declaration
check_cflags -Werror=missing-prototypes

View File

@ -1,11 +0,0 @@
--- external/FFmpeg/libavcodec/x86/ac3dsp_init.c.orig 2015-06-16 16:03:30 UTC
+++ external/FFmpeg/libavcodec/x86/ac3dsp_init.c
@@ -51,7 +51,7 @@ extern void ff_ac3_extract_exponents_3dnow(uint8_t *ex
extern void ff_ac3_extract_exponents_sse2 (uint8_t *exp, int32_t *coef, int nb_coefs);
extern void ff_ac3_extract_exponents_ssse3(uint8_t *exp, int32_t *coef, int nb_coefs);
-#if ARCH_X86_32 && defined(__INTEL_COMPILER)
+#if ARCH_X86_32 && (defined(__INTEL_COMPILER) || defined(__clang__))
# undef HAVE_7REGS
# define HAVE_7REGS 0
#endif

View File

@ -0,0 +1,48 @@
Fix RTP stream; FreeBSD's socket calls require the sockaddr struct length
to agree with the address family.
PR: 214852
--- external/FFmpeg/libavformat/rtsp.c.orig 2018-02-01 11:15:37 UTC
+++ external/FFmpeg/libavformat/rtsp.c
@@ -1614,7 +1614,12 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, con
}
if (ttl > 0)
snprintf(optbuf, sizeof(optbuf), "?ttl=%d", ttl);
- getnameinfo((struct sockaddr*) &addr, sizeof(addr),
+ getnameinfo((struct sockaddr*) &addr,
+#if HAVE_STRUCT_SOCKADDR_SA_LEN
+ ((struct sockaddr*) &addr)->sa_len,
+#else
+ sizeof(addr),
+#endif
namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
ff_url_join(url, sizeof(url), "rtp", NULL, namebuf,
port, "%s", optbuf);
@@ -1830,8 +1835,13 @@ redirect:
goto fail;
}
if (!getpeername(tcp_fd, (struct sockaddr*) &peer, &peer_len)) {
- getnameinfo((struct sockaddr*) &peer, peer_len, host, sizeof(host),
- NULL, 0, NI_NUMERICHOST);
+ getnameinfo((struct sockaddr*) &peer,
+#if HAVE_STRUCT_SOCKADDR_SA_LEN
+ ((struct sockaddr*) &peer)->sa_len,
+#else
+ peer_len,
+#endif
+ host, sizeof(host), NULL, 0, NI_NUMERICHOST);
}
/* request options supported by the server; this also detects server
@@ -2310,7 +2320,11 @@ static int sdp_read_header(AVFormatContext *s)
AVDictionary *opts = map_to_opts(rt);
err = getnameinfo((struct sockaddr*) &rtsp_st->sdp_ip,
+#if HAVE_STRUCT_SOCKADDR_SA_LEN
+ ((struct sockaddr*) &rtsp_st->sdp_ip)->sa_len,
+#else
sizeof(rtsp_st->sdp_ip),
+#endif
namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
if (err) {
av_log(s, AV_LOG_ERROR, "getnameinfo: %s\n", gai_strerror(err));

View File

@ -0,0 +1,58 @@
Fix build with libressl
--- external/FFmpeg/libavformat/tls_openssl.c.orig 2018-02-01 11:15:37 UTC
+++ external/FFmpeg/libavformat/tls_openssl.c
@@ -43,7 +43,7 @@ typedef struct TLSContext {
TLSShared tls_shared;
SSL_CTX *ctx;
SSL *ssl;
-#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_NUMBER)
BIO_METHOD* url_bio_method;
#endif
} TLSContext;
@@ -68,7 +68,7 @@ static unsigned long openssl_thread_id(void)
static int url_bio_create(BIO *b)
{
-#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_NUMBER)
BIO_set_init(b, 1);
BIO_set_data(b, NULL);
BIO_set_flags(b, 0);
@@ -85,7 +85,7 @@ static int url_bio_destroy(BIO *b)
return 1;
}
-#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_NUMBER)
#define GET_BIO_DATA(x) BIO_get_data(x);
#else
#define GET_BIO_DATA(x) (x)->ptr;
@@ -133,7 +133,7 @@ static int url_bio_bputs(BIO *b, const char *str)
return url_bio_bwrite(b, str, strlen(str));
}
-#if OPENSSL_VERSION_NUMBER < 0x1010000fL
+#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER)
static BIO_METHOD url_bio_method = {
.type = BIO_TYPE_SOURCE_SINK,
.name = "urlprotocol bio",
@@ -212,7 +212,7 @@ static int tls_close(URLContext *h)
SSL_CTX_free(c->ctx);
if (c->tls_shared.tcp)
ffurl_close(c->tls_shared.tcp);
-#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_NUMBER)
if (c->url_bio_method)
BIO_meth_free(c->url_bio_method);
#endif
@@ -265,7 +265,7 @@ static int tls_open(URLContext *h, const char *uri, in
ret = AVERROR(EIO);
goto fail;
}
-#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_NUMBER)
p->url_bio_method = BIO_meth_new(BIO_TYPE_SOURCE_SINK, "urlprotocol bio");
BIO_meth_set_write(p->url_bio_method, url_bio_bwrite);
BIO_meth_set_read(p->url_bio_method, url_bio_bread);

View File

@ -0,0 +1,16 @@
--- external/libmythdvdnav/dvdnav/dvdnav/dvdnav.h.orig 2018-01-11 12:39:22 UTC
+++ external/libmythdvdnav/dvdnav/dvdnav/dvdnav.h
@@ -33,11 +33,11 @@
extern "C" {
#endif
-#include <dvdnav/dvd_types.h>
+#include "dvd_types.h"
#include <dvdread/dvd_reader.h>
#include <dvdread/nav_types.h>
#include <dvdread/ifo_types.h> /* For vm_cmd_t */
-#include <dvdnav/dvdnav_events.h>
+#include "dvdnav_events.h"
#include "compat.h"

View File

@ -1,10 +0,0 @@
--- external/zeromq/src/Makefile.am.orig 2015-06-16 16:03:30 UTC
+++ external/zeromq/src/Makefile.am
@@ -1,6 +1,6 @@
lib_LTLIBRARIES = libmythzmq.la
-pkgconfigdir = $(libdir)/pkgconfig
+pkgconfigdir = $(PKG_CONFIG_PATH)
pkgconfig_DATA = libmythzmq.pc
include_HEADERS = ../include/zmq.h ../include/zmq.hpp ../include/zmq_utils.h

View File

@ -1,10 +0,0 @@
--- libs/libmyth/remoteutil.h.orig 2015-06-16 16:03:30 UTC
+++ libs/libmyth/remoteutil.h
@@ -10,6 +10,7 @@
using namespace std;
#include "mythexp.h"
+#include <sys/types.h>
class ProgramInfo;
class MythEvent;

View File

@ -1,11 +0,0 @@
--- libs/libmythdvdnav/dvdnav/dvdnav.c.orig 2015-06-16 16:03:30 UTC
+++ libs/libmythdvdnav/dvdnav/dvdnav.c
@@ -33,7 +33,7 @@
#include <limits.h>
#include <string.h>
#include <sys/time.h>
-#include "dvdnav/dvdnav.h"
+#include "dvdnav.h"
#include <dvdread/dvd_reader.h>
#include <dvdread/nav_types.h>
#include <dvdread/ifo_types.h> /* For vm_cmd_t */

View File

@ -0,0 +1,11 @@
--- libs/libmythtv/DVD/dvdringbuffer.h.orig 2018-01-11 12:39:22 UTC
+++ libs/libmythtv/DVD/dvdringbuffer.h
@@ -21,7 +21,7 @@ extern "C" {
#include "libavcodec/avcodec.h"
}
-#include "dvdnav/dvdnav.h"
+#include "../../../external/libmythdvdnav/dvdnav/dvdnav/dvdnav.h"
/** \class MythDVDContext
* \brief Encapsulates playback context at any given moment.

View File

@ -0,0 +1,64 @@
Database schema 1347 fails to update due to bad SQL statement
Ref: https://code.mythtv.org/trac/ticket/13155
--- libs/libmythtv/dbcheck.cpp.orig 2018-02-01 11:15:37 UTC
+++ libs/libmythtv/dbcheck.cpp
@@ -3340,25 +3340,24 @@ NULL
if (dbver == "1346")
{
- QString master;
+ QList<QByteArray> updates_ba;
// Create new MasterServerName setting
if (gCoreContext->IsMasterHost())
- master =
- "insert into settings (value,data,hostname) "
- "values('MasterServerName','"
- + gCoreContext->GetHostName() + "', null);";
+ updates_ba.push_back(
+ QString("INSERT INTO settings (value, data, hostname) "
+ "VALUES ('MasterServerName', '%1', NULL);")
+ .arg(gCoreContext->GetHostName()).toLocal8Bit());
else
- master =
- "insert into settings (value,data,hostname) "
- "select 'MasterServerName', b.hostname, null "
- "from settings a, settings b "
- "where a.value = 'MasterServerIP' "
- "and b.value in ('BackendServerIP','BackendServerIP6')"
- "and a.data = b.data;";
+ updates_ba.push_back(
+ QString("INSERT INTO settings (value,data,hostname) "
+ "SELECT 'MasterServerName', b.hostname, NULL "
+ "FROM settings a, settings b "
+ "WHERE a.value = 'MasterServerIP' "
+ "AND b.value IN ('BackendServerIP','BackendServerIP6')"
+ "AND a.data = b.data;")
+ .toLocal8Bit());
- const char *updates[] = {
- // Create new MasterServerName setting
- master.toLocal8Bit().constData(),
+ const char *post_sql[] = {
// Create new BackendServerAddr setting for each backend server
// Assume using IPV4 value.
"insert into settings (value,data,hostname) "
@@ -3385,8 +3384,17 @@ NULL
// Delete obsolete settings
"delete from settings "
"where value in ('WatchTVGuide');",
- NULL
};
+
+ for (uint i = 0; i < sizeof(post_sql)/sizeof(char*); i++)
+ updates_ba.push_back(QByteArray(post_sql[i]));
+
+ // Convert update ByteArrays to NULL terminated char**
+ QList<QByteArray>::const_iterator it = updates_ba.begin();
+ vector<const char*> updates;
+ for (; it != updates_ba.end(); ++it)
+ updates.push_back((*it).constData());
+ updates.push_back(NULL);
if (!performActualUpdate(&updates[0], "1347", dbver))
return false;

View File

@ -1,29 +0,0 @@
--- libs/libmythtv/recorders/dvbstreamhandler.cpp.orig 2015-06-16 16:03:30 UTC
+++ libs/libmythtv/recorders/dvbstreamhandler.cpp
@@ -620,7 +620,7 @@ bool DVBPIDInfo::Open(const QString &dvb_dev, bool use
{
struct dmx_pes_filter_params pesFilterParams;
memset(&pesFilterParams, 0, sizeof(struct dmx_pes_filter_params));
- pesFilterParams.pid = (__u16) _pid;
+ pesFilterParams.pid = (uint16_t) _pid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.flags = DMX_IMMEDIATE_START;
@@ -640,7 +640,7 @@ bool DVBPIDInfo::Open(const QString &dvb_dev, bool use
{
struct dmx_sct_filter_params sctFilterParams;
memset(&sctFilterParams, 0, sizeof(struct dmx_sct_filter_params));
- switch ( (__u16) _pid )
+ switch ( (uint16_t) _pid )
{
case 0x0: // PAT
sctFilterParams.filter.filter[0] = 0;
@@ -676,7 +676,7 @@ bool DVBPIDInfo::Open(const QString &dvb_dev, bool use
sctFilterParams.filter.mask[0] = 0x00;
break;
}
- sctFilterParams.pid = (__u16) _pid;
+ sctFilterParams.pid = (uint16_t) _pid;
sctFilterParams.timeout = 0;
sctFilterParams.flags = DMX_IMMEDIATE_START;

View File

@ -1,11 +0,0 @@
--- libs/libmythtv/videoout_vdpau.cpp.orig 2015-06-16 16:03:30 UTC
+++ libs/libmythtv/videoout_vdpau.cpp
@@ -442,7 +442,7 @@ void VideoOutputVDPAU::PrepareFrame(VideoFrame *frame,
if (frame)
{
// FIXME for 0.23. This should be triggered from AFD by a seek
- if ((abs(frame->frameNumber - framesPlayed) > 8))
+ if ((labs(frame->frameNumber - framesPlayed) > 8))
ClearReferenceFrames();
new_frame = (framesPlayed != frame->frameNumber + 1);
framesPlayed = frame->frameNumber + 1;

View File

@ -1,19 +0,0 @@
--- libs/libmythui/mythgesture.cpp.orig 2015-06-16 16:03:30 UTC
+++ libs/libmythui/mythgesture.cpp
@@ -28,6 +28,7 @@
#include "mythgesture.h"
+#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <complex>
@@ -284,7 +285,7 @@ bool MythGesture::record(const QPoint & p)
int dely = p.y() - points.back().y();
/* step by the greatest delta direction */
- if (abs(delx) > abs(dely))
+ if (std::abs(delx) > std::abs(dely))
{
float iy = points.back().y();

View File

@ -1,4 +1,4 @@
--- libs/libmythui/mythpainter.cpp.orig 2015-06-16 16:03:30 UTC
--- libs/libmythui/mythpainter.cpp.orig 2018-01-11 12:39:22 UTC
+++ libs/libmythui/mythpainter.cpp
@@ -1,6 +1,7 @@
#include <stdint.h>

View File

@ -0,0 +1,10 @@
--- libs/libmythui/mythrender_vdpau.h.orig 2018-01-27 11:25:49 UTC
+++ libs/libmythui/mythrender_vdpau.h
@@ -12,6 +12,7 @@
extern "C" {
#include "libavcodec/vdpau.h"
+#include <vdpau/vdpau_x11.h>
}
#define MIN_OUTPUT_SURFACES 2 // UI

View File

@ -1,10 +0,0 @@
--- libs/libmythupnp/mmulticastsocketdevice.h.orig 2015-06-16 16:03:30 UTC
+++ libs/libmythupnp/mmulticastsocketdevice.h
@@ -22,6 +22,7 @@
# include <ws2tcpip.h>
# endif
#else
+# include <sys/types.h>
# include <sys/socket.h>
# include <netinet/in.h>
# include <netinet/ip.h>

File diff suppressed because it is too large Load Diff

View File

@ -2,9 +2,8 @@
# $FreeBSD$
PORTNAME= mythweb
PORTVERSION= 0.28.1
DISTVERSIONPREFIX= v
PORTREVISION= 1
DISTVERSION= 29.1
CATEGORIES= www
PKGNAMEPREFIX= mythplugin-
@ -14,14 +13,11 @@ COMMENT= Frontend for scheduling and managing recordings on your MythTV Box
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
IGNORE_WITH_PHP= 70 71 72
RUN_DEPENDS= p5-DBD-mysql>=0:databases/p5-DBD-mysql
USES= php shebangfix
USES= php shebangfix perl5
USE_PERL5= run
USE_PHP= json pcre posix mysqli session spl sockets
USE_GITHUB= yes
GH_ACCOUNT= MythTV
USE_PHP= json mysql pcre posix session spl
SHEBANG_FILES= mythweb.pl modules/_shared/lang/build_translation.pl \
modules/coverart/handler.pl modules/stream/*.pl
@ -31,11 +27,13 @@ PLIST_SUB= WWWOWN="${WWWOWN}" WWWGRP="${WWWGRP}"
SUB_FILES= pkg-message
REINPLACE_ARGS= -i ""
OPTIONS_DEFINE= APACHE LIGHTTPD
OPTIONS_DEFINE= APACHE LIGHTTPD NGINX
OPTIONS_DEFAULT= APACHE
APACHE_USE= APACHE_RUN=22+
LIGHTTPD_RUN_DEPENDS= lighttpd:www/lighttpd
NGINX_DESC= Nginx server support
NGINX_RUN_DEPENDS= nginx:www/nginx
post-patch:
@${REINPLACE_CMD} -e 's|/var/www/html|${WWWDIR}|' \

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1494080463
SHA256 (MythTV-mythweb-v0.28.1_GH0.tar.gz) = bbd82992230d3571eba55a26a91cc3f2dcddfa631d1822ce58e1bf99f2537244
SIZE (MythTV-mythweb-v0.28.1_GH0.tar.gz) = 1705490
TIMESTAMP = 1519575608
SHA256 (MythTV-mythweb-v29.1_GH0.tar.gz) = 30583d7c077dbc732053d0ee7b13a46ab3ceaeb0aaa7c8e9744ef6ac959989e8
SIZE (MythTV-mythweb-v29.1_GH0.tar.gz) = 1796312

View File

@ -49,6 +49,9 @@
%%WWWDIR%%/includes/translate.php
%%WWWDIR%%/includes/utils.php
%%WWWDIR%%/js/AC_OETags.js
%%WWWDIR%%/js/README
%%WWWDIR%%/js/ajax/libs/jquery/3.2.1/jquery.min.js
%%WWWDIR%%/js/ajax/libs/prototype/1.7.3.0/prototype.js
%%WWWDIR%%/js/dialog/dialog.css
%%WWWDIR%%/js/dialog/dialog.js
%%WWWDIR%%/js/jquery-1.9.1.min.js