Commit Graph

2648 Commits

Author SHA1 Message Date
Andreas Sturmlechner
57883ee664
Fix build with EXIV2_BUILD_EXIV2_COMMAND=OFF 2017-10-13 18:54:11 +02:00
Dan Čermák
c686843e20 Added exception throw on Value pointer being null
v can be null if the typeId is invalid => throw an exception notifying
the user that his file is corrupted instead of the assertion
2017-10-11 09:46:04 +02:00
Dan Čermák
75940da0a6 Added check for overflows in calculation of size 2017-10-11 09:46:04 +02:00
Dan Čermák
8a586c74bb Fix for CVE-2017-14864, CVE-2017-14862 and CVE-2017-14859
The invalid memory dereference in
Exiv2::getULong()/Exiv2::StringValueBase::read()/Exiv2::DataValue::read()
is caused further up the call-stack, by
v->read(pData, size, byteOrder) in TiffReader::readTiffEntry()
passing an invalid pData pointer (pData points outside of the Tiff
file). pData can be set out of bounds in the (size > 4) branch where
baseOffset() and offset are added to pData_ without checking whether
the result is still in the file. As offset comes from an untrusted
source, an attacker can craft an arbitrarily large offset into the
file.

This commit adds a check into the problematic branch, whether the
result of the addition would be out of bounds of the Tiff
file. Furthermore the whole operation is checked for possible
overflows.
2017-10-11 09:46:04 +02:00
Dan Čermák
6c1ba331b9 Added arithmetic operation overflow error 2017-10-11 09:46:04 +02:00
Dan Čermák
ff18fec24b Fix for CVE-2017-14860
A heap buffer overflow could occur in memcpy when icc.size_ is larger
than data.size_ - pad, as then memcpy would read out of bounds of data.

This commit adds a sanity check to iccLength (= icc.size_): if it is
larger than data.size_ - pad (i.e. an overflow would be caused) an
exception is thrown.

This fixes #71.
2017-10-11 00:11:15 +02:00
Dan Čermák
65f45a3505 Added new error message to warn about corrupted metadata 2017-10-11 00:11:15 +02:00
Luis Díaz Más
4beb08e219 Merge pull request #105 from Kicer86/bigtiff
Work in progress - improvements for bigtiff
2017-10-07 09:38:49 +02:00
Luis Díaz Más
8e4aff29c2 Merge pull request #107 from D4N/tiffvisitor_nullptr_check
Use nullptr check instead of assertion, by Raphaël Hertzog
2017-10-06 15:57:55 +02:00
Michał Walenciak
2402a693fd adding missing include for numeric_limits 2017-10-06 11:27:46 +02:00
Luis Díaz Más
93bbf0cab1 Merge pull request #104 from piponazo/removeCpp11Feature
Remove cpp11 features
2017-10-06 05:40:39 +02:00
Dan Čermák
e026160556 Use nullptr check instead of assertion, by Raphaël Hertzog
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
2017-10-06 00:43:31 +02:00
Luis Díaz Más
bef6dad6c5 Merge pull request #103 from AdelieLinux/master
Amend fix for #9 to apply to other Unix systems
2017-10-05 14:45:05 +02:00
Michał Walenciak
b1a5d615c5 removing debug message 2017-10-04 22:46:43 +02:00
Michał Walenciak
64e05c0a7a improving fixes for #55 and #56 2017-10-04 22:46:20 +02:00
Luis Díaz Más
1a1a61b63d Remove reference to regex & c++11 from the man page 2017-10-04 19:42:11 +02:00
Luis Díaz Más
5b8894908b Remove all references to EXV_HAVE_REGEX and related code 2017-10-04 19:27:01 +02:00
Luis Díaz Más
bfd61bd0f1 Merge pull request #96 from Kicer86/master
Adding comment for issue #56
2017-10-04 09:27:54 +02:00
A. Wilcox
d775683f57
Amend fix for #9 to apply to other Unix systems
At least the musl libc on Linux has the same issue as Mac OS X: the
PTHREAD_RECURSIVE_* static initialiser does not exist.  This is a
documented and purposeful omission:

http://www.openwall.com/lists/musl/2017/02/20/3

This commit uses similar logic to the Apple test on other Unixes.
2017-10-04 00:17:48 -05:00
Luis Diaz Mas
2784b1f7f7 Remove EXIV2_ENABLE_LIBXMP variable, always build static XMP library, remove cmake OBJECT library 2017-10-03 19:54:57 +02:00
Michał Walenciak
7e90668011 Adding comment for issue #56 2017-10-02 21:45:05 +02:00
Luis Díaz Más
df3c77516c Merge pull request #94 from piponazo/configFileInBuildDirectory
Generate exv_conf.h file out of the source tree.
2017-10-02 11:38:22 +02:00
Luis Díaz Más
a9e3f17f31 Generate exv_conf.h file out of the source tree. Install it in the include folder. 2017-10-02 10:29:36 +02:00
Luis Díaz Más
686edde5ef Provide exiv2Config file automatically generated by CMake 2017-10-01 18:21:52 +02:00
clanmills
327b3f6c4d Fix https://github.com/Exiv2/exiv2/issues/83 2017-09-29 13:59:12 +01:00
Robin Mills
2f0104879a Merge pull request #81 from piponazo/robinChanges
Robin changes
2017-09-29 10:15:21 +01:00
clanmills
d43cd82002 Fix #80 2017-09-29 10:01:22 +01:00
Luis Díaz Más
8ad49f6d73 Robin changes in sync with master changes 2017-09-28 19:42:57 +02:00
Dan Čermák
74cb5bab13 Fixed wrong brackets: size*count + pad can overflow before the cast
=> Should fix #76 (most of the work has been done by Robin Mills in
   6e3855aed7)

The problem with #76 is the contents of the 26th IFD, with the
following contents:
tag: 0x8649
type: 0x1
count: 0xffff ffff
offset: 0x4974

The issue is the size of count (uint32_t), as adding anything to it
causes an overflow. Especially the expression:
(size*count + pad+20)
results in an overflow and gives 20 as a result instead of
0x100000014, thus the condition in the if in the next line is false
and the program continues to run (until it crashes at io.read).

To properly account for the overflow, the brackets have to be removed,
as then the result is saved in the correctly sized type and not cast
after being calculated in the smaller type.

The brackets have also been removed from bigtiffimage.cpp, where the
same issue is present.
2017-09-27 23:38:49 +02:00
Robin Mills
d8ae4484ae msvc support for bigtiffimage.cpp 2017-09-27 12:24:41 +01:00
Robin Mills
e1948c7ff9 msvc/bigtiffimage support 2017-09-27 11:17:11 +01:00
clanmills
6e3855aed7 Fix https://github.com/Exiv2/exiv2/issues/55 2017-09-27 09:20:13 +01:00
Robin Mills
197375dfa4 Merge pull request #72 from Kicer86/bigtiff
Some improvements, crash fix.
2017-09-24 20:43:31 +01:00
Michał Walenciak
9acc1c56a7 adding ifd8 and long longs to is8ByteType() 2017-09-24 16:07:26 +02:00
Michał Walenciak
4837d8cf58 changing header + some warning fix 2017-09-22 21:22:55 +02:00
Robin Mills
6fd0bc9e10 Adding ./configure support for bigtiffimage.cpp 2017-09-22 19:05:40 +01:00
clanmills
678e2b8517 Explicitly list files to be processed CMake generated builds [remove file(GLOB...)] 2017-09-22 10:05:11 +01:00
Michał Walenciak
734a2c3d57 fixing TODO 2017-09-21 18:15:12 +02:00
Michał Walenciak
e3ff1ba694 fixing indent 2017-09-21 18:15:12 +02:00
Michał Walenciak
4629227358 fix for IPTCNAA
dir_offset was used instead of offset
2017-09-21 18:15:12 +02:00
Michał Walenciak
4f6f5b4946 removing conditional_byte_swap* functions 2017-09-21 18:15:12 +02:00
Michał Walenciak
b6e79357de Adding 8-byte swap functions + consts 2017-09-21 18:15:12 +02:00
Michał Walenciak
f96d84ba8c dropping dead code 2017-09-21 18:15:12 +02:00
Michał Walenciak
50ecf672b5 using Internal::indent() 2017-09-21 18:15:12 +02:00
Michał Walenciak
f8ac7a5dc3 renaming Tiff to StandardTiff 2017-09-21 18:15:12 +02:00
Michał Walenciak
d460bbdb3f fix for standard tiff case 2017-09-21 18:15:12 +02:00
Michał Walenciak
81aa8828e0 applying dff941ad7f 2017-09-21 18:15:12 +02:00
Michał Walenciak
874daede53 fixing broken print for 'offset' column 2017-09-21 18:15:12 +02:00
Michał Walenciak
8b07982bf2 variable names cleanup 2017-09-21 18:15:12 +02:00
Michał Walenciak
1a1dc3afd4 simplifying code 2017-09-21 18:15:12 +02:00