debian/0000775000000000000000000000000013415154366007200 5ustar debian/exiv2.install0000664000000000000000000000003111707611076011615 0ustar debian/tmp/usr/bin/exiv2 debian/rules0000775000000000000000000000164111707611076010260 0ustar #!/usr/bin/make -f %: dh $@ --parallel override_dh_auto_configure: dh_auto_configure -- --disable-rpath $(shell dpkg-buildflags --export=configure) override_dh_clean: dh_clean rm -rf doc/html override_dh_strip: dh_strip -a --dbg-package=libexiv2-dbg override_dh_install: [ ! -f Makefile ] || $(MAKE) doc dh_install --list-missing find $(CURDIR)/debian -type f -name exiv2 | xargs /usr/bin/chrpath -d # Drop content of dependency_libs to avoid having to recompile exiv2 # if the path of the libs that appear there changes for file in $(CURDIR)/debian/libexiv2-dev/usr/lib/*.la; do \ sed -i "/dependency_libs/ s/'.*'/''/" $$file ; \ done override_dh_installdocs: dh_installdocs -A -Xcmd.txt -XMakefile -Xtemplates -XChangeLog override_dh_installchangelogs: dh_installchangelogs -A doc/ChangeLog override_dh_compress: dh_compress -X.xls -X.js -X.idx -X.xml -X.php get-orig-source: uscan --force-download debian/source/0000775000000000000000000000000011751222242010466 5ustar debian/source/format0000664000000000000000000000001411400372513011672 0ustar 3.0 (quilt) debian/watch0000664000000000000000000000024010650635634010225 0ustar # See uscan(1) for format # Compulsory line, this is a version 3 file version=3 http://www.exiv2.org/download.html exiv2-(.*[\d])\.tar\.gz debian svn-upgrade debian/control0000664000000000000000000000772212254036050010600 0ustar Source: exiv2 Section: graphics Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian KDE Extras Team Uploaders: Mark Purcell , Fathi Boudra Build-Depends: debhelper (>= 7.0.50~), chrpath, autotools-dev, libexpat1-dev, zlib1g-dev, libjs-jquery, dh-linktree, doxygen, graphviz, python, xsltproc Standards-Version: 3.9.3 Homepage: http://www.exiv2.org Vcs-Browser: http://svn.debian.org/wsvn/pkg-kde/kde-extras/exiv2/trunk Vcs-Svn: svn://svn.debian.org/pkg-kde/kde-extras/exiv2/trunk Package: exiv2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: EXIF/IPTC metadata manipulation tool Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats . Exiv2 command line utility to: . * print Exif, IPTC and XMP image metadata in different formats: - Exif summary info, interpreted values, or the plain data for each tag * set, add and delete Exif, IPTC and XMP image metadata from command line modify commands or command scripts * adjust the Exif timestamp (that's how it all started...) * rename Exif image files according to the Exif timestamp * extract, insert and delete Exif, IPTC and XMP metadata and JPEG comments * extract previews from RAW images and thumbnails from the Exif metadata * insert and delete the thumbnail image embedded in the Exif metadata * print, set and delete the JPEG comment of JPEG images * fix the Exif ISO setting of picture taken with Canon and Nikon cameras Package: libexiv2-12 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: exiv2 Description: EXIF/IPTC metadata manipulation library Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats . Exiv2 library provides: * fast read and write access to the Exif, IPTC, and XMP metadata of an image * an easy to use and extensively documented API * conversions of Exif and IPTC metadata to XMP and vice versa * a smart IPTC implementation that does not affect data that programs like Photoshop store in the same image segment * Exif Makernote support: - Makernote tags can be read and written just like any other metadata - a sophisticated write algorithm avoids corrupting the Makernote * a simple interface to extract previews embedded in RAW images and Exif thumbnails * set and delete methods for Exif thumbnails Package: libexiv2-dev Section: libdevel Architecture: any Depends: ${misc:Depends}, libexiv2-12 (= ${binary:Version}), pkg-config Suggests: libexiv2-doc Description: EXIF/IPTC metadata manipulation library - development files Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats . This package provides the development files for using exiv2. Package: libexiv2-doc Depends: ${misc:Depends} Section: doc Architecture: all Description: EXIF/IPTC metadata manipulation library - HTML documentation Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats . This package provides the Exiv2 HTML documentation. Package: libexiv2-dbg Depends: ${misc:Depends}, libexiv2-12 (= ${binary:Version}) Section: debug Architecture: any Priority: extra Description: EXIF/IPTC metadata manipulation library - debug Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats . This package provides the Exiv2 debug symbols. debian/exiv2.bug-presub0000664000000000000000000000065211707611076012233 0ustar If you know that the bug you want to report is in the "upstream" code then please file a bug report in the exiv2 bug tracking system on the web at http://dev.exiv2.org/projects/exiv2/issues If you feel that the bug is one that other Debian users should know about then you are welcome to file a report in the Debian BTS as well. Please keep in mind, however, that managing bug reports is part of the maintainers' workload. debian/libexiv2-dev.install0000664000000000000000000000024310620436162013057 0ustar debian/tmp/usr/include/* debian/tmp/usr/lib/pkgconfig/* debian/tmp/usr/lib/*.la debian/tmp/usr/share/locale/* debian/tmp/usr/lib/lib*.a debian/tmp/usr/lib/lib*.so debian/copyright0000664000000000000000000000756411707611076011145 0ustar This package was debianized by KELEMEN Peter on Wed, 8 Jun 2005 14:39:56 +0200. It was downloaded from http://www.exiv2.org Upstream Author: Andreas HUGGEL Copyright: (C) 2004-2008 Andreas Huggel Copyright for XMP sdk: (C) 2005-2007 Adobe Systems Incorporated Copyright for MD5 algorithm tcode: (C) 1991-2, RSA Data Security, Inc. exiv2 license: Exiv2 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 of the License, or (at your option) any later version. Alternatively, Exiv2 is also available with a commercial license, which allows it to be used in closed-source projects. Contact me for more information. Exiv2 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 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. XMP sdk license: NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms of the Adobe license agreement accompanying it. Copyright (c) 1999 - 2007, Adobe Systems Incorporated The BSD License Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Adobe Systems Incorporated, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. MD5 algorithm license: Copyright (C) 1991-2, RSA Data Security, Inc. License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this function. License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing the derived work. RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. These notices must be retained in any copies of any part of this documentation and/or software. debian/libexiv2-doc.linktrees0000664000000000000000000000013011707611076013401 0ustar replace usr/share/doc/libexiv2-doc/html/jquery.js usr/share/javascript/jquery/jquery.js debian/compat0000664000000000000000000000000211154356661010376 0ustar 7 debian/libexiv2-12.install0000664000000000000000000000003511751063416012526 0ustar debian/tmp/usr/lib/lib*.so.* debian/exiv2.manpages0000664000000000000000000000004610616215033011737 0ustar debian/tmp/usr/share/man/man1/exiv2.1 debian/docs0000664000000000000000000000000710574511072010042 0ustar README debian/libexiv2-doc.docs0000664000000000000000000000003711707611076012337 0ustar doc/include doc/*.txt src/TODO debian/libexiv2-doc.examples0000664000000000000000000000001111707611076013215 0ustar samples/ debian/patches/0000775000000000000000000000000013415151017010615 5ustar debian/patches/CVE-2017-11591.patch0000664000000000000000000000152613415150213013321 0ustar --- a/src/value.hpp +++ b/src/value.hpp @@ -1628,11 +1628,12 @@ namespace Exiv2 { ok_ = true; return static_cast(value_[n]); } +#define LARGE_INT 1000000 // Specialization for rational template<> inline long ValueType::toLong(long n) const { - ok_ = (value_[n].second != 0); + ok_ = (value_[n].second != 0 && -LARGE_INT < value_[n].first && value_[n].first < LARGE_INT); if (!ok_) return 0; return value_[n].first / value_[n].second; } @@ -1640,7 +1641,7 @@ namespace Exiv2 { template<> inline long ValueType::toLong(long n) const { - ok_ = (value_[n].second != 0); + ok_ = (value_[n].second != 0 && value_[n].first < LARGE_INT); if (!ok_) return 0; return value_[n].first / value_[n].second; } debian/patches/series0000664000000000000000000000104013415151017012025 0ustar 00_hyphens_used_as_minus.diff config-updates.diff libtool-ppc64el.diff CVE-2018-10958_10999_1_of_2.patch CVE-2018-10958_10999_2_of_2.patch CVE-2018-10998.patch CVE-2018-11531_1_of_3.patch CVE-2018-11531_2_of_3.patch CVE-2018-11531_3_of_3.patch CVE-2018-12265_prereq.patch CVE-2018-12265.patch CVE-2018-12264.patch CVE-2017-11591.patch CVE-2017-11683.patch CVE-2017-14859_14862_14864.patch CVE-2017-17669.patch CVE-2017-9239.patch CVE-2018-17581.patch CVE-2018-16336.patch CVE-2018-16336-support-funcs.patch CVE-2018-10958_10999-minor-fix.patch debian/patches/CVE-2017-14859_14862_14864.patch0000664000000000000000000000550013415150235014645 0ustar Backported of: Description: Fix CVE-2017-14864, CVE-2017-14862 and CVE-2017-14859 Origin: backport, https://github.com/Exiv2/exiv2/pull/110 Last-Update: 2017-10-25 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ diff --git a/src/error.cpp b/src/error.cpp index 96acce7..913e6c3 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -106,7 +106,9 @@ namespace { { 50, N_("Multiple TIFF array element tags %1 in one directory") }, // %1=tag number { 51, N_("TIFF array element tag %1 has wrong type") }, // %1=tag number { 52, N_("%1 has invalid XMP value type `%2'") }, // %1=key, %2=value type - { 58, N_("corrupted image metadata") } + { 57, N_("invalid memory allocation request") }, + { 58, N_("corrupted image metadata") }, + { 59, N_("Arithmetic operation overflow") }, }; } diff --git a/src/tiffvisitor.cpp b/src/tiffvisitor.cpp index 56229a4..e5c0efa 100644 --- a/src/tiffvisitor.cpp +++ b/src/tiffvisitor.cpp @@ -52,6 +52,7 @@ EXIV2_RCSID("@(#) $Id: tiffvisitor.cpp 2681 2012-03-22 15:19:35Z ahuggel $") #include #include #include +#include // ***************************************************************************** namespace { @@ -1492,6 +1493,9 @@ namespace Exiv2 { return; } p += 4; + if (count > std::numeric_limits::max() / typeSize) { + throw Error(59); + } uint32_t size = typeSize * count; int32_t offset = getLong(p, byteOrder()); byte* pData = p; @@ -1510,7 +1514,18 @@ namespace Exiv2 { size = 0; } if (size > 4) { + // setting pData to pData_ + baseOffset() + offset can result in pData pointing to invalid memory, + // as offset can be arbitrarily large + if ((static_cast(baseOffset()) > std::numeric_limits::max() - static_cast(offset)) + || (static_cast(baseOffset() + offset) > std::numeric_limits::max() - reinterpret_cast(pData_))) + { + throw Error(59); + } + if (pData_ + static_cast(baseOffset()) + static_cast(offset) > pLast_) { + throw Error(58); + } pData = const_cast(pData_) + baseOffset() + offset; + // check for size being invalid if (size > static_cast(pLast_ - pData)) { #ifndef SUPPRESS_WARNINGS EXV_ERROR << "Upper boundary of data for " @@ -1530,7 +1545,9 @@ namespace Exiv2 { } } Value::AutoPtr v = Value::create(typeId); - assert(v.get()); + if (!v.get()) { + throw Error(58); + } v->read(pData, size, byteOrder()); object->setValue(v); debian/patches/CVE-2018-12265.patch0000664000000000000000000000220013315431033013310 0ustar From 937a1a2bd067b8b3b787f3757089d972f3a39853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Mon, 11 Jun 2018 16:04:28 +0200 Subject: [PATCH] Add offset_ and size_ safely in LoaderExifJpeg::LoaderExifJpeg offset_ can become arbitrarily large and overflows once its added to size_, this causes all kinds of problems further in the code when offset_ is used again. => Use Safe::add() to catch potential overflows This fixes #365. (cherry picked from commit 937a1a2bd067b8b3b787f3757089d972f3a39853) [rcs: Backported to jessie] --- src/preview.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- exiv2-jessie.git.orig/src/preview.cpp +++ exiv2-jessie.git/src/preview.cpp @@ -41,6 +41,7 @@ #include "preview.hpp" #include "futils.hpp" +#include "safe_op.hpp" #include "image.hpp" #include "cr2image.hpp" @@ -549,7 +550,8 @@ } } - if (offset_ + size_ > static_cast(image_.io().size())) return; + if (Safe::add(offset_, size_) > static_cast(image_.io().size())) + return; valid_ = true; } debian/patches/CVE-2018-11531_2_of_3.patch0000664000000000000000000000246713315430776014466 0ustar From 863aaebc92ff0b0ee3d302b7b5291002c043bc7b Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Fri, 25 May 2018 22:16:25 +0200 Subject: [PATCH] Use index to access buf.pData_ (cherry picked from commit 863aaebc92ff0b0ee3d302b7b5291002c043bc7b) [rcs: Backported to jessie] --- src/preview.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- exiv2-jessie.git.orig/src/preview.cpp +++ exiv2-jessie.git/src/preview.cpp @@ -809,13 +809,13 @@ else { // FIXME: the buffer is probably copied twice, it should be optimized DataBuf buf(size_); - Exiv2::byte* pos = buf.pData_; + uint32_t idxBuf = 0; for (int i = 0; i < sizes.count(); i++) { uint32_t offset = dataValue.toLong(i); uint32_t size = sizes.toLong(i); if (size!=0 && offset + size <= static_cast(io.size())) - memcpy(pos, base + offset, size); - pos += size; + memcpy(&buf.pData_[idxBuf], base + offset, size); + idxBuf += size; } dataValue.setDataArea(buf.pData_, buf.size_); } debian/patches/CVE-2018-11531_3_of_3.patch0000664000000000000000000000170613315431003014442 0ustar From 67a5a741153c876a6f1c189abb874721d1725c48 Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Fri, 25 May 2018 22:20:03 +0200 Subject: [PATCH] Throw when trying to write out of the buffer (cherry picked from commit 67a5a741153c876a6f1c189abb874721d1725c48) [rcs: Backported to jessie] --- src/preview.cpp | 2 ++ 1 file changed, 2 insertions(+) --- exiv2-jessie.git.orig/src/preview.cpp +++ exiv2-jessie.git/src/preview.cpp @@ -813,6 +813,8 @@ for (int i = 0; i < sizes.count(); i++) { uint32_t offset = dataValue.toLong(i); uint32_t size = sizes.toLong(i); + if (idxBuf + size >= size_) + throw Error(58); if (size!=0 && offset + size <= static_cast(io.size())) memcpy(&buf.pData_[idxBuf], base + offset, size); idxBuf += size; debian/patches/libtool-ppc64el.diff0000664000000000000000000000415412254036021014367 0ustar Description: Add support for little-endian powerpc Linux Derived from a libtool patch by Alan Modra. Author: Alan Modra Author: Colin Watson Forwarded: not-needed Last-Update: 2013-12-17 Index: b/config/aclocal.m4 =================================================================== --- a/config/aclocal.m4 +++ b/config/aclocal.m4 @@ -1267,7 +1267,7 @@ rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -1281,7 +1281,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1300,7 +1303,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) Index: b/configure =================================================================== --- a/configure +++ b/configure @@ -7663,7 +7663,7 @@ rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -7681,7 +7681,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -7700,7 +7703,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) debian/patches/00_hyphens_used_as_minus.diff0000664000000000000000000000402611226566072016355 0ustar --- a/src/exiv2.1 +++ b/src/exiv2.1 @@ -171,17 +171,17 @@ Print mode for the 'print' action. Possi .br s : print a summary of the Exif metadata (the default) .br -a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct) +a : print Exif, IPTC and XMP metadata (shortcut for \-Pkyct) .br -t : interpreted (translated) Exif tags (-PEkyct) +t : interpreted (translated) Exif tags (\-PEkyct) .br -v : plain Exif tag values (-PExgnycv) +v : plain Exif tag values (\-PExgnycv) .br -h : hexdump of the Exif data (-PExgnycsh) +h : hexdump of the Exif data (\-PExgnycsh) .br -i : IPTC datasets (-PIkyct) +i : IPTC datasets (\-PIkyct) .br -x : XMP properties (-PXkyct) +x : XMP properties (\-PXkyct) .br c : JPEG comment .br @@ -256,7 +256,7 @@ images and a modifier to generate an XMP p[[, ...]] : Extract preview images. The optional comma separated list of preview image numbers is used to determine which preview images to extract. The available preview images and their numbers are displayed -with the 'print' option -pp. +with the 'print' option \-pp. .br X : Extract metadata to an XMP sidecar file .xmp. The remaining extract targets determine what metadata to extract to the sidecar @@ -393,13 +393,13 @@ ignored (comments). Remaining lines are exiv2 *.jpg Prints a summary of the Exif information for all JPEG files in the directory. .TP -exiv2 -pi image.jpg +exiv2 \-pi image.jpg Prints the IPTC metadata of the image. .TP exiv2 rename img_1234.jpg Renames img_1234.jpg (taken on 13\-Nov\-05 at 22:58:31) to 20051113_225831.jpg .TP -exiv2 -r':basename:_%Y%m' rename img_1234.jpg +exiv2 \-r':basename:_%Y%m' rename img_1234.jpg Renames img_1234.jpg to img_1234_200511.jpg .TP exiv2 \-et img1.jpg img2.jpg @@ -441,7 +441,7 @@ and GPSLatitudeRef contains either 'N' o latitude respectively. .TP .nf -exiv2 insert -l/tmp -S.CRW /data/*.JPG +exiv2 insert \-l/tmp \-S.CRW /data/*.JPG .fi Copy all metadata from CRW files in the /tmp directory to JPG files with corresponding basenames in the /data directory. Note that this debian/patches/CVE-2018-16336.patch0000664000000000000000000001473413415150341013333 0ustar Backported of: From 35b3e596edacd2437c2c5d3dd2b5c9502626163d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Fri, 17 Aug 2018 16:41:05 +0200 Subject: [PATCH] Add overflow & overread checks to PngChunk::parseTXTChunk() This function was creating a lot of new pointers and strings without properly checking the array bounds. This commit adds several calls to enforce(), making sure that the pointers stay within bounds. Strings are now created using the helper function string_from_unterminated() to prevent overreads in the constructor of std::string. This fixes #400 Index: exiv2-0.23/src/pngchunk.cpp =================================================================== --- exiv2-0.23.orig/src/pngchunk.cpp +++ exiv2-0.23/src/pngchunk.cpp @@ -51,6 +51,8 @@ extern "C" { #include "iptc.hpp" #include "image.hpp" #include "error.hpp" +#include "helper_functions.hpp" +#include "safe_op.hpp" // + standard includes #include @@ -138,6 +140,8 @@ namespace Exiv2 { if(type == zTXt_Chunk) { + if (data.size_ < Safe::add(keysize, 2)) throw Error(58); + // Extract a deflate compressed Latin-1 text chunk // we get the compression method after the key @@ -154,11 +158,13 @@ namespace Exiv2 { // compressed string after the compression technique spec const byte* compressedText = data.pData_ + keysize + 2; unsigned int compressedTextSize = data.size_ - keysize - 2; + if (compressedTextSize >= data.size_) throw Error(58); zlibUncompress(compressedText, compressedTextSize, arr); } else if(type == tEXt_Chunk) { + if (data.size_ < Safe::add(keysize, 1)) throw Error(58); // Extract a non-compressed Latin-1 text chunk // the text comes after the key, but isn't null terminated @@ -169,6 +175,7 @@ namespace Exiv2 { } else if(type == iTXt_Chunk) { + if (data.size_ < Safe::add(keysize, 3)) throw Error(58); const int nullSeparators = std::count(&data.pData_[keysize+3], &data.pData_[data.size_-1], '\0'); if (nullSeparators < 2) throw Error(58, "iTXt chunk: not enough null separators"); @@ -189,41 +196,43 @@ namespace Exiv2 { } // language description string after the compression technique spec - std::string languageText((const char*)(data.pData_ + keysize + 3)); - unsigned int languageTextSize = static_cast(languageText.size()); - // translated keyword string after the language description - std::string translatedKeyText((const char*)(data.pData_ + keysize + 3 + languageTextSize +1)); - unsigned int translatedKeyTextSize = static_cast(translatedKeyText.size()); + const size_t languageTextMaxSize = data.size_ - keysize - 3; + std::string languageText = + string_from_unterminated((const char*)(data.pData_ + Safe::add(keysize, 3)), languageTextMaxSize); + const unsigned int languageTextSize = static_cast(languageText.size()); - if ( compressionFlag == 0x00 ) - { - // then it's an uncompressed iTXt chunk -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::parseTXTChunk: We found an uncompressed iTXt field\n"; -#endif + if (data.size_ < Safe::add(static_cast(Safe::add(keysize, 4)), languageTextSize)) throw Error(58); + // translated keyword string after the language description + std::string translatedKeyText = + string_from_unterminated((const char*)(data.pData_ + keysize + 3 + languageTextSize + 1), + data.size_ - (keysize + 3 + languageTextSize + 1)); + const unsigned int translatedKeyTextSize = static_cast(translatedKeyText.size()); + + if ((compressionFlag == 0x00) || (compressionFlag == 0x01 && compressionMethod == 0x00)) { + if (Safe::add(static_cast(keysize + 3 + languageTextSize + 1), + Safe::add(translatedKeyTextSize, 1u)) > data.size_) throw Error(58); - // the text comes after the translated keyword, but isn't null terminated const byte* text = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; - long textsize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); + const long textsize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); - arr.alloc(textsize); - arr = DataBuf(text, textsize); - } - else if ( compressionFlag == 0x01 && compressionMethod == 0x00 ) - { - // then it's a zlib compressed iTXt chunk + if (compressionFlag == 0x00) { + // then it's an uncompressed iTXt chunk #ifdef DEBUG - std::cout << "Exiv2::PngChunk::parseTXTChunk: We found a zlib compressed iTXt field\n"; + std::cout << "Exiv2::PngChunk::parseTXTChunk: We found an uncompressed iTXt field\n"; #endif - // the compressed text comes after the translated keyword, but isn't null terminated - const byte* compressedText = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; - long compressedTextSize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); + arr.alloc(textsize); + arr = DataBuf(text, textsize); + } else if (compressionFlag == 0x01 && compressionMethod == 0x00) { + // then it's a zlib compressed iTXt chunk +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::parseTXTChunk: We found a zlib compressed iTXt field\n"; +#endif - zlibUncompress(compressedText, compressedTextSize, arr); - } - else - { + // the compressed text comes after the translated keyword, but isn't null terminated + zlibUncompress(text, textsize, arr); + } + } else { // then it isn't zlib compressed and we are sunk #ifdef DEBUG std::cerr << "Exiv2::PngChunk::parseTXTChunk: Non-standard iTXt compression method.\n"; debian/patches/CVE-2018-17581.patch0000664000000000000000000000222713415150331013327 0ustar From b3d077dcaefb6747fff8204490f33eba5a144edb Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Sat, 13 Oct 2018 11:38:56 +0200 Subject: [PATCH] Fix #460 by adding more checks in CiffDirectory::readDirectory diff --git a/src/crwimage.cpp b/src/crwimage.cpp index 6cd8832..d1b031e 100644 --- a/src/crwimage.cpp +++ b/src/crwimage.cpp @@ -456,6 +456,8 @@ namespace Exiv2 { uint32_t size, ByteOrder byteOrder) { + if (size < 4) + throw Error(33); uint32_t o = getULong(pData + size - 4, byteOrder); if (o + 2 > size) throw Error(33); uint16_t count = getUShort(pData + o, byteOrder); @@ -464,8 +466,10 @@ namespace Exiv2 { <<", " << count << " entries \n"; #endif o += 2; + if ( (o + (count * 10)) > size ) + throw Error(33); + for (uint16_t i = 0; i < count; ++i) { - if (o + 10 > size) throw Error(33); uint16_t tag = getUShort(pData + o, byteOrder); CiffComponent::AutoPtr m; switch (CiffComponent::typeId(tag)) { debian/patches/CVE-2018-10958_10999_2_of_2.patch0000664000000000000000000000521413315430740015234 0ustar From 3ad0050469e6ea63b4081f2a88c264ce8ab55c51 Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Wed, 23 May 2018 10:34:20 +0200 Subject: [PATCH] Check validity of compressionFlag & compressionMethod (cherry picked from commit 3ad0050469e6ea63b4081f2a88c264ce8ab55c51) [rcs: Backported to jessie] --- src/pngchunk.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) --- exiv2.git.orig/src/pngchunk.cpp +++ exiv2.git/src/pngchunk.cpp @@ -168,14 +168,24 @@ else if(type == iTXt_Chunk) { const int nullSeparators = std::count(&data.pData_[keysize+3], &data.pData_[data.size_-1], '\0'); - if (nullSeparators < 2) throw Error(58); + if (nullSeparators < 2) throw Error(58, "iTXt chunk: not enough null separators"); // Extract a deflate compressed or uncompressed UTF-8 text chunk // we get the compression flag after the key - const byte* compressionFlag = data.pData_ + keysize + 1; + const byte compressionFlag = data.pData_[keysize + 1]; // we get the compression method after the compression flag - const byte* compressionMethod = data.pData_ + keysize + 2; + const byte compressionMethod = data.pData_[keysize + 2]; + + if (compressionFlag != 0x00 && compressionFlag != 0x01) + { + throw Error(58, "iTXt chunk: not valid value in compressionFlag"); + } + if (compressionMethod != 0x00) + { + throw Error(58, "iTXt chunk: not valid value in compressionMethod"); + } + // language description string after the compression technique spec std::string languageText((const char*)(data.pData_ + keysize + 3)); unsigned int languageTextSize = static_cast(languageText.size()); @@ -183,7 +193,7 @@ std::string translatedKeyText((const char*)(data.pData_ + keysize + 3 + languageTextSize +1)); unsigned int translatedKeyTextSize = static_cast(translatedKeyText.size()); - if ( compressionFlag[0] == 0x00 ) + if ( compressionFlag == 0x00 ) { // then it's an uncompressed iTXt chunk #ifdef DEBUG @@ -197,7 +207,7 @@ arr.alloc(textsize); arr = DataBuf(text, textsize); } - else if ( compressionFlag[0] == 0x01 && compressionMethod[0] == 0x00 ) + else if ( compressionFlag == 0x01 && compressionMethod == 0x00 ) { // then it's a zlib compressed iTXt chunk #ifdef DEBUG debian/patches/CVE-2017-11683.patch0000664000000000000000000000300713415150225013322 0ustar From 1f1715c086d8dcdf5165b19164af9aee7aa12e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Fri, 6 Oct 2017 00:37:43 +0200 Subject: [PATCH] =?UTF-8?q?Use=20nullptr=20check=20instead=20of=20assertio?= =?UTF-8?q?n,=20by=20Rapha=C3=ABl=20Hertzog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Source: https://github.com/Exiv2/exiv2/issues/57#issuecomment-333086302 tc can be a null pointer when the TIFF tag is unknown (the factory then returns an auto_ptr(0)) => as this can happen for corrupted files, an explicit check should be used because an assertion can be turned of in release mode (with NDEBUG defined) This also fixes #57 --- src/tiffvisitor.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) --- a/src/tiffvisitor.cpp +++ b/src/tiffvisitor.cpp @@ -1290,11 +1290,12 @@ namespace Exiv2 { } uint16_t tag = getUShort(p, byteOrder()); TiffComponent::AutoPtr tc = TiffCreator::create(tag, object->group()); - // The assertion typically fails if a component is not configured in - // the TIFF structure table - assert(tc.get()); - tc->setStart(p); - object->addChild(tc); + if (tc.get()) { + tc->setStart(p); + object->addChild(tc); + } else { + EXV_WARNING << "Unable to handle tag " << tag << ".\n"; + } p += 12; } debian/patches/CVE-2018-12265_prereq.patch0000664000000000000000000003046013315431023014676 0ustar --- /dev/null +++ exiv2-jessie.git/src/safe_op.hpp @@ -0,0 +1,307 @@ +// ********************************************************* -*- C++ -*- +/* + * Copyright (C) 2004-2018 Exiv2 maintainers + * + * This program is part of the Exiv2 distribution. + * + * 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 + * of the License, 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file safe_op.hpp + @brief Overflow checks for integers + @author Dan Čermák (D4N) + dan.cermak@cgc-instruments.com + @date 14-Dec-17, D4N: created + */ + +#ifndef SAFE_OP_HPP_ +#define SAFE_OP_HPP_ + +#include +#include + +#ifdef _MSC_VER +#include +#endif + +/*! + * @brief Arithmetic operations with overflow checks + */ +namespace Safe +{ + /*! + * @brief Helper functions for providing integer overflow checks. + * + * This namespace contains internal helper functions fallback_$op_overflow + * and builtin_$op_overflow (where $op is an arithmetic operation like add, + * subtract, etc.). Both provide the following interface: + * + * bool fallback/builtin_$op_overflow(T first, T second, T& result); + * + * where T is an integer type. + * + * Each function performs checks whether first $op second can be safely + * performed without overflows. If yes, the result is saved in result and + * false is returned. Otherwise true is returned and the contents of result + * are unspecified. + * + * fallback_$op_overflow implements a portable but slower overflow check. + * builtin_$op_overflow uses compiler builtins (when available) and should + * be faster. As builtins are not available for all types, + * builtin_$op_overflow falls back to fallback_$op_overflow when no builtin + * is available. + */ + namespace Internal + { + /*! + * @brief Helper struct to determine whether a type is signed or unsigned + * + * This struct is a backport of std::is_signed from C++11. It has a public + * enum with the property VALUE which is true when the type is signed or + * false if it is unsigned. + */ + template + struct is_signed + { + enum + { + VALUE = T(-1) < T(0) + }; + }; + + /*! + * @brief Helper struct for SFINAE, from C++11 + + * This struct has a public typedef called type typedef'd to T if B is + * true. Otherwise there is no typedef. + */ + template + struct enable_if + { + }; + + /*! + * @brief Specialization of enable_if for the case B == true + */ + template + struct enable_if + { + typedef T type; + }; + + /*! + * @brief Check the addition of two numbers for overflows for signed + * integer types larger than int or with the same size as int. + * + * This function performs a check if summand_1 + summand_2 would + * overflow and returns true in that case. If no overflow occurs, + * the sum is saved in result and false is returned. + * + * @return true on overflow, false on no overflow + * + * @param[in] summand_1, summand_2 The summands with are added + * @param[out] result Result of the addition, only populated when no + * overflow occurs. + * + * Further information: + * https://wiki.sei.cmu.edu/confluence/display/c/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow + */ + template + typename enable_if::VALUE && sizeof(T) >= sizeof(int), bool>::type fallback_add_overflow( + T summand_1, T summand_2, T& result) + { + if (((summand_2 >= 0) && (summand_1 > std::numeric_limits::max() - summand_2)) || + ((summand_2 < 0) && (summand_1 < std::numeric_limits::min() - summand_2))) { + return true; + } else { + result = summand_1 + summand_2; + return false; + } + } + + /*! + * @brief Check the addition of two numbers for overflows for signed + * integer types smaller than int. + * + * This function adds summand_1 and summand_2 exploiting integer + * promotion rules, thereby not causing undefined behavior. The + * result is checked against the limits of T and true is returned if + * they are exceeded. Otherwise the sum is saved in result and false + * is returned. + * + * @return true on overflow, false on no overflow + * + * @param[in] summand_1, summand_2 The summands with are added + * @param[out] result Result of the addition, only populated when no + * overflow occurs. + * + * Further information: + * https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules + */ + template + typename enable_if::VALUE && sizeof(T) < sizeof(int), bool>::type fallback_add_overflow( + T summand_1, T summand_2, T& result) + { + const int res = summand_1 + summand_2; + if ((res > std::numeric_limits::max()) || (res < std::numeric_limits::min())) { + return true; + } else { + result = static_cast(res); + return false; + } + } + + /*! + * @brief Check the addition of two numbers for overflows for unsigned + * integer types. + * + * This function adds summand_1 and summand_2 and checks after that if + * the operation overflowed. Since these are unsigned integers, no + * undefined behavior is invoked. + * + * @return true on overflow, false on no overflow + * + * @param[in] summand_1, summand_2 The summands with are added + * @param[out] result Result of the addition + * + * Further information: + * https://wiki.sei.cmu.edu/confluence/display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap + */ + template + typename enable_if::VALUE, bool>::type fallback_add_overflow(T summand_1, T summand_2, T& result) + { + result = summand_1 + summand_2; + return result < summand_1; + } + + /*! + * @brief Overflow addition check using compiler intrinsics. + * + * This function behaves exactly like fallback_add_overflow() but it + * relies on compiler intrinsics instead. This version should be faster + * than the fallback version as it can fully utilize available CPU + * instructions & the compiler's diagnostic. + * + * However, as some compilers don't provide intrinsics for certain + * types, the default implementation is the version from fallback. + * + * This function is fully specialized for each compiler. + */ + template + bool builtin_add_overflow(T summand_1, T summand_2, T& result) + { + return fallback_add_overflow(summand_1, summand_2, result); + } + +#if defined(__GNUC__) || defined(__clang__) +#if __GNUC__ >= 5 || __clang_major__ >= 3 + +/*! + * This macro pastes a specialization of builtin_add_overflow using gcc's & + * clang's __builtin_(s/u)add(l)(l)_overlow() + * + * The add function is implemented by forwarding the parameters to the intrinsic + * and returning its value. + * + * The intrinsics are documented here: + * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html#Integer-Overflow-Builtins + */ +#define SPECIALIZE_builtin_add_overflow(type, builtin_name) \ + /* Full specialization of builtin_add_overflow for type using the */ \ + /* builtin_name intrinsic */ \ + template <> \ + inline bool builtin_add_overflow(type summand_1, type summand_2, type & result) \ + { \ + return builtin_name(summand_1, summand_2, &result); \ + } + + SPECIALIZE_builtin_add_overflow(int, __builtin_sadd_overflow); + SPECIALIZE_builtin_add_overflow(long, __builtin_saddl_overflow); + SPECIALIZE_builtin_add_overflow(long long, __builtin_saddll_overflow); + + SPECIALIZE_builtin_add_overflow(unsigned int, __builtin_uadd_overflow); + SPECIALIZE_builtin_add_overflow(unsigned long, __builtin_uaddl_overflow); + SPECIALIZE_builtin_add_overflow(unsigned long long, __builtin_uaddll_overflow); + +#undef SPECIALIZE_builtin_add_overflow +#endif // __GNUC__ >= 5 || __clang_major >= 3 + +#elif defined(_MSC_VER) +// intrinsics are not in available in MSVC 2005 and earlier +#if _MSC_VER >= 1400 + +/*! + * This macro pastes a specialization of builtin_add_overflow using MSVC's + * U(Int/Long/LongLong)Add. + * + * The add function is implemented by forwarding the parameters to the + * intrinsic. As MSVC's intrinsics return S_OK on success, this specialization + * returns whether the intrinsics return value does not equal S_OK. This ensures + * a uniform interface of the add function (false is returned when no overflow + * occurs, true on overflow). + * + * The intrinsics are documented here: + * https://msdn.microsoft.com/en-us/library/windows/desktop/ff516460(v=vs.85).aspx + */ +#define SPECIALIZE_builtin_add_overflow_WIN(type, builtin_name) \ + template <> \ + inline bool builtin_add_overflow(type summand_1, type summand_2, type& result) \ + { \ + return builtin_name(summand_1, summand_2, &result) != S_OK; \ + } + + SPECIALIZE_builtin_add_overflow_WIN(unsigned int, UIntAdd); + SPECIALIZE_builtin_add_overflow_WIN(unsigned long, ULongAdd); + SPECIALIZE_builtin_add_overflow_WIN(unsigned long long, ULongLongAdd); + +#undef SPECIALIZE_builtin_add_overflow_WIN + +#endif // _MSC_VER >= 1400 +#endif // defined(_MSC_VER) + + } // namespace Internal + + /*! + * @brief Safe addition, throws an exception on overflow. + * + * This function returns the result of summand_1 and summand_2 only when the + * operation would not overflow, otherwise an exception of type + * std::overflow_error is thrown. + * + * @param[in] summand_1, summand_2 summands to be summed up + * @return the sum of summand_1 and summand_2 + * @throws std::overflow_error if the addition would overflow + * + * This function utilizes compiler builtins when available and should have a + * very small performance hit then. When builtins are unavailable, a more + * extensive check is required. + * + * Builtins are available for the following configurations: + * - GCC/Clang for signed and unsigned int, long and long long (not char & short) + * - MSVC for unsigned int, long and long long + */ + template + T add(T summand_1, T summand_2) + { + T res = 0; + if (Internal::builtin_add_overflow(summand_1, summand_2, res)) { + throw std::overflow_error("Overflow in addition"); + } + return res; + } + +} // namespace Safe + +#endif // SAFE_OP_HPP_ debian/patches/CVE-2018-11531_1_of_3.patch0000664000000000000000000000167413315430767014464 0ustar From ed874703ad553338f973d537b8159d0eb4375cc4 Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Fri, 25 May 2018 22:03:26 +0200 Subject: [PATCH] Prevent call to memcpy with size==0 (cherry picked from commit ed874703ad553338f973d537b8159d0eb4375cc4) [rcs: Backported to jessie] --- src/preview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- exiv2-jessie.git.orig/src/preview.cpp +++ exiv2-jessie.git/src/preview.cpp @@ -813,7 +813,7 @@ for (int i = 0; i < sizes.count(); i++) { uint32_t offset = dataValue.toLong(i); uint32_t size = sizes.toLong(i); - if (offset + size <= static_cast(io.size())) + if (size!=0 && offset + size <= static_cast(io.size())) memcpy(pos, base + offset, size); pos += size; } debian/patches/CVE-2018-16336-support-funcs.patch0000664000000000000000000000122713415150350016152 0ustar diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp index 607fdca..1964237 100644 --- a/src/pngchunk.cpp +++ b/src/pngchunk.cpp @@ -51,7 +51,6 @@ extern "C" { #include "iptc.hpp" #include "image.hpp" #include "error.hpp" -#include "helper_functions.hpp" #include "safe_op.hpp" // + standard includes @@ -64,6 +63,13 @@ extern "C" { #include #include +/* Added as support of CVE-2018-16336 */ +std::string string_from_unterminated(const char* data, size_t data_length) +{ + const size_t StringLength = strnlen(data, data_length); + + return std::string(data, StringLength); +} /* URLs to find informations about PNG chunks : debian/patches/CVE-2018-10998.patch0000664000000000000000000000526713315430755013355 0ustar From f4e8ed2fd48d012467b99552f0d6378302a23c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Mon, 11 Jun 2018 16:25:23 +0200 Subject: [PATCH] Catch all exceptions not caught in exiv2 cli-tool It effectively looks the same as before, only now we don't call abort() but instead clean up everything gracefully. (cherry picked from commit f4e8ed2fd48d012467b99552f0d6378302a23c75) [rcs: Backported to jessie] --- src/exiv2.cpp | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) --- exiv2-jessie.git.orig/src/exiv2.cpp +++ exiv2-jessie.git/src/exiv2.cpp @@ -151,30 +151,36 @@ return 0; } - // Create the required action class - Action::TaskFactory& taskFactory = Action::TaskFactory::instance(); - Action::Task::AutoPtr task - = taskFactory.create(Action::TaskType(params.action_)); - assert(task.get()); - - // Process all files int rc = 0; - int n = 1; - int s = static_cast(params.files_.size()); - int w = s > 9 ? s > 99 ? 3 : 2 : 1; - for (Params::Files::const_iterator i = params.files_.begin(); - i != params.files_.end(); ++i) { - if (params.verbose_) { - std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": " - << *i << std::endl; + + try { + // Create the required action class + Action::TaskFactory& taskFactory = Action::TaskFactory::instance(); + Action::Task::AutoPtr task = taskFactory.create(Action::TaskType(params.action_)); + assert(task.get()); + + // Process all files + int n = 1; + int s = static_cast(params.files_.size()); + int w = s > 9 ? s > 99 ? 3 : 2 : 1; + for (Params::Files::const_iterator i = params.files_.begin(); i != params.files_.end(); ++i) { + if (params.verbose_) { + std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": " << *i + << std::endl; + } + int ret = task->run(*i); + if (rc == 0) + rc = ret; } - int ret = task->run(*i); - if (rc == 0) rc = ret; - } - taskFactory.cleanup(); - params.cleanup(); - Exiv2::XmpParser::terminate(); + taskFactory.cleanup(); + params.cleanup(); + Exiv2::XmpParser::terminate(); + + } catch (const std::exception& exc) { + std::cerr << "Uncaught exception: " << exc.what() << std::endl; + rc = 1; + } // Return a positive one byte code for better consistency across platforms return static_cast(rc) % 256; debian/patches/config-updates.diff0000664000000000000000000012372512225316413014372 0ustar Index: b/config/config.guess =================================================================== --- a/config/config.guess +++ b/config/config.guess @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2010-08-21' +timestamp='2013-06-10' # This file 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 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -17,26 +15,22 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). # -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,9 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -92,7 +84,7 @@ exit 1 fi -trap 'exit 1' HUP INT TERM +trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -106,7 +98,7 @@ set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || @@ -140,12 +132,33 @@ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -181,7 +194,7 @@ fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -202,6 +215,10 @@ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} @@ -224,7 +241,7 @@ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -270,7 +287,10 @@ # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -296,12 +316,12 @@ echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -395,23 +415,23 @@ # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -481,8 +501,8 @@ echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -495,7 +515,7 @@ else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -595,52 +615,52 @@ 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -731,22 +751,22 @@ exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -770,14 +790,14 @@ exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -789,30 +809,35 @@ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; @@ -849,15 +874,22 @@ exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -867,52 +899,56 @@ EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; - esac + esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo cris-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build @@ -931,54 +967,63 @@ #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; or32:Linux:*:*) - echo or32-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -987,11 +1032,11 @@ echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1023,7 +1068,7 @@ fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1051,13 +1096,13 @@ exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp - exit ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1092,8 +1137,8 @@ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ @@ -1136,10 +1181,10 @@ echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1165,11 +1210,11 @@ exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1182,6 +1227,9 @@ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1208,19 +1256,21 @@ exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) @@ -1234,7 +1284,10 @@ *:QNX:*:4*) echo i386-pc-qnx exit ;; - NSE-?:NONSTOP_KERNEL:*:*) + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) @@ -1279,13 +1332,13 @@ echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1303,11 +1356,11 @@ i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - eval $set_cc_for_build cat >$dummy.c < printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif Index: b/config/config.sub =================================================================== --- a/config/config.sub +++ b/config/config.sub @@ -1,38 +1,31 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. - -timestamp='2010-09-11' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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 of the License, or +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-08-10' + +# This file 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 3 of the License, 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. +# 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 this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -75,9 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -125,13 +116,17 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -154,12 +149,12 @@ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; - -bluegene*) - os=-cnk + -bluegene*) + os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= @@ -175,10 +170,10 @@ os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -223,6 +218,12 @@ -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; -lynx*) os=-lynxos ;; @@ -247,20 +248,27 @@ # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ + | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -278,30 +286,32 @@ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 \ + | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | or32 \ + | open8 \ + | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ - | rx \ + | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ - | v850 | v850e \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; @@ -314,8 +324,7 @@ c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -325,6 +334,21 @@ basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -339,25 +363,30 @@ # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ + | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -375,31 +404,34 @@ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | romp-* | rs6000-* | rx-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ + | tile*-* \ | tron-* \ | ubicom32-* \ - | v850-* | v850e-* | vax-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -424,7 +456,7 @@ basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -507,7 +539,7 @@ basic_machine=c90-cray os=-unicos ;; - cegcc) + cegcc) basic_machine=arm-unknown os=-cegcc ;; @@ -539,7 +571,7 @@ basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -697,7 +729,6 @@ i370-ibm* | ibm*) basic_machine=i370-ibm ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 @@ -755,11 +786,15 @@ basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) @@ -794,10 +829,18 @@ ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; + msys) + basic_machine=i686-pc + os=-msys + ;; mvs) basic_machine=i370-ibm os=-mvs ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -862,10 +905,10 @@ np1) basic_machine=np1-gould ;; - neo-tandem) + neo-tandem) basic_machine=neo-tandem ;; - nse-tandem) + nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) @@ -950,9 +993,10 @@ ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -977,7 +1021,11 @@ basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; @@ -1046,6 +1094,9 @@ basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1102,13 +1153,8 @@ basic_machine=t90-cray os=-unicos ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; tile*) - basic_machine=tile-unknown + basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) @@ -1178,6 +1224,9 @@ xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1275,11 +1324,11 @@ if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + -auroraux) + os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` @@ -1303,21 +1352,21 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1364,7 +1413,7 @@ -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1413,7 +1462,7 @@ -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1449,17 +1498,14 @@ -aros*) os=-aros ;; - -kaos*) - os=-kaos - ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; - -nacl*) - ;; + -nacl*) + ;; -none) ;; *) @@ -1482,10 +1528,10 @@ # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1497,8 +1543,14 @@ arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf ;; tic54x-*) os=-coff @@ -1527,14 +1579,11 @@ ;; m68000-sun) os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 ;; m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1543,6 +1592,9 @@ mips*-*) os=-elf ;; + or1k-*) + os=-elf + ;; or32-*) os=-coff ;; @@ -1561,7 +1613,7 @@ *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) debian/patches/CVE-2017-17669.patch0000664000000000000000000000267113415150303013337 0ustar From 4429b962e10e9f2e905e20b183ba008c616cd366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Mon, 22 Jan 2018 23:56:08 +0100 Subject: [PATCH 1/3] Fix out of bounds read in src/pngchunk_int.cpp by @brianmay - consider that key is advanced by 8 bytes if stripHeader is true => length is reduced by same amount Fixed by adding offset to the check in the loop - Rewrote loop so that keysize is checked before the next iteration (preventing an out of bounds read) diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp index 7407908..89e35dc 100644 --- a/src/pngchunk.cpp +++ b/src/pngchunk.cpp @@ -112,15 +112,17 @@ namespace Exiv2 { { // From a tEXt, zTXt, or iTXt chunk, // we get the key, it's a null terminated string at the chunk start - if (data.size_ <= (stripHeader ? 8 : 0)) throw Error(14); - const byte *key = data.pData_ + (stripHeader ? 8 : 0); + const int offset = stripHeader ? 8 : 0; + if (data.size_ <= offset) throw Error(14); + const byte *key = data.pData_ + offset; // Find null string at end of key. int keysize=0; - for ( ; key[keysize] != 0 ; keysize++) + while (key[keysize] != 0) { + keysize++; // look if keysize is valid. - if (keysize >= data.size_) + if (keysize+offset >= data.size_) throw Error(14); } debian/patches/CVE-2018-10958_10999_1_of_2.patch0000664000000000000000000000351613315430732015237 0ustar From 2fb00c8a16ce93756cddd70536e361a49369ba88 Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Sat, 19 May 2018 19:39:30 +0200 Subject: [PATCH] Analyze minimum needed number of null separators in PngChunk::parseTXTChunk This commit fixes the heap-buffer-overflow in PngChunk::parseTXTChunk. According to the specification: http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html There must be 2 null separators when we start to analyze the language tag. (cherry picked from commit 2fb00c8a16ce93756cddd70536e361a49369ba88) [rcs: Backported to jessie] --- src/pngchunk.cpp | 5 +++++ tests/bugfixes/github/test_CVE_2018_10999.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) --- exiv2.git.orig/src/pngchunk.cpp +++ exiv2.git/src/pngchunk.cpp @@ -60,6 +60,7 @@ #include #include #include +#include /* @@ -166,6 +167,9 @@ } else if(type == iTXt_Chunk) { + const int nullSeparators = std::count(&data.pData_[keysize+3], &data.pData_[data.size_-1], '\0'); + if (nullSeparators < 2) throw Error(58); + // Extract a deflate compressed or uncompressed UTF-8 text chunk // we get the compression flag after the key --- exiv2.git.orig/src/error.cpp +++ exiv2.git/src/error.cpp @@ -105,7 +105,8 @@ { 49, N_("TIFF directory %1 has too many entries") }, // %1=TIFF directory name { 50, N_("Multiple TIFF array element tags %1 in one directory") }, // %1=tag number { 51, N_("TIFF array element tag %1 has wrong type") }, // %1=tag number - { 52, N_("%1 has invalid XMP value type `%2'") } // %1=key, %2=value type + { 52, N_("%1 has invalid XMP value type `%2'") }, // %1=key, %2=value type + { 58, N_("corrupted image metadata") } }; } debian/patches/CVE-2018-10958_10999-minor-fix.patch0000664000000000000000000000164213415151017016013 0ustar Backported of: From c0a879aea41348481d5b286e34a85f4744a7446a Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Wed, 23 May 2018 11:10:38 +0200 Subject: [PATCH] Fix call to std::count, so that we count until the end of the array diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp index 1f3ef76..2c1640c 100644 --- a/src/pngchunk.cpp +++ b/src/pngchunk.cpp @@ -182,7 +182,7 @@ namespace Exiv2 { else if(type == iTXt_Chunk) { if (data.size_ < Safe::add(keysize, 3)) throw Error(58); - const int nullSeparators = std::count(&data.pData_[keysize+3], &data.pData_[data.size_-1], '\0'); + const int nullSeparators = std::count(&data.pData_[keysize+3], &data.pData_[data.size_], '\0'); if (nullSeparators < 2) throw Error(58, "iTXt chunk: not enough null separators"); // Extract a deflate compressed or uncompressed UTF-8 text chunk debian/patches/CVE-2017-9239.patch0000664000000000000000000000061713415150312013247 0ustar http://dev.exiv2.org/issues/1296 --- a/src/tiffcomposite.cpp +++ b/src/tiffcomposite.cpp @@ -1612,6 +1612,7 @@ uint32_t TiffImageEntry::doWriteImage(IoWrapper& ioWrapper, ByteOrder /*byteOrder*/) const { + if ( !pValue() ) throw Error(21); // #1296 uint32_t len = pValue()->sizeDataArea(); if (len > 0) { #ifdef DEBUG debian/patches/CVE-2018-12264.patch0000664000000000000000000000361313315431040013316 0ustar From fe70939f54476e99046245ca69ff27012401f759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Mon, 11 Jun 2018 18:37:36 +0200 Subject: [PATCH] Fix addition overflows in range checks in LoaderTiff::getData Several checks for extracted values performed no overflow checks on the addition. They can be tricked into passing, albeit the individual summands are too large. => use Safe::add() which now aborts when an overflow occurs This fixes #366 (cherry picked from commit fe70939f54476e99046245ca69ff27012401f759) [rcs: Backported to jessie] --- src/preview.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- exiv2-jessie.git.orig/src/preview.cpp +++ exiv2-jessie.git/src/preview.cpp @@ -805,7 +805,7 @@ // this saves one copying of the buffer uint32_t offset = dataValue.toLong(0); uint32_t size = sizes.toLong(0); - if (offset + size <= static_cast(io.size())) + if (Safe::add(offset, size) <= static_cast(io.size())) dataValue.setDataArea(base + offset, size); } else { @@ -815,9 +815,9 @@ for (int i = 0; i < sizes.count(); i++) { uint32_t offset = dataValue.toLong(i); uint32_t size = sizes.toLong(i); - if (idxBuf + size >= size_) + if (Safe::add(idxBuf, size) >= size_) throw Error(58); - if (size!=0 && offset + size <= static_cast(io.size())) + if (size!=0 && Safe::add(offset, size) <= static_cast(io.size())) memcpy(&buf.pData_[idxBuf], base + offset, size); idxBuf += size; } debian/changelog0000664000000000000000000003753113415154366011063 0ustar exiv2 (0.23-1ubuntu2.2) trusty-security; urgency=medium * SECURITY UPDATE: Denial of service - debian/patches/CVE-2017-11591.patch: fix in src/value.hpp. - CVE-2017-11591 * SECURITY UPDATE: Remote denial of service - debian/patches/CVE-2017-11683.patch: fix in src/tiffvisitor.cpp. - CVE-2017-11683 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2017-14859_14862_14864.patch: fix in src/error.cpp, src/tiffvisitor.cpp. - CVE-2017-14859 - CVE-2017-14862 - CVE-2017-14864 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2017-17669.patch: fix in src/pngchunk.cpp. - CVE-2017-17669 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2017-9239.patch: fix in src/tiffcomposite.cpp. - CVE-2017-9239 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2018-17581.patch: fix in src/crwimage.cpp. - CVE-2018-17581 * SECURITY UPDATE: Denial of service - debian/patches/CVE-16336*.patch: fix in src/pngchunk.cpp. - CVE-2018-16336 * Minor fix related to CVE-2018-10958_10999 in src/pngchunk.cpp. -- Leonidas S. Barbosa Tue, 08 Jan 2019 13:38:56 -0300 exiv2 (0.23-1ubuntu2.1) trusty-security; urgency=medium * SECURITY UPDATE: denial of service through memory exhaustion and a heap-based buffer over-read - debian/patches/CVE-2018-10958_10999*.patch - CVE-2018-10958 - CVE-2018-10999 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2018-10998.patch - CVE-2018-10998 * SECURITY UPDATE: Heap-based buffer overflow - debian/patches/CVE-2018-11531*.patch - CVE-2018-11531 * SECURITY UPDATE: Integer overflow - debian/patches/CVE-2018-12264.patch - CVE-2018-12264 * SECURITY UPDATE: Integer overflow - debian/patches/CVE-2018-12265*.patch - CVE-2018-12265 -- Leonidas S. Barbosa Fri, 29 Jun 2018 10:20:45 -0300 exiv2 (0.23-1ubuntu2) trusty; urgency=low * Apply libtool patch for powerpc*le-linux support, copied from libtool 2.4.2-1.3ubuntu2. -- Colin Watson Tue, 17 Dec 2013 11:57:20 +0000 exiv2 (0.23-1ubuntu1) saucy; urgency=low * Update config.{guess,sub} for AArch64. -- Matthias Klose Wed, 09 Oct 2013 20:14:39 +0200 exiv2 (0.23-1) unstable; urgency=low * New upstream release - Fixes "Support for .cr2 RAW files" (Closes: #665736) * NEW package libexiv2-12 - match soname * Drop spelling-error-in-binary.diff - included upstream * Drop spelling-error-in-manpage.diff - included upstream * Upload to unstable - coordinated through debian release - Fixes "please package 0.21 or newer to unstable" (Closes: #650516) * Update to Standard 3.9.3 - no changes necessary -- Mark Purcell Sat, 05 May 2012 09:31:28 +1000 exiv2 (0.22-2) experimental; urgency=low * dh_auto_configure $(shell dpkg-buildflags --export=configure) - Fixes "Please enabled hardened build flags" (Closes: #656356) * dh-linktree - fixes libexiv2-doc: embedded-javascript-library * Update debian/copyright GPL-2 - copyright-refers-to-symlink-license * Fix spelling-error-in-manpage exiv2.1.gz explicitely explicitly * Fix spelling-error-in-binary * Switch to dh_bugfiles * Add samples/ to libexiv2-doc/examples * Fixed "Lib not recommend exiv2" changes to Suggests: (Closes: #615137) -- Mark Purcell Wed, 25 Jan 2012 07:16:15 +1100 exiv2 (0.22-1) experimental; urgency=low * New upstream release * NEW Package libexiv2-11 - soname bump * Drop usr/lib/libexiv2.la non-empty-dependency_libs-in-la-file * Ack NMU, Thanks Luk (Closes: #618747) -- Mark Purcell Sat, 24 Sep 2011 14:28:30 +1000 exiv2 (0.20-2.1) unstable; urgency=low * Non-maintainer upload. * Remove references to other libraries from dependency_libs field (Closes: #618747) -- Luk Claes Sun, 29 May 2011 19:49:33 +0200 exiv2 (0.21.1-1) experimental; urgency=low * New upstream release * Update upstream bug tracker in presubj -- Mark Purcell Fri, 25 Feb 2011 20:03:39 +1100 exiv2 (0.21-1) experimental; urgency=low * New upstream release (Closes: #556913, #486884, #511273) - Samsung SRW and Makernote support, API Changes * NEW package libexiv2-10 - soname bump * Update debian/control Description: -- Mark Purcell Thu, 27 Jan 2011 00:05:42 +1100 exiv2 (0.20-2) unstable; urgency=low * Upload to unstable - cleared with debian-release -- Mark Purcell Fri, 09 Jul 2010 19:43:59 +1000 exiv2 (0.20-1) experimental; urgency=low * New upstream release - NEW package libexiv2-9 - soname bump - Makernote updates - Nikon performance improvement (Closes: #579835) [ Michal Čihař ] * Add -dbg package (Closes: #557088) [ Mark Purcell ] * Siwtch to source/format = 3.0 (quilt) * debian/control switch to '-' bullet marker (Closes: #564326) * Dropped fuji from Maintainers - inactive * Simplify get-orig-source target - uscan -- Mark Purcell Sun, 30 May 2010 14:45:46 +1000 exiv2 (0.19-1) unstable; urgency=low * New upstream release - TIFF performance improvement and Nikon updates * NEW package libexiv2-6 - soname bump -- Mark Purcell Fri, 01 Jan 2010 11:42:13 +1100 exiv2 (0.18.2-1) unstable; urgency=low * New upstream release - Bugfix release [Ryan Kavanagh] * Add lintian overrides: - libexiv2-dev: extended-description-is-probably-too-short * Fix a typo in README.Debian (s/enviroment/environment/) * Fix hyphens as minus signs in the manpage, 00_hyphens_used_as_minus.diff [Fathi Boudra] * Bump Standards-Version from 3.8.1 to 3.8.2 (no changes needed) * Add quilt build dependency * Remove cdbs build dependency - use dh and rewrite debian/rules -- Fathi Boudra Thu, 09 Jul 2009 18:50:32 -0400 exiv2 (0.18.1-1) unstable; urgency=low * New upstream release - (Closes: #525535): "[libexiv2-5] New upstream version 0.18.1" - write-support for Adobe Photoshop PSD images - read-support for Panasonic RW2 images - Panasonic and Nikon makernote update * Upload to unstable - discussed on debian-release - libexiv2-5 library transition * Fix: package-lacks-versioned-build-depends-on-debhelper * Add ${misc:Depends} -- Mark Purcell Wed, 29 Apr 2009 21:53:40 +1000 exiv2 (0.18-1) experimental; urgency=low * New upstream release - Closes: #426274 - "Setting "Exif.Image.DateTime Date" error" - Closes: #505023 - "FTBFS with GCC 4.4: missing #include" -- Mark Purcell Fri, 19 Dec 2008 07:39:10 +1100 exiv2 (0.18~pre2-1) experimental; urgency=low * New upstream release * NEW package libexiv2-5 - match upstream soname * Update Standards Version 3.8.0 - no changes -- Mark Purcell Sat, 08 Nov 2008 10:46:51 +1100 exiv2 (0.17.1-1) unstable; urgency=medium * New upstream release - Library transition cleared on debian-release/ d-d-a * Version 0.17 also fixes: - CVE-2008-2696: DoS via metadata in images (Closes: #486328) - crashes when fed with wrong file (Closes: #485670) * Urgency medium for CVE fix * debian/patches/gcc4.3.diff unecessary for gcc-4.3 * Add /usr/share/bug/exiv2/presubj message for reportbug(1) -- Mark Purcell Sat, 21 Jun 2008 08:23:53 +1000 exiv2 (0.17-1) experimental; urgency=low * New upstream release * Switch to simple-patchsys.mk * Refresh & merge gcc4.3 patches * New Package: libexiv2-4 - soname bump * Add Build-Depends: libexpat1-dev * Upload to experimental to clear NEW processing -- Mark Purcell Tue, 10 Jun 2008 23:05:33 +1000 exiv2 (0.16-4) unstable; urgency=low [Ana Beatriz Guerrero Lopez] * Team upload to address FTBFS with GCC 4.3. * Apply patch by Cyril Brulebois to fix FTBFS with GCC 4.3. (Closes: #466901) -- Debian KDE Extras Team Sun, 23 Mar 2008 15:42:16 +0100 exiv2 (0.16-3) unstable; urgency=low * Remove Conflicts/Replaces libexiv2-0 for libexiv2-2. (Closes: #463852) -- Fathi Boudra Tue, 05 Feb 2008 00:52:35 +0100 exiv2 (0.16-2) unstable; urgency=low * Remove Conflicts/Replaces libexiv2-0 for libexiv2-2. (Closes: #463852) -- Fathi Boudra Mon, 04 Feb 2008 15:39:20 +0100 exiv2 (0.16-1) unstable; urgency=low * New upstream release (Closes: #441524, #455633, #461009) * Remove patches, merged upstream: * CVE-2007-6353 * Rev 1124 pull * Add 01_gcc4.3.diff patch. Missing std:: removal not merged upstream yet * Bump compat to 6 * Update copyright file * Add myself in Uploaders field * Clean up build dependencies: * Remove g++ and dpkg-dev * Add quilt and libexpat1-dev * Bump debhelper to 6 * Bump Standard-Version to 3.7.3 * Use Homepage field * Add Conflicts/Replaces libexiv2-0 for libexiv2-2 * Clean up rules * Add clean target (Closes: 442560) * Build with --no-undefined and --as-needed linker flags -- Fathi Boudra Wed, 16 Jan 2008 09:17:08 +0100 exiv2 (0.15-2) unstable; urgency=high [Ana Beatriz Guerrero Lopez] * Team upload to fix security bug. * Add patch to fix integer overflow in EXIF parsing. CVE-2007-6353 (Closes: #456760) -- Debian KDE Extras Team Mon, 17 Dec 2007 19:13:11 +0100 exiv2 (0.15-1) unstable; urgency=low * New upstream release - maintenance release, support for Minolta G500 RAW files -- Mark Purcell Sun, 22 Jul 2007 12:20:57 +0100 exiv2 (0.14-2) unstable; urgency=medium * DebConf7 release :-) * Urgency medium as this fixes a number of crashes in digikam et al * Pull in upstream fixes for jpeg/tiff MSC makernote crashes (rev 1106/1124) -- Mark Purcell Tue, 19 Jun 2007 12:55:55 +0100 exiv2 (0.14-1) unstable; urgency=low * new upstream release (Closes: #414372) [ Achim Bohnet ] * 0.14 changed API: rename libexiv2-0.12 to libexiv2-0 accordingly. * libexiv2-dev: exiv2 has no exiv2-config script anymore. * debian/control: + Etch does not have a libexiv2 package. So remove Replaces/Conflict. + libexiv2-dev: No need to depend on ${shlibs:Depends}, ${misc:Depends} * debian/exiv2.1 removed: included upstream. * debian/libexiv2-0: install message catalogs [ Mark Purcell ] * FTBFS with GCC 4.3: missing #includes (Closes: #417176) * Build-Depends: doxygen, graphviz, python, xsltproc * Reinstate libexiv2-doc, better to build with doxygen than other tarball * Add build/libexiv2-doc:: to debian/rules * Rework debian/libexiv2-dev.install * Rework debian/libexiv2-doc.docs * Rework debian/libexiv2-0.install -- Mark Purcell Wed, 09 May 2007 22:28:37 +0100 exiv2 (0.12-1) unstable; urgency=low * Maintainer: Debian KDE Extras Team * Switch to cdbs * Add debian/watch * Ack NMU fix: - library package needs to be renamed (libstdc++ allocator change) (Closes: #339163) -- Mark Purcell Wed, 14 Mar 2007 08:12:49 +0000 exiv2 (0.10-1.4) unstable; urgency=high * Non-Maintainer upload. Again :-( * High-urgency upload for RC bugfix * Apply Steve Langasek patch to overcome crashes on invalid input - Image with corrupted metadata crashes Exiv2 (Closes: #401660) * Move usr/lib/*.la libtool linkage information file to -dev package - file conflict with libexiv2-0.10 (Closes: #405805) * Move usr/lib/*.so development linkage file to -dev package * Include upstream exiv2.pc in -dev package - exiv2.pc is missing (Closes: #396060) * Add libexiv2-dev Depends: pkg-config -- Mark Purcell Sun, 21 Jan 2007 21:06:27 +0000 exiv2 (0.12-0.2) experimental; urgency=low * Non-maintainer upload. (NMU) * Add Build-Depends: zlib1g-dev, thanks Kurt - FTBFS: checking zlib in /usr... failed (Closes: #405916) -- Mark Purcell Sun, 7 Jan 2007 12:22:39 +0000 exiv2 (0.12-0.1) experimental; urgency=medium * Non-mantainer upload. (NMU) * Urgency medium as this fixes RC bugs * New upstream bugfix release - Image with corrupted metadata crashes Exiv2 (Closes: #401660) - new upstream release 0.12 (Closes: #389711) * Include upstream exiv2.pc in debian package - exiv2.pc is missing (Closes: #396060) * Bump soname - file conflict with libexiv2 (Closes: #386934) -- Mark Purcell Sat, 23 Dec 2006 18:42:30 +1100 exiv2 (0.10-1.3) unstable; urgency=low * NMU. * debian/rules dh_makeshlibs -V (Closes: #386899) -- Mark Purcell Thu, 21 Sep 2006 06:37:22 +0100 exiv2 (0.10-1.2) unstable; urgency=low * Non-maintainer upload. * Fix overly strict shlibs line. Closes: #386899 * Also adding conflict,replaces from libexiv2-0.10 to libexiv2. -- Andreas Barth Mon, 11 Sep 2006 20:04:40 +0200 exiv2 (0.10-1.1) unstable; urgency=medium [ David Schmitt ] * Non-maintainer upload. * Medium-urgency upload for RC bugfix. * Change package name from libexiv2 to libexiv2-0.10 to encode the full SONAME as well as for the C++ mt allocator ABI change, and conflict/replace libexiv2 accordingly. Closes: #339163, #382867. * Remove unnecessary libexiv2.{postinst,postrm} scripts, as they don't do anything that debhelper doesn't already do for us. * replace shlibs.local by dh_makeshlibs -V * make package bin-NMU-able by using ${binary:Version} and B-D on dpkg-dev (>= 1.13.19) [ Andreas Barth ] * Uploading NMU. -- Andreas Barth Sun, 10 Sep 2006 09:09:55 +0200 exiv2 (0.10-1) unstable; urgency=low * New Upstream Release. (Fixes: #370151) -- KELEMEN Peter Tue, 14 Jun 2006 00:02:57 +0200 exiv2 (0.9.1-1) unstable; urgency=low * New Upstream Release. * debian/control: -dev Suggests: -doc. -- KELEMEN Peter Sat, 4 Feb 2006 07:45:00 +0100 exiv2 (0.9-1) unstable; urgency=low * New Upstream Release. * debian/rules: Ship with upstream documentation by default. * debian/control: relax build dependencies. -- KELEMEN Peter Fri, 27 Jan 2006 20:41:35 +0100 exiv2 (0.7-10) unstable; urgency=low * C++ allocator change. (Closes: #339163) -- KELEMEN Peter Fri, 18 Nov 2005 00:08:45 +0100 exiv2 (0.7-9) unstable; urgency=low * Added missing Build-Depends: sharutils (Closes: #328376) * Standards-Version: 3.6.2 (no changes) -- KELEMEN Peter Thu, 15 Sep 2005 14:54:32 +0200 exiv2 (0.7-8) unstable; urgency=low * Upload to unstable. -- KELEMEN Peter Wed, 14 Sep 2005 15:11:33 +0200 exiv2 (0.7-7) experimental; urgency=low * Upload to Debian archive. -- KELEMEN Peter Mon, 18 Jul 2005 00:18:51 +0200 exiv2 (0.7-6) experimental; urgency=low * g++-4.0 rebuild. -- KELEMEN Peter Mon, 11 Jul 2005 03:36:38 +0200 exiv2 (0.7-5) experimental; urgency=low * fix multiple copyrights * strengthen lib deps -- KELEMEN Peter Sun, 19 Jun 2005 16:24:51 +0200 exiv2 (0.7-4) experimental; urgency=low * doc fixes -- KELEMEN Peter Sun, 19 Jun 2005 14:43:46 +0200 exiv2 (0.7-3) experimental; urgency=low * Make the package non-native. * Build with g++-4.0. -- KELEMEN Peter Sat, 18 Jun 2005 19:34:44 +0200 exiv2 (0.7-2) experimental; urgency=low * static libray to -dev * clean up -doc * cmd.txt as example in exiv2 -- KELEMEN Peter Thu, 16 Jun 2005 20:48:55 +0200 exiv2 (0.7-1) experimental; urgency=low * New upstream release. -- KELEMEN Peter Thu, 16 Jun 2005 10:46:37 +0200 exiv2 (0.6.2-1) experimental; urgency=low * Initial release. (Closes: #312490) -- KELEMEN Peter Wed, 8 Jun 2005 14:39:56 +0200