3723 Commits (c0b663b7ea47aff9fcdd74533bd922ff70fc9bf1)

Author SHA1 Message Date
Peter Kovář 7b5854e26e [WIP] Redefine tags 4 years ago
Peter Kovář f0a321dedb [WIP] Base Media File Format 4 years ago
Robin Mills c40eccd062 fix_1464_sony2010e Fix c++ code 4 years ago
Peter Kovář c608148820 [WIP] Added box types 4 years ago
Ingo Weyrich a6a47346a8 Use a.rfind(b, 0) == 0 instead of a.find(b) == 0 to reduce processing time when checking that a starts wit b, #1459 4 years ago
Peter Kovář e19fca6640 Small corrections 4 years ago
Robin Mills f5c6e7595f Fix Linux build-breaker when ENABLE_ISOBMFF=False and EXIV2_TEAM_WARNINGS_AS_ERRORS=On 4 years ago
Robin Mills fa39234275 Fixing Linux build/test issues. 4 years ago
Robin Mills 0844e1bbfb Rename class ISOBMFF => class bmffImage to match other image handlers. Removed C++11 style code. Removed unused code. 4 years ago
Robin Mills 460a802671 Fix image handler to give jp2image code higher priority than the next isobmff code. 4 years ago
Peter Kovář 92469f4c27 [WIP] Add ISO/IEC Base Media File Format 4 years ago
czgnp ddd326fc18
Update canonmn_int.cpp
Added Sigma 35mm/1.4 to lens id 368 and changed resolver to look at both focal length and aperture. Fixed canonEv so lenses with f/6.3 report as f/6.3 (they actually report f/6.2 to camera)
4 years ago
Christoph Hasse 056359d89b fix formatting 4 years ago
Christoph Hasse 93869e1311 use EXV_PRINT_TAG macro instead of specific print function 4 years ago
Christoph Hasse 51bd57e387 add shutter mode and mechanical shutter count to nikon makernote 3 4 years ago
Alex Esseling cf9be2cc3b fixing exceptions and reordering tags 5 years ago
Alex Esseling ff2ffb1909 add_cr3_tags 5 years ago
Miloš Komarčević 19decc1193
Merge pull request #1436 from Exiv2/dng_1.6
Add DNG 1.6 support
5 years ago
Christoph Hasse 4c2ac99673 try and fix ci-build 3/N 5 years ago
Christoph Hasse f740fcd823 try and fix ci-build 2/N 5 years ago
Christoph Hasse 814357a6d1 try and fix ci-build 5 years ago
Christoph Hasse 2909e9cacc Implement handling of new Nikon LensData version 8.0 and 8.01 5 years ago
Miloš Komarčević 240179514c Add DNG 1.6 support 5 years ago
Robin Mills 9b5108583b Revert "Revert "fix_1431_binary_comment.""
This reverts commit 2866415322.
5 years ago
Robin Mills c6167258ce Revert "Restored 0.27.2 "toString()" behaviour of Exifdatum.value().toString() for CommentValue."
This reverts commit ecae9dc6eb.
5 years ago
Robin Mills 2866415322 Revert "fix_1431_binary_comment."
This reverts commit b6bf20a897.
5 years ago
Robin Mills af8699a8ac Revert "Fixing test suite."
This reverts commit 23f39b60f7.
5 years ago
Robin Mills 23f39b60f7 Fixing test suite. 5 years ago
Robin Mills ecae9dc6eb Restored 0.27.2 "toString()" behaviour of Exifdatum.value().toString() for CommentValue. 5 years ago
Robin Mills b6bf20a897 fix_1431_binary_comment. 5 years ago
Miloš Komarčević 01a146e014
Merge pull request #1427 from Exiv2/prettyprint_planarconfig
Pretty print PlanarConfig
5 years ago
Miloš Komarčević 5e7a563407 Pretty print PlanarConfig 5 years ago
Miloš Komarčević 85e3a31242 Promote remaining SHORT/LONG tags default type 5 years ago
Robin Mills 866d213983
Merge pull request #1409 from Exiv2/fix_1402_rafimage_0.27
fix_1402_rafimage_0.27
5 years ago
Robin Mills 2466c78fe6 Calming Test Suite concerning Continuous and CropMode confusion. 5 years ago
Robin Mills a71eb24956 Pointless change to trigger CI to build again. 5 years ago
Robin Mills e032586d74 Code/comment tidy. 5 years ago
Robin Mills 9b877f8506 Success. It's working! 5 years ago
Miloš Komarčević 0b5ba68e54
Merge pull request #1412 from Exiv2/dng15_0.27
Add DNG 1.5 tags and values
5 years ago
Robin Mills c48189afa7 Add FujiIFD to TiffCreator::tiffGroupStruct_ 5 years ago
Robin Mills a8b549f7df Remove debugging code. 5 years ago
Miloš Komarčević 4ab2eb3ec6 Add DNG 1.5 tags and values 5 years ago
Miloš Komarčević 13032f44f1 Fix Pana tag typo and improve Fuji tag description 5 years ago
Robin Mills 45119e3260 WIP: working to understand how to support tiffIfd in tiffvisitor_int.cpp 5 years ago
Miloš Komarčević b410eb3550 Complete DNG 1.4 spec support 5 years ago
hanno@schwalm-bremen.de a2f4082beb Revert exv commit and remove empty line. 5 years ago
hanno@schwalm-bremen.de abce0ac300 Fix typo and remove empty line. 5 years ago
hanno@schwalm-bremen.de 01a449544c Adding support for DefaultUserCrop and BaselineExposureOffset
Nothing special, copied from dng 1.5 reference.
5 years ago
Robin Mills 76514a1654 WIP #1402 rafimage::printStructure() improved formatting. 5 years ago
Robin Mills 49fa54d7f2
Merge pull request #1407 from FreddieWitherden/0.27-maintenance
Add support for Fuji's CropMode tag.
5 years ago
Freddie Witherden 8f1f6fce1f
Add support for Fuji's CropMode tag. 5 years ago
Robin Mills e045fd666a
Merge pull request #1389 from Exiv2/fix_929_exif2.31_0.27
fix_929_exif2.32_0.27
5 years ago
Robin Mills 5f9daf725b Moved orphaned declaration of exifGPSDirRef. 5 years ago
Miloš Komarčević c688ed448d Moved ambient tags to Exif only list, other refactoring
Handle more TIFF/EP vs Exif differences

Moved translated values (GPS, Exif) closer to their respective lists
5 years ago
Robin Mills 829ed7da15 Clarified definition and use of enum SectionId @kmilos: please review/approve. 5 years ago
Robin Mills 4017f79c83
Merge pull request #1400 from Exiv2/fix_1393_iptc_tags_web_0.27
fix_1393_iptc_tags_web_0.27
5 years ago
Robin Mills 4c52891549 Fix tag GPSHPositioningError to use printValue() pretty-printer. 5 years ago
Robin Mills a59a382961 I hope I've made a better job of this at this attempt. I don't thing the "section" enum is of much importance. I don't believe anything in particular is done with with it.
```cpp
    /*!
      @brief Section identifiers to logically group tags. A section consists
             of nothing more than a name, based on the Exif standard.
     */
    enum SectionId { sectionIdNotSet,
                     imgStruct, recOffset, imgCharacter, otherTags, exifFormat,
                     exifVersion, imgConfig, userInfo, relatedFile, dateTime,
                     captureCond, gpsTags, iopTags, mpfTags, makerTags, dngTags, panaRaw,
                     tiffEp, tiffPm6, adobeOpi,
                     lastSectionId };
```

I pleased with the documentation and drawing I have added to the book concerning the Exif Specification.

https://clanmills.com/exiv2/book/#Exif
5 years ago
Robin Mills e887b6487f fix_1393_iptc_tags_web_0.27 5 years ago
Freddie Witherden ff0dc4b1df
Add support for Sony lens aberration correction parameters. 5 years ago
Miloš Komarčević 12f7002493 Minor DNG related changes after review 5 years ago
Miloš Komarčević e92d5f2e61 Add remaining DNG 1.3 tag values 5 years ago
Miloš Komarčević 682927ee25
Also use existing light source pretty print for DNG 5 years ago
Miloš Komarčević 2113dfeb8a Add DNG CFALayout values 5 years ago
Miloš Komarčević 04a9743a1c Fix syntax error, improve value name style 5 years ago
Miloš Komarčević a2a7ee2733 Add some DNG related tag values 5 years ago
clanmills 58ae0b0752 fix_929_exif2.31_0.27 5 years ago
Robin Mills 3e78cac3f4
Merge pull request #1384 from Exiv2/fix_1380_binary
Disable exiv2 option --binary (0.27->maintenance)
5 years ago
Miloš Komarčević 1038e62a42 actions: simplify print summary using easyaccess 5 years ago
Miloš Komarčević f6abec4432 exiv2 pr uses easyaccess API (co-authored with clanmills) 5 years ago
Miloš Komarčević 5e92d5e078 Fix easyaccess-test 5 years ago
Miloš Komarčević 98f4effeea Add DateTimeOriginal to easyaccess 5 years ago
Miloš Komarčević 189e0c9338 Add more easy accessors for Exif & TIFF/EP overlap 5 years ago
clanmills bfee7abfc5 Disable exiv2 option --binary 5 years ago
Olli Lupton eec8e8902f Add LensType entry for Olympus M.Zuiko Digital ED 17mm F1.2 Pro lens. 5 years ago
Leonardo Brondani Schenkel 0f6fef7507 Make lens name consistent with models 150 and 368 5 years ago
Leonardo Brondani Schenkel c4d18d02e7 Detect Sigma 18-35mm f/1.8 DC HSM (firmware 2.x)
On Canon bodies and lens firmware 1.x, this lens identifies itself using
model number 150. Starting with firmware 2.x, this lens now identifies
itself using model number 368.

Exiv2 was correctly identifying the former but not the latter.

This commit also fixes a pre-existing bug in which exiv2 was not
correctly disambiguating lenses using model number 368.
5 years ago
Luis Díaz Más 9eb058bd43 Modify strncpy0 to avoid warning 5 years ago
Luis Díaz Más 44debddf4e Hide zlib absolute path in cmake config file 5 years ago
Luis Díaz Más 8dc42199e8 Hide exiv2-xmp dependency in CMake config file: 5 years ago
Luis Díaz Más b9164d9f8b Revert "change implementation of Exiv2::base64encode() to adopt implementation from same URL as base64decode()."
This reverts commit b596f311f4.
5 years ago
clanmills b596f311f4 change implementation of Exiv2::base64encode() to adopt implementation from same URL as base64decode(). 5 years ago
clanmills c7bcfcfbf8 replace base64encode in src/futils.cpp 5 years ago
Robin Mills 55bdaafebf
Merge pull request #1341 from Exiv2/fix_1278_nls_test_0.27
Fix 1278 nls test 0.27
5 years ago
Robin Mills 5240630849 fix_1353_mingw_toolchain_0.27 5 years ago
clanmills 2adde8dd73 Fix compiling http.cpp and reinstate centOS on gitLab. 5 years ago
Robin Mills bc01aac114
Merge pull request #1351 from Exiv2/fix_1343_png_0.27
Fix 1343 png 0.27
5 years ago
clanmills 9fa6d3965a C++ changes requested by @piponazo. Fix python png_test() recommended by @LeoHsiao1. Update reference output. 5 years ago
clanmills 834dca39d0 Code changes 5 years ago
Luis Díaz Más 778479556f Include winsock2 at the beginning of http.cpp 5 years ago
Luis Díaz Más 30773c92a3 WIN32_LEAN_AND_MEAN propagated with exiv2lib target 5 years ago
Luis Díaz Más b304244766 Move winsock2 inclusion to http.cpp 5 years ago
Robin Mills 604a268059 Second effort to unexpose winsock2.h from include <exiv2/exiv2.hpp> using EXIV2_BUILDING_EXIV2 mechanism. 5 years ago
clanmills 7ff0e0613a fix_1335_winsock2_0.27 5 years ago
clanmills e0e2a71a48 Fix: https://travis-ci.org/github/Exiv2/exiv2/jobs/730867927 5 years ago
clanmills 48afa7548d fix_1329_remove_bigtiff_0.27 5 years ago
clanmills 37cc2db72d fix 1307 ASAN issues with RemoteIo 5 years ago
Luis Díaz Más f39b23806b Assume existence of stdint.h 5 years ago
Luis Díaz Más b7ee13eb63 Use ctime instead of time.h 5 years ago
Jan Tojnar 306c8a6fd4
cmake: Fix include_directories for exiv2lib target
The headers are installed to ${CMAKE_INSTALL_INCLUDEDIR} but the CMake config was hardcoded to include directory.
5 years ago
Jan Tojnar 48f2c9dbba
cmake: Fix paths with absolute GNUInstallDirs
It is not generally true that `CMAKE_INSTALL_<dir>` variables are relative paths:

https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files
https://github.com/jtojnar/cmake-snips#assuming-cmake_install_dir-is-relative-path

Let's join them properly as paths, not strings.

On Windows, the absolute paths will likely remain unsupported as neither the CMake function,
nor the C++ code is able to detect absolute paths.

Signed-off-by: Jan Tojnar <jtojnar@gmail.com>
5 years ago
Robin Mills 963c91fe8a fix_1266_GPSProcessingMethod 5 years ago
tbeu f61fa2ed9d
Fix write ability flags of PSD files (#1260) 5 years ago
Robin Mills 22ed9b157b Fixed typo declaration of pad when writing ICC profile. 5 years ago
Robin Mills 181dd47385 Fix correctly this time and tested with the user files. Test suite updated to use Reagan2.jp2 5 years ago
Robin Mills b91de7acd0 fix_1236_0.27 5 years ago
Robin Mills 58fb9f850b
Merge pull request #1227 from Exiv2/v0.27.3_RC2
v0.27.3 rc2
5 years ago
clanmills 7383d96d47 Fix compiler error when using EXIV2_DEBUG_MESSAGES. 5 years ago
Robin Mills 08d1cd84c2 Don't compile localtime.c (hurray) 5 years ago
Robin Mills 6b4a9e5b40 fix_1219_remove_localtime_0.27 5 years ago
Robin Mills 7bf40a2408 fix_1211_c++11_0.27. I'll explain this in the PR. 5 years ago
clanmills 6d7a5266ea fix_1219_mingw_crw_date_0.27 5 years ago
Robin Mills 3f1a6a509b
Merge pull request #1211 from Exiv2/cpp98_cygwin_0.27
http.cpp doesn't compile with C++/98 on Cygwin and MinGW/msys2.
5 years ago
clanmills 0215608071 http.cpp doesn't compile with C++/98 on Cygwin and MinGW/msys2. 5 years ago
clanmills d07a1f94f8 fix_547_0.27 5 years ago
clanmills e7d113dc42 fix_1208_NikonLens_0.27 5 years ago
clanmills ea28be68e9 Fixing fedora/mingw build breaker. https://gitlab.com/D4N/exiv2/-/jobs/555626122 Thanks to @D4N for this discovery. 5 years ago
clanmills 5f6738a098 get http.cpp to call WSAStartup() on Cygwin and MinGW 5 years ago
clanmills 5b4743301e The smart robot at codeCover/lgtm spotted typos in the code! Robot's almost as smart as Dan! 5 years ago
clanmills c920f2ac44 CurlIo/http object to throw kerFileOpenFailed and not kerTiffDirectoryTooLarge 5 years ago
clanmills f768fc0a42 RemoteIo/http object to throw kerFileOpenFailed and not kerTiffDirectoryTooLarge 5 years ago
clanmills 2bad338b9d Fix compiler warning on macOS about enforce condition being always true. 5 years ago
clanmills ec979d522a Changes following review. 5 years ago
clanmills 5b07d9d8d6 Removed print0x9286() from tags.cpp. Codecov detected that this code is no longer used! Amazing.
Functionality now in exif.cpp std::ostream& Exifdatum::write(std::ostream& os, const ExifData* pMetadata) const.
5 years ago
clanmills 7515d85a09 Fix exiv2 option --binary to enable report of long binary values. 5 years ago
clanmills 9df691c0c5 Report Comments as charset=encoding data (not charset="encoding" data) 5 years ago
clanmills cca0245d87 Fix compiler warning. 5 years ago
clanmills 43b06b6814 Don't allow binary into the output stream! 5 years ago
Robin Mills a1abe21a71 Discussion: https://github.com/Exiv2/exiv2/issues/1200#issuecomment-623975537 5 years ago
Robin Mills 99aa8881a2 $ make version_test segfaults on FreeBSD when called from an ssh script. 5 years ago
Robin Mills 2e568e762b Fix version= for Visual Studio 2019. 5 years ago
clanmills 0a06dc9ee4 Issue identified in #1101 master/MinGW/Qt. Apply the change here (although this is working on 0.27-maintenance) 5 years ago
clanmills cd5c3e4ff9 Remove target_compile_features(exiv2 PRIVATE cxx_std_98) from src/exiv2 5 years ago
clanmills 63a13e8620 Adding option -DEXIV2_BUILD_USE_C++11 5 years ago
Robin Mills df04671976 Enforce cxx_std_98 in samples, unit_tests, and exiv2 application (to eliminate 2305 GCC unique_ptr warnings) 5 years ago
Robin Mills 47d89a56bb
Merge pull request #1176 from Exiv2/0.27_cxx_standard
fix_1163 Require c++98 privately only in library target
5 years ago
clanmills 92f2458229 fix_1180_date_separator 5 years ago
Luis Diaz Mas 235087af4e Do not call tell() in File::eof() - Fix tests & performance 5 years ago
Luis Diaz Mas fabfcac274 Require c++98 privately only in the library target 5 years ago
clanmills 904fa19d1c Code changes 5 years ago
clanmills 13565be3d2 Change for solaris. 5 years ago
clanmills 3226573376 fix_1004_0.27 5 years ago
Robin Mills e077261c99
Merge branch '0.27-maintenance' into fix_1033_0.27 5 years ago
Robin Mills 817b2073a1
Merge branch '0.27-maintenance' into fix_1045_0.27 5 years ago
Robin Mills 2e19ee08c5
Merge branch '0.27-maintenance' into fix_1047_0.27 5 years ago
Robin Mills 181cab661b
Merge branch '0.27-maintenance' into fix_1091_0.27 5 years ago
Robin Mills 9cbcb8878c
Merge branch '0.27-maintenance' into fix_1069_0.27 5 years ago
clanmills 3ee25009ee fix_1033_0.27 5 years ago
clanmills cc1a6033db fix_1045_0.27 5 years ago
Robin Mills adf97f997d
Merge branch '0.27-maintenance' into fix_1091_0.27 5 years ago
clanmills ef58603260 fix_1047_0.27 5 years ago
clanmills c51573c92e fix_1049_0.27 5 years ago
Robin Mills 3c01ad78f3
Merge branch '0.27-maintenance' into fix_1069_0.27 5 years ago
clanmills 571d056222 fix_1091_0.27 5 years ago
clanmills 9333f0d3f5 fix_1069_0.27 #1069 5 years ago
clanmills d0d6ff2e9b fix_1059_0.27 5 years ago
clanmills c49cdd6395 Code changes. 5 years ago
clanmills 18ed65a25f fix_Sony2010e_0.27 Thanks to @sridharb1 5 years ago
clanmills a7683f95a7 Detab src/pentaxmn_int.cpp 5 years ago
Robin Mills 0fe6817177
Merge branch '0.27-maintenance' into fix_1084_0.27 5 years ago
clanmills 8f15784314 fix_1084_0.27 5 years ago
Robin Mills 8382225850
Merge branch '0.27-maintenance' into fix_1099_0.27 5 years ago
Robin Mills 2956309afd
Merge branch '0.27-maintenance' into fix_1099_0.27 5 years ago
clanmills 7658d8aefd fix_macOS_0.27 5 years ago
clanmills 698b418f73 fix_1097_0.27 5 years ago
clanmills 82087b58e4 fix_1099_0.27 5 years ago
dbeichl 188ddab7cc
Merge branch '0.27-maintenance' into 0.27-maintenance-makernote-update 5 years ago
Daniel Beichl 3fe4460a23 Add various attributes for canon maker note
- Decode Attributes CameraType, AEB, SlowShutter, AutoISO,
  CameraTemperature, FlashGuideNumber, BulbDuration and AutoRotate
- Small signedness fix to decode printFiFocusDistance to return Infinite
5 years ago
Daniel Beichl 529fa8770f Add nikon 153 point phase af 5 years ago
Daniel Beichl b45c82e091 Add some values to panasonic focus mode attribute 5 years ago
Robin Mills cfdd1c7b3f Pointless change to trigger CI which is beefing about test_issue_987 which has been removed. 5 years ago
Robin Mills 8de479f83e
Merge branch '0.27-maintenance' into fix1001_rename_AFPrimaryPoint 5 years ago
clanmills db1be4ae8e fix_1046_pt-GPSProcessingMethod 5 years ago
Fredrik Strandin 5360d82c4a Add ID for Tokina atx-i 11-16mm F2.8 CF (Nikon)
Fixes #1078

(cherry picked from commit 2870a1648e86b777afa0ae1540ea4791482d1354)
6 years ago
Andreas Sturmlechner 0890d66a6e EXIV2_ENABLE_SSH: Fix compatibility with >=libssh-0.9.2
0.9.1 remains broken regardless and is beyond fixing in this place.

Build-tested with both libssh 0.9.0 and 0.9.2.

Solution copied from KDE's kio-extras commit 24506c2af8d1904a99538543804306c6c2b81ca2
6 years ago
David-Tillmann Schaefer b8bf9cc4fd changes comma in aperture to dot to match the other exif entries
(cherry picked from commit 054bc9068b3c4e83be97e42d1a8c9829c2c83e1b)
6 years ago
derselbst 70b0c17421 Fix a memory leak in CiffHeader::read()
Memory for pPadding_ was allocated with new[] .
6 years ago
derselbst ccf4b59c91 Merge remote-tracking branch 'origin/0.27-maintenance' into fix1001_rename_AFPrimaryPoint 6 years ago
Luis Díaz Más 20a9e5affe Fix format-overflow warnings by using bigger buffer 6 years ago
clanmills 8859209b95 fix_1004_lens_exiftool_compatibility 6 years ago
Robin Mills 4852bd2ab2 fix_910_remote_io_block+1 6 years ago
Jens Georg b7890776c6 crwimage: Check offset and size against total size
Corrupted or specially crafted CRW images might exceed the overall
buffersize.

Fixes #1019

(cherry picked from commit 683451567284005cd24e1ccb0a76ca401000968b)
6 years ago
Robin Mills 05538ebea2 fix1001_rename_AFPrimaryPoint 6 years ago
Robin Mills 7844b11e4b
[xmpsdk] Add XMP Initialisation/Cleanup code to all main() programs
- update documentation
- Removed redundant calls to Exiv2::XmpParser::terminate() (legacy of our
  discusssion with @tester0077).
- this fixes #976
6 years ago
clanmills 1b917c3f7d Fix #1011 fix_1011_jp2_readmetadata_loop 6 years ago
clanmills 4cf040ac4a
Install man page from man/man1/exiv2.1 6 years ago
clanmills 90f9f0bc19
Add support for Exif.Canon.AF tags to be read from images
This PR (and fix981_canonAutoFocus2) use a decoder listed in TiffMappingInfo to
decode Exif.Canon.AFInfo. The decoding function "manufactures" Exif tags such as
Exif.Canon.AFNumPoints from the data in Exif.Canon.AFInfo. These tags must never
be written to file and are removed from the metadata in
exif.cpp/ExifParser::encode().

Three of the tags created (AFPointsInFocus,AFPointsSelected, AFPrimaryPoint) are
bitmasks. As the camera can have up to 64 focus points, the tags are a 64 bit
mask to say which points are active. The function printBitmask() reports data
such as 1,2,3 or (none).

This decoding function decodeCanonAFInfo() added to TiffMappingInfo manufactures
the new tags. Normally, tags are processed by the binary tag decoder and that
approach was taken in branch fix981_canonAf. However, the binary tag decoder
cannot deal with AFInfo because the size of some metadata arrays cannot be
determined at compile time.
6 years ago
sat3ll d59d929eb2
add ID for Sigma APO MACRO 180mm F3.5 EX DG (nikon)
(cherry picked from commit 9852e21761d962a7deb1e5e9673b3b5f5018dbfb)
6 years ago
Marek Kubica 515569030b Remove AF designator from Tamron 70-200 G1
This removes the AF from the name of the lens thus matching the name
that lensfun and exiftool determine.

(cherry picked from commit a573f9795baa1cf8a68296a80114fdc575f84319)
6 years ago
Kevin Backhouse edb4bf78ca Add bounds check to MemIo::seek(). (#944)
- Regression test for missing bounds check in MemIo::seek()
- Add bounds check to MemIo::seek(), this fixes CVE-2019-13504

(cherry picked from commit bd0afe0390439b2c424d881c8c6eb0c5624e31d9)

Additional fixes for 0.27:
- Add fix for the linux variant of MemIo::seek
- Change type of variable from unsigned to signed
6 years ago
Robin Mills 76d2798172 Pushing very helpful suggestion by @lantw44 6 years ago
clanmills 94a777609e fix947_FreeBSD_BasicError_typeinfo 6 years ago
Luis Díaz Más e925bc5add Fix integer overflow by checking size against header_size
Note that the problem occurs when data_size is less than header_size
what causes a buffer overflow in &data[i]

Co-Authored-By: D4N <dan.cermak@cgc-instruments.com>
6 years ago
Luis Diaz Mas c4bfd0f0f1 Remove linkage with -ldl
The code using dlopen/dlclose/etc was removed from version.cpp in the past
6 years ago
Luis Díaz Más 113136e134 Replace DEBUG with EXIV2_DEBUG_MESSAGES
Fixes #926
6 years ago
Kevin Backhouse cb7dc5a528 Check for integer overflows in mrwimage.cpp 6 years ago
Robin Mills ab375fb074 Add support for FocusPosition in Sony RAW files (#906)
* Fix 582 Add support for FocusPosition in Sony RAW files
* Thanks to @boardhead sonyFpCrypt() works correctly. Removed debug code. Fixed typos.
* Update doc/templates/Makefile to process Sony2Fp
* Following review by @boardhead. Renamed sonyFpCrypt() as sonyTagDecipher().
* Fixed writing the tag thanks to @boardhead explaining encipher/decipher.
  Sadly, ArrayCfg/crpyt does not know if he's encrypting/decrypting.
  I've added a sniff in TiffEncoder::visitBinaryArrayEnd to avoid changing the API.
* Added URL to discussion concerning sonyTagCipher()
* make sonyTagCipher() a static function with no external visibility.
6 years ago
Robin Mills 0a47d93ccf Add README-SAMPLES.md and remove exiv2samples.1 (#921)
* Add README-SAMPLES.md and remove exiv2samples.1
* Remove samples man page from CMake
* Add all sample programs to Doxygen.
* Adding links to source code on exiv2.org

Authored-By: Robin Mills <robin@clanmills.com>
Authored-By: Luis Díaz Más <piponazo@gmail.com>
6 years ago
Luis Díaz Más df5054b910
Merge branch '0.27-maintenance' into 0.27-use-libssh-config 6 years ago
Andreas Sturmlechner e85ce17fc9
Switch to libssh's own libssh-config.cmake
This is provided by libssh since 2013.
6 years ago
Andreas Sturmlechner 6819f2ac45
Fix install path of exiv2ConfigVersion.cmake
This seems to have been caused by duplicate work between master branch
and 0.27-maintenance branch, as commit 3b48249eeb350301dfb3efa3ba6f7d7b162455be
had already got that right.
6 years ago
Robin Mills db3a260167 Changes following code review. 6 years ago
Robin Mills b6f82a8f58 Change byte order in nikonAf22Cfg to invalidByteOrder (see #880 and #885). 6 years ago
Robin Mills bd1e7522c2 Simplification of TiffDecoder::decodeTiffEntry(). 6 years ago
Robin Mills b02c80f7e4 fix646_NikonAF22 6 years ago
Luis Diaz Mas 43ed51f609 DLL information depends now on proper definition 6 years ago
clanmills d8a513b7df Updated following code review. 6 years ago
clanmills 742cd5885b Fixing Windows build-breaker for EXV_UNICODE_PATH in `Protocol fileProtocol(const std::wstring& path)` 6 years ago
clanmills ab0b97c729 fix895-ICCProfile-FalseWarning 6 years ago
Robin Mills 5a3afa9cbe Update man page src/exiv2.1 to clarify overwrite policy with command rename
This fixes #662
6 years ago
sat3ll 2beefab719 Add Tamron SP 70-300mm f/4-5.6 Di VC USD (Model: A030) (Nikon Mount)
(cherry picked from commit 1640ac8d0ca8bbb975f7a986bf0537545423fffc)
6 years ago
Robin Mills 2451e7ba56 fix880_NikonEndian 6 years ago
clanmills b1ed1bf246 fix743_NikonSigmaArtLens 6 years ago
Kevin Backhouse b35c43e7c2 Remove call to atol, which might read off the end of the buffer. (#870) 6 years ago
Kevin Backhouse 9092b422e6 Prevent out-of-bounds read. (#868) 6 years ago
Kevin Backhouse 6068df4c01 Add better bounds checking in PngImage::printStructure(). (#862) 6 years ago
Kevin Backhouse 109d5df7ab Check bounds of jpg_img_off and jpg_img_len. (#858) 6 years ago
Kevin Backhouse 1c1436e94e Add bounds check of resourceSize. (#856) 6 years ago
Kevin Backhouse 80cd0d2990 Add bounds check on allocation size. (#854) 6 years ago
Kevin Backhouse 81ae213c71 Check bounds of allocation size. (#848) 6 years ago
Kevin Backhouse 7798ae2557 Throw an exception if the data location is invalid. (#842) 6 years ago
Kevin Backhouse 8dc87a1214 Add bounds check. (#840) 6 years ago
Kevin Backhouse 43f154f44b Merge two enforces into one. 6 years ago
Kevin Backhouse d3e69f6d2c Add bounds check on allocation size. 6 years ago
Kevin Backhouse c0ecc2ae36 Avoid integer overflow. 6 years ago
Robin Mills f4a37c63f2 version.cpp Pragma removed. Platform includes simplified.
cmake/packaging.cmake        Changed comment about VS version numbers
6 years ago
Robin Mills b8af098285 Removed redundant _MSC_VER pragma to link psapi as the link is specified in CMakeLists.txt.
Simplified the platform include files required to support getLoadedLibraries()
6 years ago
Robin Mills 955962eaa8 Code revisions after review by @piponazo 6 years ago
Robin Mills b0a9cb5624 NetBSD/FreeBSD Support 6 years ago
Kevin Backhouse 6a44698abc Small change to comment. 6 years ago
Kevin Backhouse 3c818f49d9 Revert accidental whitespace change. 6 years ago
Kevin Backhouse 3faeaefbf5 Improve portability of bounds checks. 6 years ago
Kevin Backhouse 86816c0280 Fix signed/unsigned mismatch. 6 years ago
Kevin Backhouse caa4e6745a Avoid negative integer overflow when `filesize < io_->tell()`.
This fixes #791.
6 years ago
clanmills db870755b9 fix #818. Restore 0.25 behaviour of `$ exiv2 -g image ...` to apply grep to keys. 6 years ago
Kevin Backhouse 8cd95e2218 Avoid negative integer overflow when `chunkLength == 0`.
This fixes #789.
6 years ago
Luis Díaz Más f05d100579 CURL lib and include directories private for exiv2lib
(cherry picked from commit 5d64a0b11c5a45dd9d58c56e946301f3f98942a7)
6 years ago
Kevin Backhouse 6fa2e31206 Avoid negative integer overflow when `iccOffset > chunkLength`.
This fixes #790.
6 years ago
Robin Mills fe3f3248dd Fix in sidecar files #589 6 years ago
Kevin Backhouse ae20c30805 Avoid null pointer exception due to NULL return value from strchr.
This fixes #793.
6 years ago
Robin Mills 78676b2a02 Fix #798 6 years ago
Robin Mills 7a9c928efb Fix to exiv2.1 man page for v0.27.1 6 years ago
Robin Mills 514ae0fa89 Fix #780 6 years ago
Luis Díaz Más 51f3910413 [jp2image] Limit data representation to 30 bytes
- fixes #744
6 years ago
D4N adfc01f2e0 Update tests/bugfixes/github/test_issue_742.py
Co-Authored-By: piponazo <piponazo@gmail.com>
(cherry picked from commit 39d8904696338d5bd4a9c7e9a96a798a791d0973)
6 years ago
Luis Diaz Mas 25ddbaa6c0 Make subBox.length check in jp2image.cpp more robust
(cherry picked from commit a154b992ccad71a7d95a94cdedb933fa66a51b61)
6 years ago
Luis Díaz Más 8c81e1146c clang-format Jp2Image::printStructure()
(cherry picked from commit b6e4ca0a8cfff1ad0f6040901382863cccee33cb)

# Conflicts:
#	src/jp2image.cpp
6 years ago
Luis Díaz Más 051b5d9df1 Fix #742 by detecting incorrect subBox size
(cherry picked from commit 1bdd3eab5ebdde324dbfecc3fb6d6495b32d2e4d)
6 years ago
Dan Čermák 5e6c2855ce
[NikonMakerNote] Fix overread in Nikon1MakerNote::print0x0088
This function was printing the string from the array of strings nikonFocusArea,
but it wasn't verifying that the array index is actually valid.
Now this function will output "Invalid value" instead of crashing.
6 years ago
clanmills 282e99b6b0 Fix #610
(cherry picked from commit 54367e18ed0bf8bae6d8449341a6f82779f6d3c7)
6 years ago
Luis Díaz Más 9296067b95 Fix access to null pointer in TiffParser 6 years ago
Luis Díaz Más 4265ac5e0f exiv2-xmp linked privately 6 years ago
Seth Parker 892d39e3bf Add missing libintl include dirs to exiv2lib_int and exiv2 6 years ago
Michał Walenciak 6887822243 removing unused header generation 6 years ago
Michał Walenciak a7340a3801 removinf usage of EXIV2_DEPRECATED macro
It can expand to [[deprecated]] which cannot be combined
with result of EXIV2API macro expansion: __attribute__(...)
6 years ago
Michał Walenciak aae88060ca Use ${CMAKE_INSTALL_LIBDIR} as proper files location 6 years ago
Michał Walenciak 4ddd44e9da create & install exiv2ConfigVersion.cmake 6 years ago
Luis Diaz Mas 127c2eac0e Fix warnings on MSVC 7 years ago
Luis Díaz Más 704fc56d52 Keep the profileName from readMetadata and use it in writeMetadata 7 years ago
Luis Díaz Más e385599067 Refactoring to make the doe more readable. Fix icc tests 7 years ago
Luis Díaz Más 436b0f87b5 Add missing header when -DDEBUG is present 7 years ago
Luis Díaz Más d1097fab59 Factor our function to read PNG Chunk info 7 years ago
Luis Díaz Más 914a8c5585 Factor out exception throw in different places inside isPngType 7 years ago
Luis Diaz Mas 88f22e13cb Fix ICC profile in PNG images 7 years ago
Luis Diaz Mas 6abdb7e77a Install new file exiv2lib_compiler_detection.h 7 years ago
Luis Diaz Mas 9d62998973 cmake: compile video sources conditionally 7 years ago
Luis Díaz Más 798396e71a cmake: use CONAN_PKG::OpenSSL only if NOT APPLE 7 years ago
Luis Díaz Más 08478c3217 Fix SSL linking issues on Windows 7 years ago
Luis Díaz Más 4fa2bc7008 Propagate CURL linkage when it is enabled 7 years ago
Luis Díaz Más 04c9b181cc Fix #644. Export specializations of BasicError
- Only export BasicError::setMsg which is the only implementation present in the .cpp
- Only export BasicError specialization on __APPLE__

It seems that gcc automatically adds the attribute when the visibility
settings are set to hidden. See this link for more information:
https://reviews.llvm.org/D35388
7 years ago
Luis Diaz Mas 6f8d8e3da6 cleanup header inclusions in API 7 years ago
Luis Diaz Mas acc9fa012d Reliable detection of strerror_r variants 7 years ago
Andreas Schneider ed3a0f1341 cmake: Install header files without globbing
Fixes #627

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0b34ccb9a3b26cd1c5267c6a5c15e9fa1a665adb)
7 years ago
Andreas Schneider 6062b1b803 cmake: Rename xmp to exiv2-xmp to avoid name conflicts
There is already a libxmp file by the xmp project on https://xmp.sf.net.
To avoid issues prefix with exiv2.

Fixes #624

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 89509d7a3915ba474cbc3f8c85ab9bec4954ceda)
7 years ago
Alexander Steffen 8453ef0466 Add Tamron SP 24-70mm f/2.8 Di VC USD G2 for Canon
Fixes #330.
7 years ago
Alexander Steffen f586d57bb1 Add various Sigma and Canon lenses 7 years ago
Alexander Steffen cf4f14c67b Add new IDs for Sigma lenses with firmware 2.00
The firmware update changed the IDs, so that the same lens may now be known
under different IDs.
7 years ago
Natanael Copa 63f1fde85b Fix path for errno.h
Fix warnings when built with musl libc by using the correct path for
errno.h as defined in POSIX.

Fixes the following warning:
In file included from /home/ncopa/src/exiv2/src/http.cpp:74:
/usr/include/sys/errno.h:1:2: warning: #warning redirecting incorrect #include <sys/errno.h> to <errno.h> [-Wcpp]
 #warning redirecting incorrect #include <sys/errno.h> to <errno.h>
  ^~~~~~~
7 years ago
Natanael Copa 480430d397 Fix usage of strerror_r
Only GNU libc has implementation of the GNU variant of strerror_r, so
also for __GLIBC__ to determine which strerror_r implemenation to use.

This fixes build with musl libc, which makes some, but not all, GNU
extensions available with _GNU_SOURCE.
7 years ago
Luis Díaz Más 17fecb358f Merge branch 'master' of https://github.com/FreddieWitherden/exiv2 into FreddieWitherden-master 7 years ago
Robin Mills a9404154bc Fix: https://github.com/Exiv2/exiv2/issues/585 7 years ago
Robin Mills 88ec8b88ea Fix #562 for 32 bit builds (don't throw arithmetic exception). 7 years ago
Robin Mills a33041a8b7 Fix: https://github.com/Exiv2/exiv2/issues/562 for stringFormat() crashes. 7 years ago
Robin Mills 03b4f1deae Fix: https://github.com/Exiv2/exiv2/issues/580 7 years ago
Robin Mills 56ba273a90 Fix: https://github.com/Exiv2/exiv2/issues/577 7 years ago
Robin Mills 43683f1eff Fix #531 7 years ago
Robin Mills 23483dff86 #571 Restore the original windows getProcessCode() because Microsoft's GetModuleFileName isn't effective! 7 years ago
Robin Mills 108509a089 Correction to Microsoft sample code! https://docs.microsoft.com/en-gb/windows/desktop/Services/installing-a-service 7 years ago
Robin Mills 9cb6c1e4c9 Correction in futils.cpp 7 years ago
Robin Mills 22e49cc78b Try to fix https://github.com/Exiv2/exiv2/issues/572 7 years ago
Robin Mills 3af6f43ff0 Fix: https://github.com/Exiv2/exiv2/issues/571 7 years ago
Robin Mills eab816fd32 src/version.cpp report enable_nls 7 years ago
clanmills c22a38cfb4 Fix for https://github.com/Exiv2/exiv2/issues/560 (eraseFamily() crashes in MSVC/Debug). 7 years ago
Robin Mills 062bad7535 Adding output for have_regex to version.cpp 7 years ago
Robin Mills 1b136f0657 Revision to PR#557. Restored XmpData::erase() and added XmpData::eraseFamily(). Restored and augumented conversions.sh 7 years ago
Robin Mills ccd708df24 Fix: https://github.com/Exiv2/exiv2/issues/521
conversions.sh reveals a (harmless) order change runTest exiv2 -M'set Xmp.xmp.ModifyDate 2015-04-17T18:10:22Z' v.xmp
7 years ago
Luis Díaz Más 0d7b3ecd1e Update man page 7 years ago
Luis Díaz Más 4ed5bdc78b CMake: Supress MSVC PDB warnings 7 years ago
skal ecaf1dd478 Fix alpha bit detection in VP8L chunks
As per the spec ([1]), the alpha_bit is located on the 4th byte of the payload, just after the height.

This seems to fix the bug reported on GIMP ([2]) where an incorrect file was generated.



[1] https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification#2_riff_header
[2] https://gitlab.gnome.org/GNOME/gimp/issues/1818
7 years ago
Luis Díaz Más 6e42c1b55e Fix #561. Use proper counter for the idx variable 7 years ago
Luis Díaz Más 34e411d2fc Fix 547: option -pR only available in Debug mode.
Note that the method Params::evalPrint() has been clang-formatted.
7 years ago
Luis Díaz Más 186352e295 conan: copy 3rd party dlls only if the conanDlls folder exists
Note that this folder will only exists if at least one of the conan packages managed with the shared option = True.
7 years ago
Robin Mills 89375979d8 https://github.com/Exiv2/exiv2/issues/555
I have restored the Macro EXIV2_TEST_VERSION in include/exiv2/version.hpp
I have added an option --version-test to exifprint.cpp to test/validate EXIV2_TEST_VERSION works as documented.
Version strings in Exiv2 v0.27 and later have a fourth digit to indicate the pre-release number of the build.
Pre-release builds should never be used for production purposes.
7 years ago
Luis Díaz Más ee28e8ae15 CMake: Install public headers 7 years ago
Luis Díaz Más 8e5ee7a0e6 Fix debug flag preprocessor condition 7 years ago
Luis Díaz Más 9547cddbd1 Add protection around EXV_LOCALEDIR definition 7 years ago
clanmills c5cd09bebe Fix getProcessPath() on Cygwin 7 years ago
clanmills 2f70ae4305 Fix getProcessPath() 7 years ago
Robin Mills 8a6cd5d24e Fix -vVg loops 7 years ago
Luis Díaz Más 0c871a5878 CMake: Align sources and headers in two columns 7 years ago
Luis Díaz Más faa3a607ab CMake: Remove FREEBSD variable + Remove commented code
- Plus: EXV_LOCALEDIR is now defined only when needed.
7 years ago
Luis Díaz Más 5fc905a799 CMake: remove variable EXIV2_SRC 7 years ago
Luis Díaz Más fa5f057f8c CMake: Remove useless source_group commands 7 years ago
Luis Díaz Más b208bcef7d CMake: CURL does not need to be propagated 7 years ago
Luis Díaz Más 37538399d6 CMake: Modernize src/CMakeLists.txt by using target_sources. 7 years ago
Luis Díaz Más 9980107586 Only include zlib directory when building the exiv2lib 7 years ago
Luis Diaz Mas e397f8f053 Fix #533 - Apply patch proposed by Dominique Nerriec 7 years ago
Luis Diaz Mas 83bb4aa80a code formatting 7 years ago
Luis Díaz Más 38b60a3e8e CMake: Simplify Intl finding 7 years ago
Luis Díaz Más 4ffc577e4e CMake: remove useless directory inclusions for exiv2
Note that ${CMAKE_SOURCE_DIR}/include is already passed to exiv2
through the exiv2lib target.
7 years ago
Luis Díaz Más 185bcaca05 Link exiv2 app againts libintl 7 years ago
Luis Díaz Más aae84e4643 Add missing inclusions of cstdio and cstdarg 7 years ago
Luis Díaz Más 44a01863be Include unistd.h only where it is needed 7 years ago
Luis Díaz Más 38ed6de05d MSVC: Move compile definitions from config.h to CMake.
+ Also remove inclusion of <Windows.h> from config.h
7 years ago
Luis Díaz Más 8bf9ca8e6d MSVC: Delete deprecated stuff related to MSVC < 2008 7 years ago
Luis Díaz Más d1c2e2f64f bindtextdomain point to relative path to bin directory 7 years ago
Luis Díaz Más 7485bb54d7 Create function getProcessPath and add unit test for it
Debugging: Relative and Absolute path alternatives
7 years ago
Luis Díaz Más e20329b8e0 Remove EXV_HAVE_DLL and disable C4251 always on msvc. 7 years ago
Luis Díaz Más 417ad89e4b Pass argument by const reference 7 years ago
Luis Díaz Más 2203dce828 Fix compilation in clang 7 years ago
Luis Díaz Más 59ba209fe8 Move BlockMap to .cpp file (Remove it from API)
- Also make some BlockMap methods const
7 years ago
Luis Díaz Más fab770887b Initialize member variables not initialized in the constructor 7 years ago
Luis Díaz Más 20a29cc9c4 Initialize variable in constructor initialization list 7 years ago
Luis Díaz Más 58a96d5908 Fix - Exception thrown in function that was declared not to throw 7 years ago
Luis Díaz Más 2d1e1fe6ef Reduce the scope of variables 7 years ago
Luis Díaz Más dc7eb5008b Add explicit to constructors with 1 argument 7 years ago
Luis Díaz Más 1620198568 Update fujiColor tag with descriptions for new Fujifilm monochrome modes 7 years ago
Robin Mills ac951622f4 Update DateTimeOriginal in NEF images 7 years ago
Luis Díaz Más ae49250942 Check in Image::printIFDStructure if seek and reads are OK 7 years ago
Luis Díaz Más 59013f2e2f Formatting code 7 years ago
Luis Diaz Mas b7c71f3ad0 PSD: enforce Length of image resource section < file size 7 years ago
Luis Diaz Mas 6896693251 PSD: Use Safe::add for preventing overflows in PSD files 7 years ago
Luis Díaz Más 933ce589a6 Fix infinite loop in getopt.cpp
Note that the getopt code was looping forever when one of the argument
options was incorrect. Example:
./exiv2 -A 20:00:00 -Y 2018 -O 11 -D 01 ad myImage.tiff
7 years ago
Robin Mills b608ad9fdd Restore exiv2.pc in the mix (#497) 7 years ago
Luis Díaz Más 8b877d6ed6 SOVERSION is VERSION_MINOR as in 0.26 7 years ago
Luis Díaz Más c34c545e31 Change back the library name to exiv2. Generate PDBs in CURRENT_BINARY_DIR.
We need to specify where to generate the PDB so that it does not clash with the PDB file generated
for the exiv2 application.
7 years ago
Luis Díaz Más 8d5d453c13 Use the MSYS CMake variable to determine when to use localtime.c 7 years ago
Luis Díaz Más bc1c17fd78 Add back localtime.c implementation for MinGW 7 years ago
Robin Mills a099f2440a Man page update to describe the configuration file. 7 years ago
Robin Mills 42084f2563 Add support for MinGW/msys2 in 32 bits + Updates in buildserver 7 years ago
Robin Mills e347b41279 Modified Exiv2::Internal::stringFormat() to use larger initial guess for 'need' to fix test/.icc-test.sh on MinGW. 7 years ago
Robin Mills 5f6ef65695 Update PROJECT_VERSION & add install() commands for CPack
- Version updated to 0.27.0.1.
- Release notes for MacOS-X Package, Linux, CYGWIN, win64 and msvc
- Redmine Release Notes Updated.
7 years ago
Luis Díaz Más 3976dbc0e7 CMake: Do not rename library outputs (dlls, pdbs, etc). Fixes a debugging issue with MSVC 7 years ago
Robin Mills 9c516116c8 Fix #401 by fixing iteration over exif data tags 7 years ago
Robin Mills b3d077dcae Fix #460 by adding more checks in CiffDirectory::readDirectory 7 years ago
Luis Díaz Más 670fb73dd5 Fix #457 7 years ago
Dan Čermák 962962a8e9 Port Iptc::printStructure & getUshort to slices API
This fixes #211, #210, #209
7 years ago
Dan Čermák fec6535ae8 [binaryToString] Reimplement using Slices
- reimplement binaryToString:
  - it now accepts a Slice and nothing else
  - it does not return a std::string but instead a proxy object that implements
    operator<< (this should be more efficient, as we do not need to touch the
    heap in most cases)
- addapt unit tests
- replace all occurences with the new API
7 years ago
Dan Čermák a48d0347b7 [binaryToString] Fixed overread when passing start > 0
binaryToString(DataBuf&) only calls the C-array version. Unfortunately, its
safety check is flawed, as it only works when start is 0 (probably due to its
conterintuitive interface).
binaryToString(byte*) formats the range (start,start+size) => we have to trimm
size if size + start is larger than the DataBuf's size_
7 years ago
Dan Čermák bfd84ddf5a [binaryToString] Improved ambiguous documentation 7 years ago
Dan Čermák 7a7ae7a1df [image_int] Move internal functions into separate translation unit 7 years ago
Dan Čermák 98bca06592 Add Slices: views of STL containers & C-arrays and add unit tests
This commit adds a very simple implementation of std::span but with
mandatory range checks and only the most essential functionality.
7 years ago
Luis Díaz Más 97379dec1d Add braces around try-catch block. Apply clang-format to the function. 7 years ago
Luis Díaz Más 4216dcd0c2 Fix cppcheck issues: knownConditionTrueFalse 7 years ago
Luis Díaz Más ab35759de8 Fix cppcheck issues: unreachableCode 7 years ago
Luis Díaz Más 54ad1bc91a Fix cppcheck issues: duplicateBreak 7 years ago
Luis Díaz Más b118192f94 Fix cppcheck issues: redundantAssignment 7 years ago
Luis Díaz Más c43d998457 Fix cppcheck issues: passedByValue 7 years ago
Luis Díaz Más 989acd18c7 Fix cppcheck issues: uninitMemberVar & uninitVar 7 years ago
Luis Díaz Más 19e740b447 Restore API functions remove in #450 7 years ago
Roberto C. Sánchez c03f73268f Prevent SIGABRT on excessive subBox length in jp2image.cpp
This fixes CVE-2018-9145
7 years ago
Borchers, Henry Samuel 11e66c6c9e BUILD_INTERFACE for include directories use PROJECT_SOURCE_DIR to allow for being built as a CMake subproject 7 years ago
Dan Čermák 916c535d94 clang-format floatToRationalCast 7 years ago
Dan Čermák 6fd1c5b4bf [types] Fix check for finite numbers on Linux
On Linux we were merely checking whether f is finite, but that does
not cover the case f=NaN.
=> use isfinite instead which checks whether f != inf && f != NaN
7 years ago
Luis Díaz Más 18690f4c54 Provide default and copy constructor for AnyError 7 years ago
Luis Díaz Más 6e4404da81 Move implementation details from tags.cpp to tags_int.cpp 7 years ago
Luis Díaz Más b9f913d5af Move implementation to .cpp files. Fix more issues related to visibility settings 7 years ago
Luis Díaz Más e3f975137c Use STATIC_DEFINE to solve issues with OBJECT library 7 years ago
Luis Díaz Más 6ba4081f95 Use CMake-GenerateExportHeader to generate a macro to export symbols
- Delete the hardcoded macros in config.h taking care of that.
7 years ago
Luis Díaz Más 812762cf5a Remove usage of CPLUSPLUS11 7 years ago
Luis Díaz Más ab6aac054a Remove deprecated code from version source files 7 years ago
Luis Díaz Más 1871ce5acd Remove 'version.hpp' inclusion from places where it is not needed
By removing the inclusion from types.hpp we avoid lots of recompilation
of source files.
7 years ago
Luis Díaz Más e5bcabd026 Do not print hexadecimal version value when running exiv2 --version 7 years ago
Dan Čermák 67ec90bdab Fix switch value in BigTiffImage::readData
This function extracts a 2, 4 or 8 byte integer from the image and
swaps it according to the current setting. However, it was implicitly
assuming, that it reads the same amount from the image is is
requested.
If that is not the case, e.g. if 8 bytes are requested but
only 4 are read
=> result is created via byteSwap8() which reads 8 bytes
   !but 4 of those are uninitialized!
Using the actually read size fixes this problem.
7 years ago
Dan Čermák ecf955812d Replace reachable assertions with enforce in BigTiffImage::readData 7 years ago
Dan Čermák b3199a0720 Fix division by zero in BigTiffImage::printIFD
This fixes #262
7 years ago
Robin Mills afb98cbc6e Allocate correct amount of memory for the ICC profile 7 years ago
Robin Mills 8ff26931e3 Do not use Image::printStructure() when reading images as this causes security issues. 7 years ago
Luis Díaz Más 1bdbb86b0c Fix warning about implicit conversion to bool 7 years ago
Luis Díaz Más dba48ac3d9 Fix warning on VS2008 7 years ago
Luis Díaz Más 603692a1d8 Copyright to Exiv2 authors 7 years ago
Luis Díaz Más c4cc019dff Hide -Wunused-variable issues by using the UNUSED() macro 7 years ago
Luis Díaz Más 94375034e6 Fix -Wsign-compare issues 7 years ago
Luis Díaz Más 18ded9ccf3 Use static version of libcurl.
Note that this will simplify the packaging/deployment
7 years ago
Luis Díaz Más 0bfa0168df Cleanup some of the PACKAGE_XXX variables and rely in the ones given by the project() command 7 years ago
Luis Díaz Más 980f2e9462 Use isnan(f) as an alternative to isinf() on __APPLE__ 7 years ago
Robin Mills 6d1c318fc6 Fixes in PngChunk::readRawProfile 7 years ago
Luis Díaz Más f5b40f3e82 Fix more issues in PngChunk::readRawProfile 7 years ago
Luis Díaz Más 847da051c0 Fix bug in PngChunk::readRawProfile
- Now it takes into account text.size_ when searching for a newline
char.
7 years ago
Luis Díaz Más 6b77e9f6c8 Do not use std::vector::data() which is not part of c++98 7 years ago
Luis Díaz Más 2ae0cffe18 isinf for Visual Studio versions previous to 2013 7 years ago
Luis Díaz Más 4161099b91 Fix warnings reported by MSVC 7 years ago
Luis Díaz Más da24df0ba0 snprintf versions for VS versions previous to 2015 7 years ago
Luis Diaz Mas 67e448669e Use -Wno-format-overflow when compiling value.cpp to skip false positive warning 7 years ago
Luis Díaz Más 597b17fff5 Simplify timegm.h and make it usable with MINGW 7 years ago
Dan Čermák 1e23238fa4 Fix memory leak in Params::getopt() 7 years ago
clanmills 3c42fdddeb Fix include <exiv2/exiv2.hpp> to include exiv2/config.h (and consequential changes)
Fix cltest.cpp and version.cpp to report MSVC 2017 in which _MSC_VER == 1910
7 years ago
Robin Mills 74bc0e0535 Changes for cross-platform getopt 7 years ago
Hombre a226d6a650 Fixing typo in cmakefiles and removing REGEX dependencie for Cygwin 7 years ago
Hombre 28da26f174 Adding MINGW32 toolchain support 7 years ago
Dan Čermák 7d9ed33bde Initialize DataBuf with 0s => fix valgrind error 7 years ago
Dan Čermák 9f1a5a1ebb [futils] Change signature of getEnv to take an int
While taking an EnVar as the parameter is more clear it has the
disadvantage, that passing anything outside of the range of the
enumeration is undefined behavior. The compiler could then optimize
the range check in getEnv away (perfectly legal due to UB), leading
to buffer overreads.
7 years ago
Dan Čermák 11df43be78 [types] Apply Safe::abs() in floatToRationalCast & gcd
Also check for infinity in floatToRationalCast as depending on the
compiler special values of floats are converted to either
LONGMAX/LONGMIN or +/-inf
7 years ago
Dan Čermák 2dacb19933 [safe_op] Add Safe::abs(), calculates absoulte value without UB
Add a drop-in replacement for std::abs which never produces
negative values and thereby never invokes undefined behavior.
7 years ago
Luis Diaz Mas 8b47a8efc1 Include timegh.h in file which needs it 7 years ago
Luis Diaz Mas a9c9451588 Remove localtime.c and any other trick to handle timegm 7 years ago
Luis Diaz Mas eb306fdbae Substitute malloc/free with new/delete 7 years ago
Luis Diaz Mas eefee8125b to_hex and from_hex removed from API 7 years ago
Luis Diaz Mas 41499b8ecd Use snprintf instead of sprintf in TimeValue::copy
- Replaced assert by enforce
7 years ago
Luis Diaz Mas 7d8edbe781 Remove more dead code 7 years ago
Luis Diaz Mas 00502eabdd Move mrwthumb to samples 7 years ago
Luis Diaz Mas e9a6597a48 Move xmpdump to samples 7 years ago
Luis Diaz Mas ac51fda7b5 Move crwparse to samples 7 years ago
Luis Diaz Mas 32b618b1c7 Move crwedit from exiv2lib to samples 7 years ago
Luis Diaz Mas f9b2784055 Remove utiltest.cpp that is not compiled 7 years ago
Luis Diaz Mas 00f86a8df4 Cleanup unused variable warnings 7 years ago
Luis Diaz Mas 6e244f31d3 Cleanup fallthrough warning + clang-format parseCommonTargets function 7 years ago
Dan Čermák 35b3e596ed 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
7 years ago
Dan Čermák 6da77e2c64 Add documentation for parameters of string_from_unterminated 7 years ago
Dan Čermák b127354429 Simplify string_from_unterminated by using strnlen() 7 years ago
clanmills ce516eddef Issue-374 7 years ago
Dan Čermák b12a868454 Add EXV_WARN_UNUSED_RESULT macro & add it to DataBuf::release()
EXV_WARN_UNUSED_RESULT is a conditional macro that expands to either
__attribute__((warn_unused_result)) on gcc & clang or to _Check_return
for MSVC
=> Compiler warns if the return value is ignored
7 years ago
Dan Čermák 1ab921cb83 Add two padding bytes to exifLongHeader to prevent overreads
in the following call:
getHeaderOffset (payload.pData_, payload.size_, (byte*)&exifLongHeader, 6);

getHeaderOffset would read 6 bytes from exifLongHeader, reading beyond the
bounds of the array => add 2 padding bytes to prevent overreads
7 years ago
Dan Čermák dbf90b976f Fix overread in memcmp in PngImage::doWriteMetadata()
memcmp() compares the read data from key with the provided string, but when
key.pData_ is shorter than the provided length, then memcmp can read beyond the
bounds of key.pData_
=> add custom compare function, which ensures that we never read more than
key.size_
7 years ago
Dan Čermák 8d5a3c7dd9 Remove buffer overread in tExtToDataBuf
The pointer p is advanced in the while loop to step over three '\n'.
However, its length is never reduced accordingly. => the length check in the
following for loop is invalid, as it permits overreading by the number of
characters that p was advanced by.
7 years ago
Dan Čermák 67dc3e691f [IptcData::printStructure] clang-format function 7 years ago
Dan Čermák b2c3b61abc [IptcData::printStructure] Remove buffer overrun
The loop condition will perform a range check correctly, but it will always
dereference bytes[i], even if i is too large and fails the second check.
=> move the bytes[i] == 0x1c check into a if, after the range check was
successfull
7 years ago
Dan Čermák 39399ac5e8 Remove memory leak in SshIo::SshImpl::getDataByRange
The buffer array is not deleted, when an exception is thrown
(happens for nBytes< 0).
=> use std::vector<char> instead
7 years ago
Dan Čermák 607b19111c [DataBuf] Replace wrong usage of release() with free() 7 years ago
Dan Čermák 1b74db8f51 [types] Add DataBuf::free()
DataBuf::release() easily cause memory leaks, when the return value is
ignored. free() provides the desired behavior, when the internal data should
just be deleted and not used further.
7 years ago
Dan Čermák 81b6d36c90 [webp] Enforce minimum read size in decodeChunks
The size parameter is only checked for upper bounds, but not for lower.
If it is too small, then created dataBuf will be too small and overflow in one
of the subsequent memcpy() calls.

This fixes #378 / CVE-2018-14046
7 years ago
Luis Díaz Más 6a203c70c0 Include missing unused.h header in convert.cpp 7 years ago
Dan Čermák b761c6d056 Remove useless casts in preview.cpp 7 years ago
Dan Čermák fe70939f54 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
7 years ago
Dan Čermák f4e8ed2fd4 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.
7 years ago
Dan Čermák 937a1a2bd0 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.
7 years ago
Luis Diaz Mas abf6e8ec27 Remove code related with autotools 7 years ago
tbeu 6b1615840f Remove redundant check
V547 Expression 'bPrint' is always true. rafimage.cpp 112
V547 Expression 'bPrint' is always true. rafimage.cpp 125
V547 Expression 'bPrint' is always true. rafimage.cpp 136
V547 Expression 'bPrint' is always true. rafimage.cpp 147
V547 Expression 'bPrint' is always true. rafimage.cpp 158
V547 Expression 'bPrint' is always true. rafimage.cpp 169
V547 Expression 'bPrint' is always true. rafimage.cpp 190
V547 Expression 'bPrint' is always true. rafimage.cpp 213
V547 Expression 'bPrint' is always true. rafimage.cpp 236
V547 Expression 'bPrint' is always true. rafimage.cpp 252
V547 Expression 'bPrint' is always true. rafimage.cpp 262
V547 Expression 'bPrint' is always true. rafimage.cpp 272
7 years ago
tbeu eca251865f Fix check (on comparing unsigned minus signed greater zero)
V555 The expression 'object->sizeDataArea_ - buf.size_ > 0' will work as 'object->sizeDataArea_ != buf.size_'. tiffvisitor.cpp 911
7 years ago
tbeu bb9034e029 Do not implicitly cast enum to Boolean
V768 The expression 'fileProtocol(path)' is of enum type. It is odd that it is used as an expression of a Boolean-type. futils.cpp 288
7 years ago
tbeu 12d0da619b Use clear to reset string
V815 Decreased performance. Consider replacing the expression 'token = ""' with 'token.clear()'. http.cpp 193
7 years ago
tbeu 9569ef2fda Use auxiliary variable
V807 Decreased performance. Consider creating a reference to avoid using the 'image_.exifData()' expression repeatedly. preview.cpp 530
7 years ago
tbeu 75cdbc8b91 Use pre-increment on iterators
V803 Decreased performance. In case 'userEnd' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. futils.cpp 405
V803 Decreased performance. In case 'authEnd' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. futils.cpp 410
V803 Decreased performance. In case 'hostEnd' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. futils.cpp 428
V803 Decreased performance. In case 'e' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. epsimage.cpp 711
V803 Decreased performance. In case 'e' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. epsimage.cpp 841
V803 Decreased performance. In case 'e' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. epsimage.cpp 958
V803 Decreased performance. In case 'i' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. epsimage.cpp 855
V803 Decreased performance. In case 'it' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. jpgimage.cpp 817
V803 Decreased performance. In case 'lib' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. version.cpp 508
V803 Decreased performance. In case 'it' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. version.cpp 563
V803 Decreased performance. In case 'it' is iterator it's more effective to use prefix form of increment. Replace iterator++ with ++iterator. xmpsidecar.cpp 138
7 years ago
tbeu e5a4f1cf35 Use auxiliary variable
V807 Decreased performance. Consider creating a reference to avoid using the 'image.exifData()' expression repeatedly. crwimage.cpp 1320
7 years ago
tbeu 3674ce2c1d Remove superfluous assignment
V519 The 'md_st' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 155, 156. easyaccess.cpp 156
7 years ago
tbeu 9c507b9d20 Fix function declaration
V762 It is possible a virtual function was overridden incorrectly. See third argument of function 'printStructure' in derived class 'TiffImage' and base class 'Image'. tiffimage.hpp 93
7 years ago
Luis Díaz Más 9f67edd9bd Conan: bring libiconv dependency for Windows 7 years ago
Luis Díaz Más e82cd1734c Fix warnings reported by -Wmisleading-indentation 7 years ago
Luis Díaz Más 88ba920962 Extract out common code for two switch-cases into a function to fix warning
The warning was caused by -Wimplicit-fallthrough:
https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/

I also realized that the method printStructure was duplicated in the
classes Print and Erase. By moving the implementation to a free function
into the cpp file, I could remove the duplication in the code.
7 years ago
Luis Díaz Más 335607054c Use enforce instead of std::assert to fix warning about unused variable in realease mode 7 years ago
Luis Diaz Mas 773bdfd14e Create a header where to keep an unique definition of UNUSED 7 years ago
Luis Diaz Mas 9586928d29 Add CMake code to handle external XMP
Experiment: Try with testing package
7 years ago
Dan Čermák a1a9c3d79a Use reinterpret_cast instead of C style cast 7 years ago
Dan Čermák b51b6fc52d Prevent an out of bounds read in strstr in JpegBase::printStructure
The xmp byte array is not necessarily null terminated => strstr can read beyond
the bounds of the allocated array then.
Therefore use string_from_unterminated to remedy this issue.
Also replace xmp with a std::vector, as stl functions can throw and we don't
want a memory leak.
7 years ago
Dan Čermák 510560bbd1 Prevent out of bounds read in jpgimage.cpp JpegBase::printStructure
signature is extracted from an image and can lack the terminating \0, this
causes the std::string constructor and strcmp to read beyond the bounds of the
allocated array.
=> Use string_from_unterminated to construct a std::string safely and use it
in the subsequent code & use stl functions instead of C functions
7 years ago
Dan Čermák dd52b1a832 Add helper_functions.cpp/hpp & unit tests
- add function which constructs a new std::string from a potentially not null
  terminated char *
- add unit tests
7 years ago
Luis Diaz Mas 59493d1edc Fix bug in Cr2Header::read 7 years ago
Luis Diaz Mas 1d27c21639 Rename files from cr2image_int to cr2header_int 7 years ago
Luis Diaz Mas 67a5a74115 Throw when trying to write out of the buffer 7 years ago
Luis Diaz Mas 863aaebc92 Use index to access buf.pData_ 7 years ago
Luis Diaz Mas ed874703ad Prevent call to memcpy with size==0 7 years ago
Luis Diaz Mas f17636460f Remove tags_int.cpp that was not used in the project
I introduced that file accidentally in the project while trying to move
the implementation details to xxx_int.cpp files. In this case, I found
out some issues and I just decided to leave the implementation in the
file tags.cpp.
7 years ago
Luis Diaz Mas 1371d677f9 Remove custom messages from enforce(xxx, Exiv2::kerCorruptedMetadata) 7 years ago
Luis Diaz Mas c0a879aea4 Fix call to std::count, so that we count until the end of the array 7 years ago
Luis Diaz Mas 3ad0050469 Check validity of compressionFlag & compressionMethod 7 years ago
Luis Diaz Mas 2fb00c8a16 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.
7 years ago
Luis Diaz Mas a227fcda39 debug: Add new debug message to print the PNG chunk being processed 7 years ago
Luis Diaz Mas b0696d4da6 style: Apply formatting guidelines to one-line ifs 7 years ago
Luis Diaz Mas 4922df6018 Replace '\n' by endl that flush content. Useful for debugging 7 years ago
Luis Díaz Más c3629117d8 conan: Upgrade libcurl version
Thanks to this upgrade the cmake code that handles the CURL dependency
can be simplified. Now we can use the shared version of CURL in all the
platforms. However we will use for the moment the static version on Mac,
since we are having some issues with 'make tests'. Once those tests are
migrated to python we can also use the shared version there.
7 years ago
Daniel Zucchetto 4e55af8691
Support Canon M100 7 years ago
Dan Čermák 4b24e011dc Free potentially allocated regexes from Params::evalGrep
In Params::evalGrep regcomp allocates some internal space for the regex objects,
which must be freed manually via regfree(). This was however only done when the
call to regcomp() failed and not on success. As the regexes are needed later,
they have to be deallocated by the destructor.
7 years ago
Dan Čermák bf51a76e4e [safe_op] Fix ODR violation in compiler builtin specializations
The compiler instrinsics are exposed via fully specialized template functions
which must not be defined twice (which they accidentally were). Declaring them
as inline fixes this issue.
7 years ago
Dan Čermák 1d7dd0892c Fix errors not being passed by reference to error() function
- error was passed by value, but a new error message should be appended to it
  => error must be called by reference
- use default parameters of error() in http()
- rename variables to fix shadowing
7 years ago
Dan Čermák 571f97e277 Use __attribute__((format)) in clang too 7 years ago
Dan Čermák 222c65be63 Refactor Nikon case in bigtiffimage
- remove name shadowing
- user std::vector<> instead of raw array
7 years ago
Dan Čermák 4c4d568036 Enforce a valid Value (instead of assert) 7 years ago
Dan Čermák e2b06856d8 Change type of size to uint64_t to avoid a useless cast
The variable size is only populated via getUint64_t => uint64_t is better suited
then unsigned long
7 years ago
Dan Čermák 316548d2de Fix shadowing issues
- renamed variables that were shadowing a previously defined variables
7 years ago
Dan Čermák 5e36363138 Fix double promotion issues 7 years ago
Dan Čermák bc58752d18 Remove useless casts
This commit removes only casts where type A is cast to the exactly same
type (and not to a platform dependent typedefs)
7 years ago
Dan Čermák bb2019149a [safe_op] Don't use overflow intrinsics in MSVC 2005 7 years ago
Luis Díaz Más e32323d7c7 Simplify usage of strerror_r.
- Define STRERROR_R_CHAR_P properly on CMake and use it on futils.cpp
- We use now _GNU_SOURCE to determine which version of strerror_r to use
- strError only throws if ret==ERANGE
- Remove STRERROR_R_CHAR_P. It has been never used
- sort defines in config.h.cmake
- Remove EXV_HAVE_DECL_STRERROR_R that is not used anymore
- Remove EXV_HAVE_STRERROR. C++98 always will have it
7 years ago
Robin Mills d22fff4834 Lens Recognition for Tamron SP AF 150-600mm F/5-6.3 VC USD G2 (A022) for Nikon
http://dev.exiv2.org/issues/1348
7 years ago
Luis Díaz Más f86542e5f6 Remove EXV_HAVE_STRTOL 7 years ago
Luis Díaz Más d55b2b1b65 Remove HAVE_STDLIB_H check and replace stdlib.h by cstdlib 7 years ago
Luis Díaz Más aded1965c5 Remove EXV_HAVE_MEMSET 7 years ago
Luis Díaz Más abd28a6a9e Remove EXV_HAVE_STRCHR 7 years ago
Dan Čermák fc60d97a29 Prevent passing of null-pointers to libc functions 7 years ago
Dan Čermák 2bf89f4854 Store pointers to Impl classes in auto_ptr
Pimpl class Impl is stored in raw pointers which are allocated on the heap in
the constructor. However, the constructor can throw an exception resulting in a
memory leak as the destructor is **not** invoked.
=> A smart pointer is however properly deallocated.
7 years ago
Luis Díaz Más 02aa13abf3 Install conan-dependencies DLLs into install/bin.
We also changed the way in which we copy the DLLs to the bin folder inside the build directory.
Before we were directly placing the conan-deps DLLs into the bin folder directly. Now we place
them into a directory called conanDlls, and from there we copy them to bin or install/bin
at build and install steps respectively.
7 years ago
Luis Díaz Más fbd8e2669e sort alphabetically the sources in src/CMakelists.txt 7 years ago
Luis Díaz Más de5b9ebf89 Remove duplication of sources in src/CMakeLists.txt 7 years ago
Luis Díaz Más ffbcaa2e6d Fix MSVC warning C4267: conversion from 'size_t' to 'long' 7 years ago
Luis Díaz Más bd40c18f1c Use variable in TimeValue::copy to remove -Wunused-variable warning 7 years ago
Luis Diaz Mas a246c73d6f Use unused variable instead of hard-coded values in DateValue::copy 7 years ago
Luis Díaz Más bf7047a71b clang-format XmpKey code 7 years ago
Luis Diaz Mas 07d75cd0e8 Check if ExifData::findKey return valid iterators 7 years ago
Luis Díaz Más 858c99b4df Add enforce before calling REPORT_MARKER with invalid marker 7 years ago
Freddie Witherden 97a7924340 Update Nikon lens database. 7 years ago
Luis Díaz Más 5e5d76ad0a clang format function 7 years ago
Dan Čermák 3c20cc06a9 Fix CVE-2017-1000126
CVE-2017-1000126 is a Stack out of bounds read in the WebP parser caused by the
parameter size & filesize being too large, causing the parser to land in an
infinite loop and eventually crash. Enforcing that the size over which the
parser iterates is smaller than the file fixes this issue.

This fixes #175.
7 years ago
Dan Čermák 49db96cd58 [webp] Fix wrong filesize parameter being extracted from the header
The webp header contains the filesize of the image starting at the 8th byte in
bytes 4 to 8 encoded as a little endian 32 bit unsigned integer. The code was
erroneously assuming that the extracted filesize is starting at the 12th byte,
i.e. at the end of the WebP file header.

Source: https://developers.google.com/speed/webp/docs/riff_container
7 years ago
Dan Čermák 5de9a7b562 Add a port of enforce() from D
enforce is a function comparable to assert(), it ensures that a condition is
true. However, while assert() should be used for conditions where we can be
certain that they are true, enforce is intended to be used for conditions that
can fail (like on invalid input). Therefore enforce() throws an exception when
the condition is false and does not abort the program's execution. Also, it is
not turned off by defining NDEBUG.

- add a new file enforce.hpp
- implement enforce()
7 years ago
HumanDynamo 22a0b32c01 Fix typo of Xmp.video.AspectRatio's value type 7 years ago
Luis Díaz Más 01a5d863ad Apply clang-format to Print::printMetadatum 7 years ago
Luis Díaz Más 45fe44aa2f Move condition in if statement to discard work earlier 7 years ago
Luis Díaz Más d82b9434e1 Only print items (Params::prValue) when size > 0 7 years ago
Robin Mills 185d0e9482 #199 Fix for getopt(). Use src/getopt_win32 code instead of libc/getopt() 7 years ago
Dan Čermák 06ec1e6984 [safe_op] Refactored addition overflow checks using functions only
- templated structs were not required, SFINAE works for functions too
  => use instead, removes some unneeded code
- fix non-usage of builtins with clang
- adjust unit tests
7 years ago
Dan Čermák 684c8c89de [safe_op] Simplified unsigned int overflow check
Simply check for overflows after the addition, as no undefined behavior can
occur here.
7 years ago
Dan Čermák 31b96b58e7 [safe_op] improved signed int overflow checks via integer promotion
The fallback signed integer overflow check is quite expensive, but the addition
can be safely performed when saved in an int due to integer promotion
rules. This makes the check a little less expensive.
7 years ago
Dan Čermák 029b997ca0 [safe_op] fixed typo in doc-comment 7 years ago
Dan Čermák 751fba8b54 Added dataBuf size check before calling PngChunk::decodeIHDRChunk
- cdataBuf must be at least 8 bytes long otherwise decodeIHDRChunk
  reads out of bounds
- pngImage::readMetadata now skips png chunks where the offset for
  IHDR chunks is invalid
- added assertion into PngChunk::decodeIHDRChunk() to ensure dataBuf
  size
7 years ago
Fredrik lingvall fc8b45dd12 Added the Sigma 120-300mm F2.8 DG OS HSM | S for Nikon mount. 7 years ago
Fredrik lingvall 34a3be025e Added Sigma 50mm F1.4 DG HSM | A mount/UPC code (for Nikon mount). 7 years ago
Fredrik Lingvall 215227024d Added Sigma 20mm F1.4 DG HSM | A mount/UPC code (for Nikon mount). 7 years ago
Dan Čermák efe2ccdcb6 Replaced all hardcoded error codes with ker... constants 7 years ago
Dan Čermák d3c3c036b8 Incorporated error codes into errList 7 years ago
Robin Mills 55001c8ddf
Merge pull request #222 from Exiv2/fix-220
Fix 220
7 years ago
Dan Čermák fcb4257051 Add check for DataBuf.size_ in Jp2Image::readMetadata()
When parsing a subBox that is a ColorHeader, a length is extracted
from the input file and fed directly into DataBuf() (which calls
malloc). A crafted input file can provide arbitrarily (up to
max(uint32_t)-8) large values and result in excessive memory
allocation.

This commit adds a check for the new size of DataBuf so that it is not
larger than the remaining size of the file.

This fixes #202 aka CVE-2018-4868
7 years ago
Robin Mills a1f1989cb5
Merge branch 'master' into master 7 years ago
clanmills c082537967 Fix #220 https://github.com/Exiv2/exiv2/issues/220 8 years ago
Dan Čermák 4429b962e1 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)
8 years ago
Robin Mills df4113b765 changes to MemIo::reserve() for #200 (#213)
* changes to MemIo::reserve() for #200

* Changes following review by Dan (thanks, Dan).
8 years ago
Michał Walenciak d219e61586 be more error prone 8 years ago
Michał Walenciak 24348e85ca checks for valid reads 8 years ago
Michał Walenciak 421c6d6723 improvements for issue #208 8 years ago
Michał Walenciak 1647908e00 fix for crash in bigtiff (issue #208) 8 years ago
Robin Mills 7d42da94d0 Removed wrong ExifData::const_iterator that shadowed the correct one 8 years ago
Luis Díaz Más 00f32316b2 Add missing header 8 years ago
Luis Díaz Más 14ff034fb4 Catch std::overflow_error exception in Print::run 8 years ago
Luis Diaz Mas d09c4bb7cd Fix arithmetic operation overflow 8 years ago
Luis Díaz Más a1023c39ab Add safe_op.hpp to LIBEXIV2_PRIVATE_HDR (to be shown in IDEs) 8 years ago
Dan Čermák 7c00e9128d Fix compilation error with gcc < 5
- overflow builtins were added with gcc 5.0
8 years ago
Dan Čermák ca7c699aa1 Added overflow safe addition function 8 years ago
Robin Mills 8f5b795eaa Fixes to autotools build to respect mn_int.cpp files (#186)
* Fixes to autotools build to respect mn_int.cpp files

* Changes following Luis' code review.
8 years ago
Luis Díaz Más f36bea3801 exiv2::getEnv throws std::out_of_range on unexpected EnVar
This change define explicitly the behavior that exiv2::getEnv should have
on response to unexpected inputs.

There are some other minor changes:

- Use _putenv_s for the unit tests on Windows
- Add todo comment
- Remove deprecated note about freeing memory
8 years ago
Luis Díaz Más 8dc3c1f0a0 Replace malloc/free by new/delete. Use const char* for input arg 8 years ago
Luis Díaz Más bfe057ca20 Auto-formatting done by the IDE while touching code in the previous commits 8 years ago