Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-1.9.git;a=commitdiff;h=1ca3c8770611825a9e6a1dd582c49d2ca5f32034

commit 1ca3c8770611825a9e6a1dd582c49d2ca5f32034
Author: kikadf <[email protected]>
Date:   Thu Mar 13 08:48:35 2014 +0100

file-5.14-2arcturus2-x86_64

* Fix CVE-2014-2270

diff --git a/source/base/file/CVE-2014-2270.patch 
b/source/base/file/CVE-2014-2270.patch
new file mode 100644
index 0000000..4608168
--- /dev/null
+++ b/source/base/file/CVE-2014-2270.patch
@@ -0,0 +1,140 @@
+diff -Naur file-5.14/src/softmagic.c file-5.14.new/src/softmagic.c
+--- file-5.14/src/softmagic.c  2013-03-21 18:45:14.000000000 +0100
++++ file-5.14.new/src/softmagic.c      2014-03-13 08:36:26.116233536 +0100
+@@ -62,6 +62,7 @@
+ private void cvt_32(union VALUETYPE *, const struct magic *);
+ private void cvt_64(union VALUETYPE *, const struct magic *);
+
++#define OFFSET_OOB(n, o, i)   ((n) < (o) || (i) > ((n) - (o)))
+ /*
+  * softmagic - lookup one file in parsed, in-memory copy of database
+  * Passed the name and FILE * of one file to be typed.
+@@ -1191,7 +1192,7 @@
+               }
+               switch (cvt_flip(m->in_type, flip)) {
+               case FILE_BYTE:
+-                      if (nbytes < (offset + 1))
++                      if (OFFSET_OOB(nbytes, offset, 1))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1226,7 +1227,7 @@
+                               offset = ~offset;
+                       break;
+               case FILE_BESHORT:
+-                      if (nbytes < (offset + 2))
++                      if (OFFSET_OOB(nbytes, offset, 2))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1278,7 +1279,7 @@
+                               offset = ~offset;
+                       break;
+               case FILE_LESHORT:
+-                      if (nbytes < (offset + 2))
++                      if (OFFSET_OOB(nbytes, offset, 2))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1330,7 +1331,7 @@
+                               offset = ~offset;
+                       break;
+               case FILE_SHORT:
+-                      if (nbytes < (offset + 2))
++                      if (OFFSET_OOB(nbytes, offset, 2))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1367,7 +1368,7 @@
+                       break;
+               case FILE_BELONG:
+               case FILE_BEID3:
+-                      if (nbytes < (offset + 4))
++                      if (OFFSET_OOB(nbytes, offset, 4))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1438,7 +1439,7 @@
+                       break;
+               case FILE_LELONG:
+               case FILE_LEID3:
+-                      if (nbytes < (offset + 4))
++                      if (OFFSET_OOB(nbytes, offset, 4))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1508,7 +1509,7 @@
+                               offset = ~offset;
+                       break;
+               case FILE_MELONG:
+-                      if (nbytes < (offset + 4))
++                      if (OFFSET_OOB(nbytes, offset, 4))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1578,7 +1579,7 @@
+                               offset = ~offset;
+                       break;
+               case FILE_LONG:
+-                      if (nbytes < (offset + 4))
++                      if (OFFSET_OOB(nbytes, offset, 4))
+                               return 0;
+                       if (off) {
+                               switch (m->in_op & FILE_OPS_MASK) {
+@@ -1653,14 +1654,14 @@
+       /* Verify we have enough data to match magic type */
+       switch (m->type) {
+       case FILE_BYTE:
+-              if (nbytes < (offset + 1)) /* should alway be true */
++              if (OFFSET_OOB(nbytes, offset, 1))
+                       return 0;
+               break;
+
+       case FILE_SHORT:
+       case FILE_BESHORT:
+       case FILE_LESHORT:
+-              if (nbytes < (offset + 2))
++              if (OFFSET_OOB(nbytes, offset, 2))
+                       return 0;
+               break;
+
+@@ -1679,26 +1680,26 @@
+       case FILE_FLOAT:
+       case FILE_BEFLOAT:
+       case FILE_LEFLOAT:
+-              if (nbytes < (offset + 4))
++              if (OFFSET_OOB(nbytes, offset, 4))
+                       return 0;
+               break;
+
+       case FILE_DOUBLE:
+       case FILE_BEDOUBLE:
+       case FILE_LEDOUBLE:
+-              if (nbytes < (offset + 8))
++              if (OFFSET_OOB(nbytes, offset, 8))
+                       return 0;
+               break;
+
+       case FILE_STRING:
+       case FILE_PSTRING:
+       case FILE_SEARCH:
+-              if (nbytes < (offset + m->vallen))
++              if (OFFSET_OOB(nbytes, offset, m->vallen))
+                       return 0;
+               break;
+
+       case FILE_REGEX:
+-              if (nbytes < offset)
++              if (OFFSET_OOB(nbytes, offset, 0))
+                       return 0;
+               break;
+
+@@ -1727,7 +1728,7 @@
+               return rv;
+
+       case FILE_USE:
+-              if (nbytes < offset)
++              if (OFFSET_OOB(nbytes, offset, 0))
+                       return 0;
+               sbuf = m->value.s;
+               if (*sbuf == '^') {
diff --git a/source/base/file/FrugalBuild b/source/base/file/FrugalBuild
index 7a6b9e5..9bb8e6d 100644
--- a/source/base/file/FrugalBuild
+++ b/source/base/file/FrugalBuild
@@ -6,7 +6,7 @@ options+=('asneeded')

pkgname=file
pkgver=5.14
-pkgrel=2arcturus1
+pkgrel=2arcturus2
pkgdesc="File type identification utility"
url="http://www.darwinsys.com/file/";
depends=('glibc>=2.8-3' 'zlib>=1.2.3-6')
@@ -17,11 +17,11 @@ 
source=(ftp://ftp.astron.com/pub/file/$pkgname-$pkgver.tar.gz)
sha1sums=('064c8f17a5f7ae1e336a9285131e046d3b2d04d7')

# FSA fix ***
-source=(${source[@]} CVE-2014-1943.patch)
-sha1sums=(${sha1sums[@]} 'f8a3696fde7435dd431e4ac75cfc8629cb34725a')
+source=(${source[@]} CVE-2014-1943.patch CVE-2014-2270.patch)
+sha1sums=(${sha1sums[@]} 'f8a3696fde7435dd431e4ac75cfc8629cb34725a' \
+                         '6737050b7aff65c1dc1ff526be30e0d75a3cfaa6')
# ***********

-
build()
{
Fpatchall
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to