mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 21:26:49 +00:00
Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-next
This commit is contained in:
commit
814d591006
@ -29,18 +29,21 @@
|
|||||||
TARGET_ABI=eabi
|
TARGET_ABI=eabi
|
||||||
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
||||||
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
||||||
|
SIMD_SUPPORT="no"
|
||||||
;;
|
;;
|
||||||
cortex-a8)
|
cortex-a8)
|
||||||
TARGET_SUBARCH=armv7-a
|
TARGET_SUBARCH=armv7-a
|
||||||
TARGET_ABI=eabi
|
TARGET_ABI=eabi
|
||||||
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
||||||
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
||||||
|
SIMD_SUPPORT="yes"
|
||||||
;;
|
;;
|
||||||
cortex-a9)
|
cortex-a9)
|
||||||
TARGET_SUBARCH=armv7-a
|
TARGET_SUBARCH=armv7-a
|
||||||
TARGET_ABI=eabi
|
TARGET_ABI=eabi
|
||||||
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
|
||||||
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
||||||
|
SIMD_SUPPORT="yes"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -9,3 +9,6 @@
|
|||||||
# setup ARCH specific *FLAGS
|
# setup ARCH specific *FLAGS
|
||||||
TARGET_CFLAGS="-march=$TARGET_CPU -m32"
|
TARGET_CFLAGS="-march=$TARGET_CPU -m32"
|
||||||
TARGET_LDFLAGS="-march=$TARGET_CPU -m32"
|
TARGET_LDFLAGS="-march=$TARGET_CPU -m32"
|
||||||
|
|
||||||
|
# build with SIMD support ( yes / no )
|
||||||
|
SIMD_SUPPORT="yes"
|
||||||
|
@ -9,3 +9,6 @@
|
|||||||
# setup ARCH specific *FLAGS
|
# setup ARCH specific *FLAGS
|
||||||
TARGET_CFLAGS="-march=$TARGET_CPU -m64"
|
TARGET_CFLAGS="-march=$TARGET_CPU -m64"
|
||||||
TARGET_LDFLAGS="-march=$TARGET_CPU -m64"
|
TARGET_LDFLAGS="-march=$TARGET_CPU -m64"
|
||||||
|
|
||||||
|
# build with SIMD support ( yes / no )
|
||||||
|
SIMD_SUPPORT="yes"
|
||||||
|
@ -31,7 +31,10 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
DEBUG=$ATTR_DEBUG \
|
DEBUG=$ATTR_DEBUG \
|
||||||
|
OPTIMIZER=" " \
|
||||||
CONFIG_SHELL=/bin/bash \
|
CONFIG_SHELL=/bin/bash \
|
||||||
|
INSTALL_USER=root \
|
||||||
|
INSTALL_GROUP=root \
|
||||||
./configure --host=$TARGET_NAME \
|
./configure --host=$TARGET_NAME \
|
||||||
--build=$HOST_NAME \
|
--build=$HOST_NAME \
|
||||||
--prefix=/usr \
|
--prefix=/usr \
|
||||||
|
@ -33,3 +33,5 @@ PKG_SECTION="accessibility"
|
|||||||
PKG_SHORTDESC="attr: Extended Attributes Of Filesystem Objects"
|
PKG_SHORTDESC="attr: Extended Attributes Of Filesystem Objects"
|
||||||
PKG_LONGDESC="Extended attributes are name:value pairs associated permanently with files and directories, similar to the environment strings associated with a process. An attribute may be defined or undefined. If it is defined, its value may be empty or non-empty. Extended attributes are extensions to the normal attributes which are associated with all inodes in the system (i.e. the stat(2) data). They are often used to provide additional functionality to a filesystem - for example, additional security features such as Access Control Lists (ACLs) may be implemented using extended attributes."
|
PKG_LONGDESC="Extended attributes are name:value pairs associated permanently with files and directories, similar to the environment strings associated with a process. An attribute may be defined or undefined. If it is defined, its value may be empty or non-empty. Extended attributes are extensions to the normal attributes which are associated with all inodes in the system (i.e. the stat(2) data). They are often used to provide additional functionality to a filesystem - for example, additional security features such as Access Control Lists (ACLs) may be implemented using extended attributes."
|
||||||
PKG_IS_ADDON="no"
|
PKG_IS_ADDON="no"
|
||||||
|
|
||||||
|
PKG_AUTORECONF="no"
|
||||||
|
@ -39,7 +39,8 @@ mkdir -p .build-host && cd .build-host
|
|||||||
--localstatedir=/var \
|
--localstatedir=/var \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--with-jpeg8
|
--with-jpeg8 \
|
||||||
|
--without-simd
|
||||||
|
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
CFLAGS="$CFLAGS -fPIC -DPIC"
|
CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||||
|
|
||||||
|
if [ $SIMD_SUPPORT = "no" ]; then
|
||||||
|
LIBJPEG_SIMD="--without-simd"
|
||||||
|
fi
|
||||||
|
|
||||||
cd $PKG_BUILD
|
cd $PKG_BUILD
|
||||||
mkdir -p .build-target && cd .build-target
|
mkdir -p .build-target && cd .build-target
|
||||||
../configure --host=$TARGET_NAME \
|
../configure --host=$TARGET_NAME \
|
||||||
@ -33,7 +37,8 @@ mkdir -p .build-target && cd .build-target
|
|||||||
--localstatedir=/var \
|
--localstatedir=/var \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--with-jpeg8
|
--with-jpeg8 \
|
||||||
|
$LIBJPEG_SIMD
|
||||||
|
|
||||||
make
|
make
|
||||||
|
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
diff -Naur Python-2.7.3/configure Python-2.7.3.patch/configure
|
||||||
|
--- Python-2.7.3/configure 2012-04-10 01:07:36.000000000 +0200
|
||||||
|
+++ Python-2.7.3.patch/configure 2012-07-28 04:48:41.720322418 +0200
|
||||||
|
@@ -5425,11 +5425,11 @@
|
||||||
|
# debug builds.
|
||||||
|
OPT="-g -O0 -Wall $STRICT_PROTO"
|
||||||
|
else
|
||||||
|
- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
|
||||||
|
+ OPT="-g $WRAP $STRICT_PROTO"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
- OPT="-O3 -Wall $STRICT_PROTO"
|
||||||
|
+ OPT="$STRICT_PROTO"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case $ac_sys_system in
|
||||||
|
diff -Naur Python-2.7.3/configure.in Python-2.7.3.patch/configure.in
|
||||||
|
--- Python-2.7.3/configure.in 2012-04-10 01:07:36.000000000 +0200
|
||||||
|
+++ Python-2.7.3.patch/configure.in 2012-07-28 04:48:22.987067842 +0200
|
||||||
|
@@ -946,11 +946,11 @@
|
||||||
|
# debug builds.
|
||||||
|
OPT="-g -O0 -Wall $STRICT_PROTO"
|
||||||
|
else
|
||||||
|
- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
|
||||||
|
+ OPT="-g $WRAP $STRICT_PROTO"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
- OPT="-O3 -Wall $STRICT_PROTO"
|
||||||
|
+ OPT="$STRICT_PROTO"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case $ac_sys_system in
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="dvb-firmware"
|
PKG_NAME="dvb-firmware"
|
||||||
PKG_VERSION="0.0.26"
|
PKG_VERSION="3e13377"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="Free-to-use"
|
PKG_LICENSE="Free-to-use"
|
||||||
|
@ -0,0 +1,148 @@
|
|||||||
|
From f01f95af95f287847c850572abe16b6969967ba7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 19:01:17 +0300
|
||||||
|
Subject: [PATCH 1/3] fixed: crashes with corrupted rar files
|
||||||
|
|
||||||
|
UnrarXLib does not handle invalid files gracefully enough, and some
|
||||||
|
files can cause it to tell CRarFile that it has written more data into
|
||||||
|
its buffer than actually fits there, causing CRarFile::Read() to
|
||||||
|
eventually overread the buffer.
|
||||||
|
|
||||||
|
Add checks in CRarFile for the validity of byte counts retrieved from
|
||||||
|
UnrarXLib to prevent crashes in such situations.
|
||||||
|
(cherry picked from commit ca9457286994ef0b021744797b8d78fb78260436)
|
||||||
|
---
|
||||||
|
xbmc/filesystem/FileRar.cpp | 17 +++++++++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/filesystem/FileRar.cpp b/xbmc/filesystem/FileRar.cpp
|
||||||
|
index 9c87a35..d026f8f 100644
|
||||||
|
--- a/xbmc/filesystem/FileRar.cpp
|
||||||
|
+++ b/xbmc/filesystem/FileRar.cpp
|
||||||
|
@@ -310,6 +310,14 @@ unsigned int CFileRar::Read(void *lpBuf, int64_t uiBufSize)
|
||||||
|
|
||||||
|
m_iDataInBuffer = MAXWINMEMSIZE-m_pExtract->GetDataIO().UnpackToMemorySize;
|
||||||
|
|
||||||
|
+ if (m_iDataInBuffer < 0 ||
|
||||||
|
+ m_iDataInBuffer > MAXWINMEMSIZE - (m_szStartOfBuffer - m_szBuffer))
|
||||||
|
+ {
|
||||||
|
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||||
|
+ CLog::Log(LOGERROR, "CRarFile::Read - Data buffer in inconsistent state");
|
||||||
|
+ m_iDataInBuffer = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (m_iDataInBuffer == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
@@ -471,6 +479,15 @@ int64_t CFileRar::Seek(int64_t iFilePosition, int iWhence)
|
||||||
|
}
|
||||||
|
m_iDataInBuffer = m_pExtract->GetDataIO().m_iSeekTo; // keep data
|
||||||
|
m_iBufferStart = m_pExtract->GetDataIO().m_iStartOfBuffer;
|
||||||
|
+
|
||||||
|
+ if (m_iDataInBuffer < 0 || m_iDataInBuffer > MAXWINMEMSIZE)
|
||||||
|
+ {
|
||||||
|
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||||
|
+ CLog::Log(LOGERROR, "CRarFile::Seek - Data buffer in inconsistent state");
|
||||||
|
+ m_iDataInBuffer = 0;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
m_szStartOfBuffer = m_szBuffer+MAXWINMEMSIZE-m_iDataInBuffer;
|
||||||
|
m_iFilePosition = iFilePosition;
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
||||||
|
|
||||||
|
From de1be4534cf410896b3102f95b6e02019ed64a90 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 17:13:07 +0300
|
||||||
|
Subject: [PATCH 2/3] fixed: rars that have unpacked size stored on first
|
||||||
|
volume only
|
||||||
|
|
||||||
|
Some multi-volume RAR files have their unpacked size set as 0 in all
|
||||||
|
volumes except the first one.
|
||||||
|
|
||||||
|
Use the previous unpacked size instead of 0 in such cases in order to
|
||||||
|
support such files properly.
|
||||||
|
(cherry picked from commit 683457d27736c09415a11d80933553f75139a253)
|
||||||
|
---
|
||||||
|
lib/UnrarXLib/volume.cpp | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/UnrarXLib/volume.cpp b/lib/UnrarXLib/volume.cpp
|
||||||
|
index 1f4d5e3..b24e98b 100644
|
||||||
|
--- a/lib/UnrarXLib/volume.cpp
|
||||||
|
+++ b/lib/UnrarXLib/volume.cpp
|
||||||
|
@@ -15,6 +15,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||||
|
Log(Arc.FileName,St(MDataBadCRC),hd->FileName,Arc.FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ Int64 PrevFullUnpSize = hd->FullUnpSize;
|
||||||
|
Int64 PosBeforeClose=Arc.Tell();
|
||||||
|
Arc.Close();
|
||||||
|
|
||||||
|
@@ -144,6 +145,13 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ if (hd->FullUnpSize == 0)
|
||||||
|
+ {
|
||||||
|
+ // some archives only have correct UnpSize in the first volume
|
||||||
|
+ hd->FullUnpSize = PrevFullUnpSize;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (DataIO!=NULL)
|
||||||
|
{
|
||||||
|
if (HeaderType==ENDARC_HEAD)
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
||||||
|
|
||||||
|
From d7bed5ddbbc98d7fedac663410d8e7e64bdf20c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 00:14:49 +0300
|
||||||
|
Subject: [PATCH 3/3] fixed: CRarFile::Read() returning wrong data after some
|
||||||
|
seek patterns
|
||||||
|
|
||||||
|
Certain seek patterns on a file inside a non-compressed rar file can
|
||||||
|
cause CmdExtract::UnstoreFile() to think that the destination buffer has
|
||||||
|
been filled (as DestUnpSize counter, originally set to the file size,
|
||||||
|
reaches zero).
|
||||||
|
|
||||||
|
However, counting written bytes using DestUnpSize doesn't make sense for
|
||||||
|
the UnpackToMemory codepath used for non-compressed rar files, as there
|
||||||
|
can be seeks which can eventually cause more data to be read than what
|
||||||
|
the actual file size was. The actual output buffer is internally handled
|
||||||
|
by ComprDataIO.
|
||||||
|
|
||||||
|
The check in UnstoreFile() will result in not all data being written to
|
||||||
|
the destination buffer, causing CRarFile::Read() to return old stale
|
||||||
|
data.
|
||||||
|
|
||||||
|
Fix that by dropping the unnecessary DestUnpSize handling in
|
||||||
|
UnpackToMemory codepath of CmdExtract::UnstoreFile().
|
||||||
|
(cherry picked from commit 840cd4ce4ac8c781e7d35db2ed86d575a42c37e7)
|
||||||
|
---
|
||||||
|
lib/UnrarXLib/extract.cpp | 3 ---
|
||||||
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/UnrarXLib/extract.cpp b/lib/UnrarXLib/extract.cpp
|
||||||
|
index b4a8091..368a899 100644
|
||||||
|
--- a/lib/UnrarXLib/extract.cpp
|
||||||
|
+++ b/lib/UnrarXLib/extract.cpp
|
||||||
|
@@ -863,10 +863,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,Int64 DestUnpSize)
|
||||||
|
}
|
||||||
|
if (Code > 0)
|
||||||
|
{
|
||||||
|
- Code=Code<DestUnpSize ? Code:int64to32(DestUnpSize);
|
||||||
|
DataIO.UnpWrite(&Buffer[0],Code);
|
||||||
|
- if (DestUnpSize>=0)
|
||||||
|
- DestUnpSize-=Code;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -0,0 +1,148 @@
|
|||||||
|
From f01f95af95f287847c850572abe16b6969967ba7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 19:01:17 +0300
|
||||||
|
Subject: [PATCH 1/3] fixed: crashes with corrupted rar files
|
||||||
|
|
||||||
|
UnrarXLib does not handle invalid files gracefully enough, and some
|
||||||
|
files can cause it to tell CRarFile that it has written more data into
|
||||||
|
its buffer than actually fits there, causing CRarFile::Read() to
|
||||||
|
eventually overread the buffer.
|
||||||
|
|
||||||
|
Add checks in CRarFile for the validity of byte counts retrieved from
|
||||||
|
UnrarXLib to prevent crashes in such situations.
|
||||||
|
(cherry picked from commit ca9457286994ef0b021744797b8d78fb78260436)
|
||||||
|
---
|
||||||
|
xbmc/filesystem/FileRar.cpp | 17 +++++++++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/filesystem/FileRar.cpp b/xbmc/filesystem/FileRar.cpp
|
||||||
|
index 9c87a35..d026f8f 100644
|
||||||
|
--- a/xbmc/filesystem/FileRar.cpp
|
||||||
|
+++ b/xbmc/filesystem/FileRar.cpp
|
||||||
|
@@ -310,6 +310,14 @@ unsigned int CFileRar::Read(void *lpBuf, int64_t uiBufSize)
|
||||||
|
|
||||||
|
m_iDataInBuffer = MAXWINMEMSIZE-m_pExtract->GetDataIO().UnpackToMemorySize;
|
||||||
|
|
||||||
|
+ if (m_iDataInBuffer < 0 ||
|
||||||
|
+ m_iDataInBuffer > MAXWINMEMSIZE - (m_szStartOfBuffer - m_szBuffer))
|
||||||
|
+ {
|
||||||
|
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||||
|
+ CLog::Log(LOGERROR, "CRarFile::Read - Data buffer in inconsistent state");
|
||||||
|
+ m_iDataInBuffer = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (m_iDataInBuffer == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
@@ -471,6 +479,15 @@ int64_t CFileRar::Seek(int64_t iFilePosition, int iWhence)
|
||||||
|
}
|
||||||
|
m_iDataInBuffer = m_pExtract->GetDataIO().m_iSeekTo; // keep data
|
||||||
|
m_iBufferStart = m_pExtract->GetDataIO().m_iStartOfBuffer;
|
||||||
|
+
|
||||||
|
+ if (m_iDataInBuffer < 0 || m_iDataInBuffer > MAXWINMEMSIZE)
|
||||||
|
+ {
|
||||||
|
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||||
|
+ CLog::Log(LOGERROR, "CRarFile::Seek - Data buffer in inconsistent state");
|
||||||
|
+ m_iDataInBuffer = 0;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
m_szStartOfBuffer = m_szBuffer+MAXWINMEMSIZE-m_iDataInBuffer;
|
||||||
|
m_iFilePosition = iFilePosition;
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
||||||
|
|
||||||
|
From de1be4534cf410896b3102f95b6e02019ed64a90 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 17:13:07 +0300
|
||||||
|
Subject: [PATCH 2/3] fixed: rars that have unpacked size stored on first
|
||||||
|
volume only
|
||||||
|
|
||||||
|
Some multi-volume RAR files have their unpacked size set as 0 in all
|
||||||
|
volumes except the first one.
|
||||||
|
|
||||||
|
Use the previous unpacked size instead of 0 in such cases in order to
|
||||||
|
support such files properly.
|
||||||
|
(cherry picked from commit 683457d27736c09415a11d80933553f75139a253)
|
||||||
|
---
|
||||||
|
lib/UnrarXLib/volume.cpp | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/UnrarXLib/volume.cpp b/lib/UnrarXLib/volume.cpp
|
||||||
|
index 1f4d5e3..b24e98b 100644
|
||||||
|
--- a/lib/UnrarXLib/volume.cpp
|
||||||
|
+++ b/lib/UnrarXLib/volume.cpp
|
||||||
|
@@ -15,6 +15,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||||
|
Log(Arc.FileName,St(MDataBadCRC),hd->FileName,Arc.FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ Int64 PrevFullUnpSize = hd->FullUnpSize;
|
||||||
|
Int64 PosBeforeClose=Arc.Tell();
|
||||||
|
Arc.Close();
|
||||||
|
|
||||||
|
@@ -144,6 +145,13 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ if (hd->FullUnpSize == 0)
|
||||||
|
+ {
|
||||||
|
+ // some archives only have correct UnpSize in the first volume
|
||||||
|
+ hd->FullUnpSize = PrevFullUnpSize;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (DataIO!=NULL)
|
||||||
|
{
|
||||||
|
if (HeaderType==ENDARC_HEAD)
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
||||||
|
|
||||||
|
From d7bed5ddbbc98d7fedac663410d8e7e64bdf20c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anssi Hannula <anssi@xbmc.org>
|
||||||
|
Date: Wed, 16 May 2012 00:14:49 +0300
|
||||||
|
Subject: [PATCH 3/3] fixed: CRarFile::Read() returning wrong data after some
|
||||||
|
seek patterns
|
||||||
|
|
||||||
|
Certain seek patterns on a file inside a non-compressed rar file can
|
||||||
|
cause CmdExtract::UnstoreFile() to think that the destination buffer has
|
||||||
|
been filled (as DestUnpSize counter, originally set to the file size,
|
||||||
|
reaches zero).
|
||||||
|
|
||||||
|
However, counting written bytes using DestUnpSize doesn't make sense for
|
||||||
|
the UnpackToMemory codepath used for non-compressed rar files, as there
|
||||||
|
can be seeks which can eventually cause more data to be read than what
|
||||||
|
the actual file size was. The actual output buffer is internally handled
|
||||||
|
by ComprDataIO.
|
||||||
|
|
||||||
|
The check in UnstoreFile() will result in not all data being written to
|
||||||
|
the destination buffer, causing CRarFile::Read() to return old stale
|
||||||
|
data.
|
||||||
|
|
||||||
|
Fix that by dropping the unnecessary DestUnpSize handling in
|
||||||
|
UnpackToMemory codepath of CmdExtract::UnstoreFile().
|
||||||
|
(cherry picked from commit 840cd4ce4ac8c781e7d35db2ed86d575a42c37e7)
|
||||||
|
---
|
||||||
|
lib/UnrarXLib/extract.cpp | 3 ---
|
||||||
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/UnrarXLib/extract.cpp b/lib/UnrarXLib/extract.cpp
|
||||||
|
index b4a8091..368a899 100644
|
||||||
|
--- a/lib/UnrarXLib/extract.cpp
|
||||||
|
+++ b/lib/UnrarXLib/extract.cpp
|
||||||
|
@@ -863,10 +863,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,Int64 DestUnpSize)
|
||||||
|
}
|
||||||
|
if (Code > 0)
|
||||||
|
{
|
||||||
|
- Code=Code<DestUnpSize ? Code:int64to32(DestUnpSize);
|
||||||
|
DataIO.UnpWrite(&Buffer[0],Code);
|
||||||
|
- if (DestUnpSize>=0)
|
||||||
|
- DestUnpSize-=Code;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -23,8 +23,8 @@
|
|||||||
. config/options $1
|
. config/options $1
|
||||||
|
|
||||||
|
|
||||||
CFLAGS="-O2 $TARGET_FPU_FLAGS" # -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2"
|
#CFLAGS="$TARGET_FPU_FLAGS" # -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2"
|
||||||
LDFLAGS=""
|
#LDFLAGS=""
|
||||||
|
|
||||||
cd $PKG_BUILD
|
cd $PKG_BUILD
|
||||||
./configure --host=$TARGET_NAME \
|
./configure --host=$TARGET_NAME \
|
||||||
|
12
packages/tools/hdparm/patches/hdparm-9.39-cflags.patch
Normal file
12
packages/tools/hdparm/patches/hdparm-9.39-cflags.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -Naur hdparm-9.39/Makefile hdparm-9.39.patch/Makefile
|
||||||
|
--- hdparm-9.39/Makefile 2012-01-06 17:05:37.000000000 +0100
|
||||||
|
+++ hdparm-9.39.patch/Makefile 2012-07-28 05:22:53.271127964 +0200
|
||||||
|
@@ -13,7 +13,7 @@
|
||||||
|
CC ?= gcc
|
||||||
|
STRIP ?= strip
|
||||||
|
|
||||||
|
-CFLAGS := -O2 -W -Wall -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fkeep-inline-functions -Wwrite-strings -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)
|
||||||
|
+CFLAGS := -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fkeep-inline-functions -Wwrite-strings -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)
|
||||||
|
|
||||||
|
LDFLAGS = -s
|
||||||
|
#LDFLAGS = -s -static
|
43
tools/mkpkg/mkpkg_dvb-firmware
Executable file
43
tools/mkpkg/mkpkg_dvb-firmware
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
################################################################################
|
||||||
|
# This file is part of OpenELEC - http://www.openelec.tv
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
#
|
||||||
|
# This Program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This Program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
echo "getting sources..."
|
||||||
|
if [ ! -d dvb-firmware.git ]; then
|
||||||
|
git clone git://github.com/OpenELEC/dvb-firmware.git dvb-firmware.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd dvb-firmware.git
|
||||||
|
git pull
|
||||||
|
GIT_REV=`git log -n1 --format=%h`
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "copying sources..."
|
||||||
|
rm -rf dvb-firmware-$GIT_REV
|
||||||
|
cp -R dvb-firmware.git dvb-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "cleaning sources..."
|
||||||
|
rm -rf dvb-firmware-$GIT_REV/.git
|
||||||
|
|
||||||
|
echo "packing sources..."
|
||||||
|
tar cvJf dvb-firmware-$GIT_REV.tar.xz dvb-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "remove temporary sourcedir..."
|
||||||
|
rm -rf dvb-firmware-$GIT_REV
|
43
tools/mkpkg/mkpkg_misc-firmware
Executable file
43
tools/mkpkg/mkpkg_misc-firmware
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
################################################################################
|
||||||
|
# This file is part of OpenELEC - http://www.openelec.tv
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
#
|
||||||
|
# This Program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This Program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
echo "getting sources..."
|
||||||
|
if [ ! -d misc-firmware.git ]; then
|
||||||
|
git clone git://github.com/OpenELEC/misc-firmware.git misc-firmware.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd misc-firmware.git
|
||||||
|
git pull
|
||||||
|
GIT_REV=`git log -n1 --format=%h`
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "copying sources..."
|
||||||
|
rm -rf misc-firmware-$GIT_REV
|
||||||
|
cp -R misc-firmware.git misc-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "cleaning sources..."
|
||||||
|
rm -rf misc-firmware-$GIT_REV/.git
|
||||||
|
|
||||||
|
echo "packing sources..."
|
||||||
|
tar cvJf misc-firmware-$GIT_REV.tar.xz misc-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "remove temporary sourcedir..."
|
||||||
|
rm -rf misc-firmware-$GIT_REV
|
43
tools/mkpkg/mkpkg_wlan-firmware
Executable file
43
tools/mkpkg/mkpkg_wlan-firmware
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
################################################################################
|
||||||
|
# This file is part of OpenELEC - http://www.openelec.tv
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
#
|
||||||
|
# This Program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This Program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
echo "getting sources..."
|
||||||
|
if [ ! -d wlan-firmware.git ]; then
|
||||||
|
git clone git://github.com/OpenELEC/wlan-firmware.git wlan-firmware.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd wlan-firmware.git
|
||||||
|
git pull
|
||||||
|
GIT_REV=`git log -n1 --format=%h`
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "copying sources..."
|
||||||
|
rm -rf wlan-firmware-$GIT_REV
|
||||||
|
cp -R wlan-firmware.git wlan-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "cleaning sources..."
|
||||||
|
rm -rf wlan-firmware-$GIT_REV/.git
|
||||||
|
|
||||||
|
echo "packing sources..."
|
||||||
|
tar cvJf wlan-firmware-$GIT_REV.tar.xz wlan-firmware-$GIT_REV
|
||||||
|
|
||||||
|
echo "remove temporary sourcedir..."
|
||||||
|
rm -rf wlan-firmware-$GIT_REV
|
Loading…
x
Reference in New Issue
Block a user