Date: Tue, 9 Jun 2015 22:27:14 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r46795 - in head/share: security/advisories security/patches/EN-15:06 security/patches/EN-15:07 xml Message-ID: <201506092227.t59MRE9M061030@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Tue Jun 9 22:27:13 2015 New Revision: 46795 URL: https://svnweb.freebsd.org/changeset/doc/46795 Log: Add two new erratas. Added: head/share/security/advisories/FreeBSD-EN-15:06.file.asc (contents, props changed) head/share/security/advisories/FreeBSD-EN-15:07.zfs.asc (contents, props changed) head/share/security/patches/EN-15:06/ head/share/security/patches/EN-15:06/file-10.1.patch (contents, props changed) head/share/security/patches/EN-15:06/file-10.1.patch.asc (contents, props changed) head/share/security/patches/EN-15:06/file-8.4.patch (contents, props changed) head/share/security/patches/EN-15:06/file-8.4.patch.asc (contents, props changed) head/share/security/patches/EN-15:06/file-9.3.patch (contents, props changed) head/share/security/patches/EN-15:06/file-9.3.patch.asc (contents, props changed) head/share/security/patches/EN-15:07/ head/share/security/patches/EN-15:07/zfs.patch (contents, props changed) head/share/security/patches/EN-15:07/zfs.patch.asc (contents, props changed) Modified: head/share/xml/notices.xml Added: head/share/security/advisories/FreeBSD-EN-15:06.file.asc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/advisories/FreeBSD-EN-15:06.file.asc Tue Jun 9 22:27:13 2015 (r46795) @@ -0,0 +1,175 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-15:06.file Errata Notice + The FreeBSD Project + +Topic: Version and security update of file(1) and libmagic(3) + +Category: contrib +Module: file +Announced: 2015-06-09 +Affects: All supported versions of FreeBSD. +Corrected: 2015-01-23 18:48:59 UTC (stable/10, 10.1-STABLE) + 2015-06-09 22:13:25 UTC (releng/10.1, 10.1-RELEASE-p11) + 2015-01-23 18:50:36 UTC (stable/9, 9.3-STABLE) + 2015-06-09 22:13:53 UTC (releng/9.3, 9.3-RELEASE-p15) + 2015-05-09 23:53:25 UTC (stable/8, 8.4-STABLE) + 2015-06-09 22:13:53 UTC (releng/8.4, 8.4-RELEASE-p29) +CVE Name: CVE-2014-0207, CVE-2014-3478, CVE-2014-3479, CVE-2014-3480, + CVE-2014-3487, CVE-2014-3538, CVE-2014-3587, CVE-2014-9620, + CVE-2014-9621, CVE-2014-9653 + +For general information regarding FreeBSD Errata Notices and Security +Advisories, including descriptions of the fields above, security +branches, and the following sections, please visit +<URL:https://security.freebsd.org/>. + +I. Background + +The file(1) utility attempts to classify file system objects based on +filesystem, magic number and language tests. + +The libmagic(3) library provides most of the functionality of file(1) +and may be used by other applications. + +II. Problem Description + +There are a number of denial of service issues when handling complex +files, for instance Portable Executable (PE) files and ELF files parsing +code with libmagic(3) and in turn file(1). + +III. Impact + +An attacker who can cause file(1) or any other applications using the +libmagic(3) library to be run on a maliciously constructed input can +cause the application to crash or consume excessive CPU resources, +resulting in a denial-of-service. + +IV. Workaround + +System administrators who run file(1) and libmagic(3) against untrusted +files, for instance when running with a mail server's mail scanner, are +advised to configure the scanner in a way so that they do not call file(1) +or libmagic(3) to conduct deep inspection of input files. Most of these +scanners does not really need the in-depth analysis and the file type +determined by libmagic is already sufficient. + +V. Solution + +This errata replaces the base system file(1) and libmagic(3) with the +version 5.22. + +Perform one of the following: + +1) Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. + +2) To update your present system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install + +3) To update your present system via a source code patch: + +The following patches have been verified to apply to the applicable +FreeBSD release branches. + +a) Download the relevant patch from the location below, and verify the +detached PGP signature using your PGP utility. + +[FreeBSD 10.1] +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-10.1.patch +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-10.1.patch.asc +# gpg --verify file-10.1.patch.asc + +[FreeBSD 9.3] +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-9.3.patch +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-9.3.patch.asc +# gpg --verify file-9.3.patch.asc + +[FreeBSD 8.4] +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-8.4.patch +# fetch https://security.FreeBSD.org/patches/EN-15:06/file-8.4.patch.asc +# gpg --verify file-8.4.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile the operating system using buildworld and installworld as +described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>. + +Restart all deamons using the library, or reboot the system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/8/ r283135 +releng/8.4/ r284194 +stable/9/ r277593 +releng/9.3/ r284194 +stable/10/ r277592 +releng/10.1/ r284193 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base + +Or visit the following URL, replacing NNNNNN with the revision number: + +<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN> + +VII. References + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0207> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3478> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3479> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3480> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3487> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3538> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3587> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9620> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9621> + +<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9653> + +The latest revision of this Errata Notice is available at +https://security.FreeBSD.org/advisories/FreeBSD-EN-15:06.file.asc +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.4 (FreeBSD) + +iQIcBAEBCgAGBQJVd2aEAAoJEO1n7NZdz2rnEVQP/2OPfepmvG2/vYrH3bKDHPRi +12QFfE3Ylr8ctoDQRCBazdxhzLEMxdP3g9icJ0ZbnDWVmFtM9BwDfCrkcYmI6uCt +0E1usrqHs6qthm4i1UAwRu4v71LM2yllHCaLt/XWxWDXsbI/vA5wkZgfgZK8kZWW +PAiBUuI1bM4pegi+yymgMRoHquoyB0x2jNBKywnb9KT7m8Br9uYnJrCajI6G9HUy +/eQKtefOVQat0trIoOwXS7cIZhLWJlVAKUinBjb2IGHxkWOrUhgXlPCpB4efS0pG +IqEv2gvHpxllgmf+4leqNXYT8R1EUu+3OE6SbN7jV+RwgPc0TNUxC4Bkb6r1LoSH +BRf5FMuVDYAlDKDz4j8NY0v84PpD9d37w7SSBZPiR+Fwn5xs0F4PjsU2c+tPEnVD +Sn1vYkafvC+KXsuJtmd4sqb1zLRdpOGDxruA0VtOKATA1sDa1QZIBTB7w7iZ03f5 +umCpU8p5mo7a9AroavUEZkcpu4w5BptAsgYoBdOeKHhStBtPlXiGpML8zLhj1qnL +hGF6RY2QrhD35C7OIer1ji0F2pEKkFfaeAqkvIXmYJaH+KQeIrEdt+ki2GStW1m9 +OdL79RMreVGE1DuX/2puBxKcMsQR+fas4L4uGi46MDXXMeV0LKJHiAT2twJlDOL/ +mc3UcOeMcAfOkINcpGuD +=8/lF +-----END PGP SIGNATURE----- Added: head/share/security/advisories/FreeBSD-EN-15:07.zfs.asc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/advisories/FreeBSD-EN-15:07.zfs.asc Tue Jun 9 22:27:13 2015 (r46795) @@ -0,0 +1,139 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-15:07.zfs Errata Notice + The FreeBSD Project + +Topic: ZFS Reliability Improvements + +Category: contrib +Module: zfs +Announced: 2015-06-09 +Affects: FreeBSD 10.1 and later +Corrected: 2014-12-05 00:32:33 UTC (stable/10, 10.1-STABLE) + 2015-06-09 22:13:25 UTC (releng/10.1, 10.1-RELEASE-p11) + +For general information regarding FreeBSD Errata Notices and Security +Advisories, including descriptions of the fields above, security +branches, and the following sections, please visit +<URL:https://security.freebsd.org/>. + +I. Background + +ZFS is one of several filesystems available on FreeBSD. + +ZFS on FreeBSD supports TRIM/UNMAP which helps flash based storage medium to +maintain peek performance. + +ZFS uses different layers of disk cache to speed up read and write +operations, and supports second level ARC (L2ARC) which can be used as a +second layer cache, which provides storage for less frequently accessed +data that would not fit into RAM but still accessed often, providing +optimal cost for performance. + +ZFS supports compression in L2ARC data which optimizes its space efficiency. + +II. Problem Description + +When the ZFS filesystem on a file backed pool is used with TRIM support +enabled, which is the default, ZIO_TYPE_FREE requests where incorrectly +processed as a write request. + +When the ZFS filesystem is using L2ARC and when L2ARC compression is used, +the compression buffer are not properly released sometimes. + +III. Impact + +The first problem will panic the system when it happens. + +The second problem will exhibit as a memory leak, which would lead to +performance degradation and eventually a memory overflow, which would +lead to a panic. + +IV. Workaround + +The first issue can be mitigated by disabling TRIM for ZFS using +the loader option vfs.zfs.trim.enabled=0. + +The second issue can be mitigated by disabling L2ARC. + +V. Solution + +Perform one of the following: + +1) Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. + +2) To update your present system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install + +3) To update your present system via a source code patch: + +The following patches have been verified to apply to the applicable +FreeBSD release branches. + +a) Download the relevant patch from the location below, and verify the +detached PGP signature using your PGP utility. + +# fetch https://security.FreeBSD.org/patches/EN-15:07/zfs.patch +# fetch https://security.FreeBSD.org/patches/EN-15:07/zfs.patch.asc +# gpg --verify 15:07.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile your kernel as described in +<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the +system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/10/ r275492 +releng/10.1/ r284193 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base + +Or visit the following URL, replacing NNNNNN with the revision number: + +<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN> + +VII. References + +The latest revision of this Errata Notice is available at +https://security.FreeBSD.org/advisories/FreeBSD-EN-15:07.zfs.asc + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.1.4 (FreeBSD) + +iQIcBAEBCgAGBQJVd2aYAAoJEO1n7NZdz2rn3ZAP/jqu2sz0LU20D1zdb3bpz8ui +QsFeKs2gk5e00T0qqWio9RxXpSxzV1XNEw8jVz2JDsgCQf4V6UwHklgf9E+Pg9DA +/9HNnrCuNsnlodOOqCPEETPkEWCKiPoiHXv29YzNVZDtlTXE9ysxnQgpD6IfI1AU +HpyH//OKN+z03eNR/vSdCbvZhemn/+An4AxX8nFegeGXBjxUBE1Hf6Aek2AYKz2Q +69nwvK56AN05FvVN+oegFdLaG9Lcv5kPnNFLoMDMGazGd/3VBfYE7ACQT2AETc/7 +DuVCrP3ewG3uftNKBEomJkPWTeKLBGZLP3pHZK1BlGlXUlHvpEbEzy0BjJevt4Zt +6MxHT2xya8H5q8k6nfVnRB2+XhJ82nJMnZIN0cLiqdAgbRdFCS5QlOwLpXpak0tA +EOTcjsFBTCXQiuO6JLAHn0oprBrA6mMoHxHZGErG6yFGf4PNotG70s8hOH9hxvoG +bjdtvcbCewPqaUz54vwkp1walgK7i61waDTWNMeLdt9OPncdBO/1N5+jNAV87bLm +iqxqp6bcHFIoVaHLhE5xxRrmiJg4J/8z2PUjuyfxnWyslMkm4s7siiQ3HIacFdE6 +7GeTDnU28Ui0JTbGx8c6QGRKhOEp0FdvmHmXXHtKBvo/yjdMy2yMg82RHMNxIQKd +z4HmBIQGnSf4ysgAunpN +=fmGr +-----END PGP SIGNATURE----- Added: head/share/security/patches/EN-15:06/file-10.1.patch ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/patches/EN-15:06/file-10.1.patch Tue Jun 9 22:27:13 2015 (r46795) @@ -0,0 +1,6603 @@ +Index: contrib/file/ChangeLog +=================================================================== +--- contrib/file/ChangeLog (revision 284174) ++++ contrib/file/ChangeLog (working copy) +@@ -1,3 +1,97 @@ ++2015-01-02 15:15 Christos Zoulas <christos@zoulas.com> ++ ++ * release 5.22 ++ ++2015-01-01 12:01 Christos Zoulas <christos@zoulas.com> ++ ++ * add indirect relative for TIFF/Exif ++ ++2014-12-16 18:10 Christos Zoulas <christos@zoulas.com> ++ ++ * restructure elf note printing to avoid repeated messages ++ * add note limit, suggested by Alexander Cherepanov ++ ++2014-12-16 16:53 Christos Zoulas <christos@zoulas.com> ++ ++ * Bail out on partial pread()'s (Alexander Cherepanov) ++ * Fix incorrect bounds check in file_printable (Alexander Cherepanov) ++ ++2014-12-11 20:01 Christos Zoulas <christos@zoulas.com> ++ ++ * PR/405: ignore SIGPIPE from uncompress programs ++ * change printable -> file_printable and use it in ++ more places for safety ++ * in ELF, instead of "(uses dynamic libraries)" when PT_INTERP ++ is present print the interpreter name. ++ ++2014-12-10 20:01 Christos Zoulas <christos@zoulas.com> ++ ++ * release 5.21 ++ ++2014-11-27 18:40 Christos Zoulas <christos@zoulas.com> ++ ++ * Allow setting more parameters from the command line. ++ * Split name/use and indirect magic recursion limits. ++ ++2014-11-27 11:12 Christos Zoulas <christos@zoulas.com> ++ ++ * Adjust ELF parameters and the default recursion ++ level. ++ * Allow setting the recursion level dynamically. ++ ++2014-11-24 8:55 Christos Zoulas <christos@zoulas.com> ++ ++ * The following fixes resulted from Thomas Jarosch's fuzzing ++ tests that revealed severe performance issues on pathological ++ input: ++ - limit number of elf program and sections processing ++ - abort elf note processing quickly ++ - reduce the number of recursion levels from 20 to 10 ++ - preserve error messages in indirect magic handling ++ ++ This is tracked as CVE-2014-8116 and CVE-2014-8117 ++ ++2014-11-12 10:30 Christos Zoulas <christos@zoulas.com> ++ ++ * fix bogus free in the user buffer case. ++ ++2014-11-11 12:35 Christos Zoulas <christos@zoulas.com> ++ ++ * fix out of bounds read for pascal strings ++ * fix memory leak (not freeing the head of each mlist) ++ ++2014-11-07 10:25 Christos Zoulas <christos@zoulas.com> ++ ++ * When printing strings from a file, convert them to printable ++ on a byte by byte basis, so that we don't get issues with ++ locale's trying to interpret random byte streams as UTF-8 and ++ having printf error out with EILSEQ. ++ ++2014-10-17 11:48 Christos Zoulas <christos@zoulas.com> ++ ++ * fix bounds in note reading (Francisco Alonso / Red Hat) ++ ++2014-10-11 15:02 Christos Zoulas <christos@zoulas.com> ++ ++ * fix autoconf glue for setlocale and locale_t; some OS's ++ have locale_t in xlocale.h ++ ++2014-10-10 15:01 Christos Zoulas <christos@zoulas.com> ++ ++ * release 5.20 ++ ++2014-08-17 10:01 Christos Zoulas <christos@zoulas.com> ++ ++ * recognize encrypted CDF documents ++ ++2014-08-04 9:18 Christos Zoulas <christos@zoulas.com> ++ ++ * add magic_load_buffers from Brooks Davis ++ ++2014-07-24 16:40 Christos Zoulas <christos@zoulas.com> ++ ++ * add thumbs.db support ++ + 2014-06-12 12:28 Christos Zoulas <christos@zoulas.com> + + * release 5.19 +Index: contrib/file/README +=================================================================== +--- contrib/file/README (revision 284174) ++++ contrib/file/README (working copy) +@@ -1,6 +1,6 @@ + ## README for file(1) Command ## + +- @(#) $File: README,v 1.48 2014/03/07 13:55:30 christos Exp $ ++ @(#) $File: README,v 1.49 2015/01/02 20:23:04 christos Exp $ + + Mailing List: file@mx.gw.com + Mailing List archives: http://mx.gw.com/pipermail/file/ +@@ -25,8 +25,8 @@ A public read-only git repository of the same sour + + https://github.com/file/file + +-The major changes for 5.x are CDF file parsing, indirect magic, and +-overhaul in mime and ascii encoding handling. ++The major changes for 5.x are CDF file parsing, indirect magic, name/use ++(recursion) and overhaul in mime and ascii encoding handling. + + The major feature of 4.x is the refactoring of the code into a library, + and the re-write of the file command in terms of that library. The library +@@ -67,33 +67,41 @@ in magic(5) format please, to the maintainer, Chri + COPYING - read this first. + README - read this second (you are currently reading this file). + INSTALL - read on how to install +- + src/apprentice.c - parses /etc/magic to learn magic ++src/asctime_r.c - replacement for OS's that don't have it. + src/apptype.c - used for OS/2 specific application type magic + src/asprintf.c - replacement for OS's that don't have it. + src/ascmagic.c - third & last set of tests, based on hardwired assumptions. +-src/asctime_r.c - for systems that don't have it. +-src/asprintf.c - for systems that don't have it. +-src/cdf.c - parser for Microsoft Compound Document Files ++src/asctime_r.c - replacement for OS's that don't have it. ++src/asprintf.c - replacement for OS's that don't have it. ++src/cdf.[ch] - parser for Microsoft Compound Document Files + src/cdf_time.c - time converter for CDF. + src/compress.c - handles decompressing files to look inside. +-src/ctime_r.c - for systems that don't have it. ++src/ctime_r.c - replacement for OS's that don't have it. ++src/elfclass.h - common code for elf 32/64. + src/encoding.c - handles unicode encodings + src/file.c - the main program + src/file.h - header file ++src/file_opts.h - list of options ++src/fmtcheck.c - replacement for OS's that don't have it. + src/fsmagic.c - first set of tests the program runs, based on filesystem info + src/funcs.c - utilility functions +-src/getopt_long.c - for systems that don't have it. +-src/getline.c - for systems that don't have it. ++src/getline.c - replacement for OS's that don't have it. ++src/getopt_long.c - replacement for OS's that don't have it. + src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore). + src/names.h - header file for ascmagic.c ++src/magic.h.in - source file for magic.h + src/magic.c - the libmagic api ++src/pread.c - replacement for OS's that don't have it. + src/print.c - print results, errors, warnings. + src/readcdf.c - CDF wrapper. + src/readelf.[ch] - Stand-alone elf parsing code. + src/softmagic.c - 2nd set of tests, based on /etc/magic +-src/strlcat.c - for systems that don't have it. +-src/strlcpy.c - for systems that don't have it. ++src/mygetopt.h - replacement for OS's that don't have it. ++src/strcasestr.c - replacement for OS's that don't have it. ++src/strlcat.c - replacement for OS's that don't have it. ++src/strlcpy.c - replacement for OS's that don't have it. ++src/tar.h - tar file definitions + src/vasprintf.c - for systems that don't have it. + doc/file.man - man page for the command + doc/magic.man - man page for the magic file, courtesy Guy Harris. +Index: contrib/file/TODO +=================================================================== +--- contrib/file/TODO (revision 284174) ++++ contrib/file/TODO (working copy) +@@ -15,3 +15,5 @@ small amount of C is needed (because fast executio + required for soft magic, not the more detailed information given by + hard-wired routines). In this regard, note that hplip, which is + BSD-licensed, has a magic reimplementation in Python. ++ ++Read the kerberos magic entry for more ideas. +Index: contrib/file/config.h.in +=================================================================== +--- contrib/file/config.h.in (revision 284174) ++++ contrib/file/config.h.in (working copy) +@@ -44,6 +44,9 @@ + /* Define to 1 if you have the `fork' function. */ + #undef HAVE_FORK + ++/* Define to 1 if you have the `freelocale' function. */ ++#undef HAVE_FREELOCALE ++ + /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ + #undef HAVE_FSEEKO + +@@ -95,9 +98,15 @@ + /* Define to 1 if you have a working `mmap' system call. */ + #undef HAVE_MMAP + ++/* Define to 1 if you have the `newlocale' function. */ ++#undef HAVE_NEWLOCALE ++ + /* Define to 1 if you have the `pread' function. */ + #undef HAVE_PREAD + ++/* Define to 1 if you have the `setlocale' function. */ ++#undef HAVE_SETLOCALE ++ + /* Define to 1 if you have the <stddef.h> header file. */ + #undef HAVE_STDDEF_H + +@@ -182,6 +191,9 @@ + /* Define to 1 if you have the <unistd.h> header file. */ + #undef HAVE_UNISTD_H + ++/* Define to 1 if you have the `uselocale' function. */ ++#undef HAVE_USELOCALE ++ + /* Define to 1 if you have the `utime' function. */ + #undef HAVE_UTIME + +@@ -219,6 +231,9 @@ + /* Define to 1 if `vfork' works. */ + #undef HAVE_WORKING_VFORK + ++/* Define to 1 if you have the <xlocale.h> header file. */ ++#undef HAVE_XLOCALE_H ++ + /* Define to 1 if you have the <zlib.h> header file. */ + #undef HAVE_ZLIB_H + +Index: contrib/file/configure +=================================================================== +--- contrib/file/configure (revision 284174) ++++ contrib/file/configure (working copy) +@@ -1,6 +1,6 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.69 for file 5.19. ++# Generated by GNU Autoconf 2.69 for file 5.22. + # + # Report bugs to <christos@astron.com>. + # +@@ -590,8 +590,8 @@ MAKEFLAGS= + # Identity of this package. + PACKAGE_NAME='file' + PACKAGE_TARNAME='file' +-PACKAGE_VERSION='5.19' +-PACKAGE_STRING='file 5.19' ++PACKAGE_VERSION='5.22' ++PACKAGE_STRING='file 5.22' + PACKAGE_BUGREPORT='christos@astron.com' + PACKAGE_URL='' + +@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +-\`configure' configures file 5.19 to adapt to many kinds of systems. ++\`configure' configures file 5.22 to adapt to many kinds of systems. + + Usage: $0 [OPTION]... [VAR=VALUE]... + +@@ -1397,7 +1397,7 @@ fi + + if test -n "$ac_init_help"; then + case $ac_init_help in +- short | recursive ) echo "Configuration of file 5.19:";; ++ short | recursive ) echo "Configuration of file 5.22:";; + esac + cat <<\_ACEOF + +@@ -1507,7 +1507,7 @@ fi + test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF +-file configure 5.19 ++file configure 5.22 + generated by GNU Autoconf 2.69 + + Copyright (C) 2012 Free Software Foundation, Inc. +@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + +-It was created by file $as_me 5.19, which was ++It was created by file $as_me 5.22, which was + generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ +@@ -3029,7 +3029,7 @@ fi + + # Define the identity of the package. + PACKAGE='file' +- VERSION='5.19' ++ VERSION='5.22' + + + cat >>confdefs.h <<_ACEOF +@@ -12785,7 +12785,7 @@ fi + + done + +-for ac_header in getopt.h err.h ++for ac_header in getopt.h err.h xlocale.h + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +@@ -14191,7 +14191,7 @@ fi + fi + + +-for ac_func in strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof ++for ac_func in strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale setlocale + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +@@ -14998,7 +14998,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + # report actual input values of CONFIG_FILES etc. instead of their + # values after options handling. + ac_log=" +-This file was extended by file $as_me 5.19, which was ++This file was extended by file $as_me 5.22, which was + generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES +@@ -15064,7 +15064,7 @@ _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" + ac_cs_version="\\ +-file config.status 5.19 ++file config.status 5.22 + configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Index: contrib/file/configure.ac +=================================================================== +--- contrib/file/configure.ac (revision 284174) ++++ contrib/file/configure.ac (working copy) +@@ -1,5 +1,5 @@ + dnl Process this file with autoconf to produce a configure script. +-AC_INIT([file],[5.19],[christos@astron.com]) ++AC_INIT([file],[5.22],[christos@astron.com]) + AM_INIT_AUTOMAKE([subdir-objects foreign]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +@@ -82,7 +82,7 @@ AC_HEADER_MAJOR + AC_HEADER_SYS_WAIT + AC_CHECK_HEADERS(stdint.h fcntl.h locale.h stdint.h inttypes.h unistd.h) + AC_CHECK_HEADERS(stddef.h utime.h wchar.h wctype.h limits.h) +-AC_CHECK_HEADERS(getopt.h err.h) ++AC_CHECK_HEADERS(getopt.h err.h xlocale.h) + AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h) + AC_CHECK_HEADERS(zlib.h) + +@@ -138,7 +138,7 @@ else + fi]) + + dnl Checks for functions +-AC_CHECK_FUNCS(strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof) ++AC_CHECK_FUNCS(strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale setlocale) + + dnl Provide implementation of some required functions if necessary + AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r pread strcasestr fmtcheck) +Index: contrib/file/doc/file.man +=================================================================== +--- contrib/file/doc/file.man (revision 284174) ++++ contrib/file/doc/file.man (working copy) +@@ -1,5 +1,5 @@ +-.\" $File: file.man,v 1.106 2014/03/07 23:11:51 christos Exp $ +-.Dd January 30, 2014 ++.\" $File: file.man,v 1.111 2014/12/16 23:18:40 christos Exp $ ++.Dd December 16, 2014 + .Dt FILE __CSECTION__ + .Os + .Sh NAME +@@ -16,6 +16,7 @@ + .Op Fl F Ar separator + .Op Fl f Ar namefile + .Op Fl m Ar magicfiles ++.Op Fl P Ar name=value + .Ar + .Ek + .Nm +@@ -303,6 +304,16 @@ or + attempt to preserve the access time of files analyzed, to pretend that + .Nm + never read them. ++.It Fl P , Fl Fl parameter Ar name=value ++Set various parameter limits. ++.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -offset indent ++.It Sy "Name" Ta Sy "Default" Ta Sy "Explanation" ++.It Li indir Ta 15 Ta recursion limit for indirect magic ++.It Li name Ta 30 Ta use count limit for name/use magic ++.It Li elf_notes Ta 256 Ta max ELF notes processed ++.It Li elf_phnum Ta 128 Ta max ELF program sections processed ++.It Li elf_shnum Ta 32768 Ta max ELF sections processed ++.El + .It Fl r , Fl Fl raw + Don't translate unprintable characters to \eooo. + Normally +@@ -385,6 +396,7 @@ options. + .Xr hexdump 1 , + .Xr od 1 , + .Xr strings 1 , ++.Xr fstyp 8 + .Sh STANDARDS CONFORMANCE + This program is believed to exceed the System V Interface Definition + of FILE(CMD), as near as one can determine from the vague language +Index: contrib/file/doc/libmagic.man +=================================================================== +--- contrib/file/doc/libmagic.man (revision 284174) ++++ contrib/file/doc/libmagic.man (working copy) +@@ -1,4 +1,4 @@ +-.\" $File: libmagic.man,v 1.28 2014/03/02 14:47:16 christos Exp $ ++.\" $File: libmagic.man,v 1.34 2014/12/16 23:18:40 christos Exp $ + .\" + .\" Copyright (c) Christos Zoulas 2003. + .\" All Rights Reserved. +@@ -25,7 +25,7 @@ + .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + .\" SUCH DAMAGE. + .\" +-.Dd January 6, 2012 ++.Dd December 16, 2014 + .Dt LIBMAGIC 3 + .Os + .Sh NAME +@@ -40,6 +40,9 @@ + .Nm magic_compile , + .Nm magic_list , + .Nm magic_load , ++.Nm magic_load_buffers , ++.Nm magic_setparam , ++.Nm magic_getparam , + .Nm magic_version + .Nd Magic number recognition library + .Sh LIBRARY +@@ -71,6 +74,12 @@ + .Ft int + .Fn magic_load "magic_t cookie" "const char *filename" + .Ft int ++.Fn magic_load_buffers "magic_t cookie" "void **buffers" "size_t *sizes" "size_t nbuffers" ++.Ft int ++.Fn magic_getparam "magic_t cookie" "int param" "void *value" ++.Ft int ++.Fn magic_setparam "magic_t cookie" "int param" "const void *value" ++.Ft int + .Fn magic_version "void" + .Sh DESCRIPTION + These functions +@@ -253,6 +262,60 @@ adds + to the database filename as appropriate. + .Pp + The ++.Fn magic_load_buffers ++function takes an array of size ++.Fa nbuffers ++of ++.Fa buffers ++with a respective size for each in the array of ++.Fa sizes ++loaded with the contents of the magic databases from the filesystem. ++This function can be used in environment where the magic library does ++not have direct access to the filesystem, but can access the magic ++database via shared memory or other IPC means. ++.Pp ++The ++.Fn magic_getparam ++and ++.Fn magic_setparam ++allow getting and setting various limits related to the the magic ++library. ++.Bl -column "MAGIC_PARAM_ELF_PHNUM_MAX" "size_t" "Default" -offset indent ++.It Sy "Parameter" Ta Sy "Type" Ta Sy "Default" ++.It Li MAGIC_PARAM_INDIR_MAX Ta size_t Ta 15 ++.It Li MAGIC_PARAM_NAME_MAX Ta size_t Ta 30 ++.It Li MAGIC_PARAM_ELF_NOTES_MAX Ta size_t Ta 256 ++.It Li MAGIC_PARAM_ELF_PHNUM_MAX Ta size_t Ta 128 ++.It Li MAGIC_PARAM_ELF_SHNUM_MAX Ta size_t Ta 32768 ++.El ++.Pp ++The ++.Dv MAGIC_PARAM_INDIR_RECURSION ++parameter controls how many levels of recursion will be followed for ++indirect magic entries. ++.Pp ++The ++.Dv MAGIC_PARAM_NAME_RECURSION ++parameter controls how many levels of recursion will be followed for ++for name/use calls. ++.Pp ++The ++.Dv MAGIC_PARAM_NAME_MAX ++parameter controls the maximum number of calls for name/use. ++.Pp ++The ++.Dv MAGIC_PARAM_NOTES_MAX ++parameter controls how many ELF notes will be processed. ++.Pp ++The ++.Dv MAGIC_PARAM_PHNUM_MAX ++parameter controls how many ELF program sections will be processed. ++.Pp ++The ++.Dv MAGIC_PARAM_SHNUM_MAX ++parameter controls how many ELF sections will be processed. ++.Pp ++The + .Fn magic_version + command returns the version number of this library which is compiled into + the shared library using the constant +Index: contrib/file/doc/magic.man +=================================================================== +--- contrib/file/doc/magic.man (revision 284174) ++++ contrib/file/doc/magic.man (working copy) +@@ -1,5 +1,5 @@ +-.\" $File: magic.man,v 1.84 2014/06/03 19:01:34 christos Exp $ +-.Dd June 3, 2014 ++.\" $File: magic.man,v 1.85 2015/01/01 17:07:34 christos Exp $ ++.Dd January 1, 2015 + .Dt MAGIC __FSECTION__ + .Os + .\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems. +@@ -200,6 +200,11 @@ interpreted as a UNIX-style date, but interpreted + than UTC. + .It Dv indirect + Starting at the given offset, consult the magic database again. ++The offset of th ++.Dv indirect ++magic is by default absolute in the file, but one can specify ++.Dv /r ++to indicate that the offset is relative from the beginning of the entry. + .It Dv name + Define a + .Dq named +Index: contrib/file/magic/Magdir/android +=================================================================== +--- contrib/file/magic/Magdir/android (revision 284174) ++++ contrib/file/magic/Magdir/android (working copy) +@@ -1,6 +1,6 @@ + + #------------------------------------------------------------ +-# $File: android,v 1.4 2014/06/03 19:01:34 christos Exp $ ++# $File: android,v 1.7 2014/11/10 05:08:23 christos Exp $ + # Various android related magic entries + #------------------------------------------------------------ + +@@ -15,20 +15,11 @@ + >0 regex dey\n[0-9]{2}\0 Dalvik dex file (optimized for host) + >4 string >000 version %s + +-# http://android.stackexchange.com/questions/23357/\ +-# is-there-a-way-to-look-inside-and-modify-an-adb-backup-created-file/\ +-# 23608#23608 +-0 string ANDROID\040BACKUP\n Android Backup +->15 string 1\n \b, version 1 +->17 string 0\n \b, uncompressed +->17 string 1\n \b, compressed +->19 string none\n \b, unencrypted +->19 string AES-256\n \b, encrypted AES-256 +- + # Android bootimg format + # From https://android.googlesource.com/\ + # platform/system/core/+/master/mkbootimg/bootimg.h + 0 string ANDROID! Android bootimg ++>1024 string LOKI\01 \b, LOKI'd + >8 lelong >0 \b, kernel + >>12 lelong >0 \b (0x%x) + >16 lelong >0 \b, ramdisk +@@ -38,41 +29,7 @@ + >36 lelong >0 \b, page size: %d + >38 string >0 \b, name: %s + >64 string >0 \b, cmdline (%s) +-# Dalvik .dex format. http://retrodev.com/android/dexformat.html +-# From <mkf@google.com> "Mike Fleming" +-# Fixed to avoid regexec 17 errors on some dex files +-# From <diff@lookout.com> "Tim Strazzere" +-0 string dex\n +->0 regex dex\n[0-9]{2}\0 Dalvik dex file +->4 string >000 version %s +-0 string dey\n +->0 regex dey\n[0-9]{2}\0 Dalvik dex file (optimized for host) +->4 string >000 version %s + +-# http://android.stackexchange.com/questions/23357/\ +-# is-there-a-way-to-look-inside-and-modify-an-adb-backup-created-file/\ +-# 23608#23608 +-0 string ANDROID\040BACKUP\n Android Backup +->15 string 1\n \b, version 1 +->17 string 0\n \b, uncompressed +->17 string 1\n \b, compressed +->19 string none\n \b, unencrypted +->19 string AES-256\n \b, encrypted AES-256 +- +-# Android bootimg format +-# From https://android.googlesource.com/\ +-# platform/system/core/+/master/mkbootimg/bootimg.h +-0 string ANDROID! Android bootimg +->8 lelong >0 \b, kernel +->>12 lelong >0 \b (0x%x) +->16 lelong >0 \b, ramdisk +->>20 lelong >0 \b (0x%x) +->24 lelong >0 \b, second stage +->>28 lelong >0 \b (0x%x) +->36 lelong >0 \b, page size: %d +->38 string >0 \b, name: %s +->64 string >0 \b, cmdline (%s) +- + # Android Backup archive + # From: Ariel Shkedi + # File extension: .ab +@@ -98,3 +55,85 @@ + #>>>>>&1 regex/1l .* \b, PBKDF2 rounds: %s + #>>>>>>&1 regex/1l .* \b, IV: %s + #>>>>>>>&1 regex/1l .* \b, Key: %s ++ ++# *.pit files by Joerg Jenderek ++# http://forum.xda-developers.com/showthread.php?p=9122369 ++# http://forum.xda-developers.com/showthread.php?t=816449 ++# Partition Information Table for Samsung's smartphone with Android ++# used by flash software Odin ++0 ulelong 0x12349876 ++# 1st pit entry marker ++>0x01C ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000 ++# minimal 13 and maximal 18 PIT entries found ++>>4 ulelong <128 Partition Information Table for Samsung smartphone ++>>>4 ulelong x \b, %d entries ++# 1. pit entry ++>>>4 ulelong >0 \b; #1 ++>>>0x01C use PIT-entry ++>>>4 ulelong >1 \b; #2 ++>>>0x0A0 use PIT-entry ++>>>4 ulelong >2 \b; #3 ++>>>0x124 use PIT-entry ++>>>4 ulelong >3 \b; #4 ++>>>0x1A8 use PIT-entry ++>>>4 ulelong >4 \b; #5 ++>>>0x22C use PIT-entry ++>>>4 ulelong >5 \b; #6 ++>>>0x2B0 use PIT-entry ++>>>4 ulelong >6 \b; #7 ++>>>0x334 use PIT-entry ++>>>4 ulelong >7 \b; #8 ++>>>0x3B8 use PIT-entry ++>>>4 ulelong >8 \b; #9 ++>>>0x43C use PIT-entry ++>>>4 ulelong >9 \b; #10 ++>>>0x4C0 use PIT-entry ++>>>4 ulelong >10 \b; #11 ++>>>0x544 use PIT-entry ++>>>4 ulelong >11 \b; #12 ++>>>0x5C8 use PIT-entry ++>>>4 ulelong >12 \b; #13 ++>>>>0x64C use PIT-entry ++# 14. pit entry ++>>>4 ulelong >13 \b; #14 ++>>>>0x6D0 use PIT-entry ++>>>4 ulelong >14 \b; #15 ++>>>0x754 use PIT-entry ++>>>4 ulelong >15 \b; #16 ++>>>0x7D8 use PIT-entry ++>>>4 ulelong >16 \b; #17 ++>>>0x85C use PIT-entry ++# 18. pit entry ++>>>4 ulelong >17 \b; #18 ++>>>0x8E0 use PIT-entry ++ ++0 name PIT-entry ++# garbage value implies end of pit entries ++>0x00 ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000 ++# skip empty partition name *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506092227.t59MRE9M061030>