4434 Commits (16a19216a2d22e2a86a262b1f1f99a9366d26f2b)

Author SHA1 Message Date
Rosen Penev c52bc0ff95 silence GCC8 warning on non default constructor
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev dae2b6dda8 more doxygen
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Ryan Friedman eb05551ed2 Add Exiv2 namespace for exported targets
* This matches an alias target name
* Recommend using the namespaced target in the README

Signed-off-by: Ryan Friedman <ryan.friedman+github@avinc.com>
2 years ago
Ryan Friedman a8c3455e5c Add a cmake config file export
Signed-off-by: Ryan Friedman <ryan.friedman+github@avinc.com>
2 years ago
Miloš Komarčević b7c45b49aa Leverage global BUILD_TESTING option 2 years ago
kamiccolo 52fb9ee191 Revert "Isolate samples, unittests, coverage and overall build to PROJECT_BINARY_DIR"
This reverts commit 057ddfcf1755380583c6eb4ac97767a652fbfe9d.
2 years ago
kamiccolo 6f5b1c94db Isolate samples, unittests, coverage and overall build to PROJECT_BINARY_DIR 2 years ago
Rosen Penev c827648127 add missing commas
Formats the structs properly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev e1b3dfa278 fix toAscii function
c == 0 was a dead branch because of the way printable ascii was
calculated. Move it up instead.

While at it, replace std::transform with std::replace. Easier to read.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 22a4b71752 optimize other toAscii function with early exit
GCC is able to see that the branch is useless as it can be done at
compile time. Produces shorter assembly with both -O2 and -O3.

Assign the pointer to the std::string directly and use proper iterators
with std::transform. Also produces shorter assembly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Pino Toscano b826a7d733 asf: fix GUID reading on big endian platforms
Setting the initial parts (data1_, data2_, data3_) from the bytes
directly using memcpy() means that they will be interpreted depending
on the platform endianness. For example, the initial 4 bytes of the ASF
header are 0x30, 0x26, 0xB2, 0x75, which will be read as 0x3026B275 on
big endian platforms, never matching the actual GUID (0x75B22630), which
is always specified in little endian format.

Hence, when reading a GUID from data, make sure to turn the GUID parts
to little endian. This fixes the reading of ASF files on big endian
platforms.

Fixes commit bed8d3d93c
2 years ago
Miloš Komarčević 029dc9f24a Add some Sony IDs 2 years ago
Rosen Penev 1837bf055e memcpy to copy_n conversions
The latter is more strict regarding types

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 640282f33b replace reinterpret_cast with copy_n
On mips64, this throws a cast-align warning. Silence it.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d4f6c9cf40 coverity fixes
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 7473b4a715 optimize toAscii function with early exit
GCC is able to see that the branch is useless as it can be done at
compile time. Produces shorter assembly with both -O2 and -O3.

https://godbolt.org/z/ejhfxh8Tx

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Miloš Komarčević c686bed5f8 Use compiler macros for endianness 2 years ago
Rosen Penev 50648dd4b0 use if constexpr instead of macros
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 7477293e41 avoid newer clang-format issue
More readable anyway.

Also remove specific version. Problems have been fixed already. All
versions should work the same now.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 8a09f2dee1 avoid LTO issues
Place structs inside the places where used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Matthias Andree 91af0905db FreeBSD Fix getLoadedLibraries() crash
FreeBSD's getLoadedLibraries() uses libprocstat(3) to obtain
the list of mapped files (libraries). However, the list
obtained from procstat_getfiles() does not only return regular files,
but might also return anonymous objects that have no fs->path.

With exiv2 v0.28, I had also observed crashes with a real TTY,
and the entry->fs_path dereference would crash, even if it
was only for a test "non-null", so we need something more thorough.

Add a check to only consider VNODEs (actual file system entries),
and also make sure that entry->fs_path is defined so we don't
pass a nullptr to the std::string(const char *) constructor when
we are reading corrupt data. std::string((const char *)0)
on FreeBSD 13.2 - calls strlen() and crashes there.
2 years ago
Rosen Penev d18a21847b avoid division by 0 false positive
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 4783581b27 add null dynamic_cast checks
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 4c4bf7c749 avoid copy_n
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev e4a4791b35 endian check from runtime to compile time
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Kevin Backhouse 1119a68a1e
Check if the metadata is NULL. 2 years ago
Kevin Backhouse 360c6cd41f
Check if the metadata is NULL. 2 years ago
Miloš Komarčević 6b186a4cd2 Add new Exif 3.0 tags
(cherry picked from commit eb303ae63e79bf680901951c2ddcc7386f15e71b)
2 years ago
luzpaz 39a4b9b930 Fix various typos
Found via `codespell -q 3 -S *.po,*.pot,*.ts,./doc/ChangeLog,./xmpsdk -L alis,discus,filetest,ist,nd,ois,optio,siz,te,tempdate`
Excluded 3rd-party code (ie ./xmpsdk)
2 years ago
Kevin Backhouse 3202e86e73 Avoid triggering assertion in std::vector::operator[] 2 years ago
Kevin Backhouse 96d0e5faf1 Allow c_data() to return zero byte buffer. 2 years ago
Miloš Komarčević b66ebd9481 Fix regression parsing PNG text chunks with zero length payload
(cherry picked from commit 16c1cd7da0cd159ee2d53c39088564edaf046c77)
2 years ago
Rosen Penev 6ee4a168ca reduce nesting of operator
Easier to read

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
norbertwg f7de846909 clang format 2 years ago
norbertwg 31620a6522 adjust descriptions in canonLiOpId to fit tag name 2 years ago
Miloš Komarčević 05ccb5ae58
Merge pull request #2613 from cytrinox/fuji_xmp_fix
Extract XMP data from embedded JPEG preview inside RAF files
2 years ago
Daniel Vogelbacher c493e38d5a RAF: Copy comment from embedded JPEG image 2 years ago
Daniel Vogelbacher f5f1f30f5b RAF: Ignore JPEG decoder errors if the JPEG offsets are invalid 2 years ago
Thomas Klausner d92fb10cdb Fix build on NetBSD. 2 years ago
Miloš Komarčević c04dcc8341 Remove exiv2-xmp from CMake exported config 2 years ago
Miloš Komarčević 972795741b Remove exiv2-xmp from pkg-config file 2 years ago
Daniel Vogelbacher d27c5ac838 RAF: Simplify metadata extraction
Remove manual TiffParser usage for reading APP1 segement,
instead use JpegImage for proper parsing.
2 years ago
Daniel Vogelbacher 6c4b6d9d7f Extract XMP data from embedded JPEG preview inside RAF files
The Fujifilm X-T5 camera stores in-camera rating for RAF images
by using XMP. But the XMP data is not directly encoded into the
RAF structure - instead it is attached as a second APP1 segment
to the embedded JPEG preview file.

This patch extracts the JPEG preview and parses it like a standalone
JPEG file.
2 years ago
Miloš Komarčević 53fe85b2c4 BMFF: fix handling of boxes w/ zero length or type
(cherry picked from commit f80403767b34818f3298d7ae54e6b36315f3b0a5)
2 years ago
Rosen Penev c319699ac5 use variadic template
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 954153a4ec replace inline with coonstexpr
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 4c66b4440a pair noexcept with move operations
Typically done with noexcept.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 37184fd713 fix print format
Allows the compiler to actually diagnose formats.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Miloš Komarčević b4179adab8
Merge pull request #2472 from Exiv2/fix_soversion
Fix shared object versioning
2 years ago
Rosen Penev b2cd60eeac fix asfvideo unicode handling
Use convertStringCharset to convert instead of reimplementing.

Some data is UTF-32 and other is UTF-16. Instead of implementing another
function for Windows, convert from UCS2-LE to UTF-8 twice.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Mohamed Ali Chebbi 7ab4554c41 Update src/jpgimage.cpp
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
2 years ago
Mohamed Ali Chebbi a530cf9d03 Current master fails with image #2565: segmentation fault when trying to access outofband offest: check all locations 2 years ago
Mohamed Ali Chebbi e403f3a4c4 Current master fails with image #2565: segmentation fault when trying to access outofband offest 2 years ago
Mohamed Ali Chebbi c4e514cff8 Current master fails with image #2565 2 years ago
Rosen Penev 498f4ce273 simplify loops
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev df91578250 clang-tidy: replace defines with enum
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 2526dcf5a1 const ref to ref conversions 2 years ago
Rosen Penev 6fd143d6a4 sonarlint cleanups
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 25189ef1e6 remove some unused defines.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d50d9527b5 convert manual loop to find 2 years ago
Gribouilleuse bd1e3c9acb
Uppercase Pentax to PENTAX at lines 819 to 822 2 years ago
Gribouilleuse 4074873146 Addition of 4 lenses Pentax
Addition of 4 lenses Pentax :
HD Pentax-D FA* 50mm F1.4 SDM AW
HD Pentax-D FA 70-210mm F4 ED SDM WR
HD Pentax-D FA* 85mm F1.4 SDM AW
HD Pentax-D FA 21mm F2.4 ED Limited DC WR
2 years ago
Miloš Komarčević 0db191257d Support for parsing DCP files 2 years ago
Rosen Penev c8c289613d remove EXIV2API from src
Already declared in include

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Miloš Komarčević fbf6100d3a Update Sony file format table 2 years ago
Rosen Penev 9322f137aa don't compile WIN32 stuff when iconv is present
MinGW has iconv, so this block of code can go away.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 3633f8d2c2 clang-tidy: remove const from data members
Found with cppcoreguidelines-avoid-const-or-ref-data-members

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 233f404ac7 direct initialize some structs
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Miloš Komarčević 0dd06894b3 makernotes: workaround for Olympus header corruption 2 years ago
Miloš Komarčević caddbf663d Fix shared object versioning 2 years ago
Miloš Komarčević 3403dabec2 Add Sony ZV-E1 ID 2 years ago
Miloš Komarčević 2f01f70eaf Add some more Nikon Z lenses 2 years ago
Rosen Penev 0fa22ed55d remove codecvt
Deprecated in C++17

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 2e33dad1d1 easyaccess const changes
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 357d970425 get rid of EXV_CALL_MEMBER_FN
std::invoke can be used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 05f2731d34 std::array removals
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 513b0e8bbd constexpr some constructors
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 0aed79ff57 remove several constructors
Just direct initialize

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 024e026bbb clang: small fixes
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 9ae339d39f clang: fix various documentation errors
Found with -Wdocumentation

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 22b12012a6 more SonarLint cleanups
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d29001f2a4 clang-tidy: don't use non const refs
Found with: google-runtime-references

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 01aab49f6f don't assign an fs::path to a string
Seems to trip up MemorySanitizer on ARM32.

Also applied various simplifications to the code using std::filesystem

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 763cfaf2b4 MSVC warning fixes
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 1f3d1f066f extern to static
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev ca95edc6bd random fixes
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d6c1059485 gcc: ifdef
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 0a8fedf249 gcc: noexcept
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 1f21164085 gcc: remove redundant struct
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 9a1f37ecbe get rid of Key() move operations
Because of Impl, there's no way this can work properly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev e854d93841 replace enable_if with if constexpr
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 2fd523873b remove MSVC hacks
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev dc196e729e remove old MSVC workaround
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 4a26eba0d9 fix compilation under FreeBSD
sys headers must come before libprocstat

meson is missing a libprocstat dependency. iconv is also broken with
meson and freebsd.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Kevin Backhouse 5d11208aa0
Minor refactorings to stop UBSAN from complaining. 2 years ago
Rosen Penev e2bf207477 add various moves
More efficient

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 518c52c2af
Merge pull request #2544 from kevinbackhouse/fix-matroska-null-pointer-deref
Check that the pointer isn't NULL
2 years ago
Kevin Backhouse e0ac920c87
Suggestion from @neheb 2 years ago
Kevin Backhouse 244799f480 Convert tail-recursion to loop to avoid stack exhaustion. 2 years ago
Kevin Backhouse a783320520 Use enforce, not assert, to avoid crash. 2 years ago
Kevin Backhouse 65259d8936
Check that the pointer isn't NULL. 2 years ago
Rosen Penev ff7bfb3798
Merge pull request #2422 from norbertwg/interpretation-for-Exif.Photo.LensSpecification
Interpretation for Exif.Photo.LensSpecification
2 years ago
norbertwg 10bbe3f4ae to avoid compiler warnings: 0.0 changed to 0.0f 2 years ago
norbertwg db2f4ee377 interpretation for ExifPhoto.LensSpecification
printLensSpecification is copied from old Nikon3MakerNote::print0x0084
call of Nikon3MakerNote::print0x0084 replaced by printLensSpecification

add two lens tags to EasyAccess API
Exif.Photo.LensSpecification and Exif.Nikon3.Lens

handling of zero; more precision for focal length

silence compiler warnings
2 years ago
Kevin Backhouse 14e26b5abd
Fix integer overflow which enables enforce to be bypassed. 2 years ago
Kevin Backhouse b5bf079444
Fix long-running loop 2 years ago
Rosen Penev 725875497b SonarLint cleanups 2 years ago
Mohamed Ali Chebbi 8b96ebc6b4 asfvideo fuzz issue : nb_headers should not exceed the max value of uint32 2 years ago
Rosen Penev b9d94e61fe coverity: remove dead code
Found with: CID 1521533
Unsigned compared against 0 (NO_EFFECT)

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 03d34bee04 get rid of convertToUint64
same as getULongLong

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev afbd9e7a76 coverity: add move operations
CID 1521171: Missing move assignment operator

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 839c03fe37 use find()
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 3fe6d78014 Remove some constructors
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 2205a14a06 clang-tidy: default init various members
Found with cppcoreguidelines-pro-type-member-init

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev dd25d9999b direct init structs
No need to deal with individual members

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 48caa32017 close socket before return
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 393150c0cd cast expression
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev f2c879333e fix off by 1 error
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Kevin Backhouse 230fbaf421 Use toInt64() for hours and minutes, because they should be integer valued. 2 years ago
Kevin Backhouse c20ee1a7f5 Use double type to improve floating point accuracy. 2 years ago
Rosen Penev 9f21b78311 add contains function
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 28358cd209 template second parameter for startsWith
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d7bf72634e use std::replace
shorter

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 0d50e444f2 use count_if
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 2d1691c1e2 replace array with vector
Using the constructor is one less line. Plus it seems to fix bugs in
Apple's clang.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 63b32ba3fb fix wrong snprintf format
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 61e5aefcc4 explicit conversion
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 75dae3fb96 replace localtime with _s/_r variant
cppcheck warns on localtime which is not necessarily threadsafe.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 625a2b8167 fix memory leak
Found with cppcheck.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 968a546dcb use upper() function
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 5eebbbcbfb make conversions explicit
Found with MSVC's C4244

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 31165b6a01 remove base constructor
Maybe works now

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Mohamed Ali Chebbi c555a70127 fuzz issue : add debug message for futur use 2 years ago
Mohamed Ali Chebbi 03fcc6cad2 fuzz issue : check that block is not corrupted before decoding 2 years ago
Rosen Penev 5b1bc2ef6d clang-tidy: no else after return
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 4e3a63d9b7 replace std::pair and tuple with C structs
fixes internal MSVC libc++ warnings

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 36e848d4fe clang-tidy: replace memcpy with copy_n
Found with bugprone-not-null-terminated-result

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 7f5430a7d4 use lower()
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 35b6780d02 clang-tidy: don't assign in if
Found with bugprone-assignment-in-if-condition

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d1a2cd0b76 clang-tidy: cast initial variable
Fixes: bugprone-integer-division

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev e188df1e14 fix implicit conversion
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev b3ff42f2d5 use if constexpr
Suggested by MSVC.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev 629f94eea3 unreachable code
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev d2ddf228ad replace switch with if/return
Fixes warning C4702: unreachable code

No other way to make all compilers gappy.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev dde8765a49 don't assign in while
Fixes MSVC's warning C4706: assignment within conditional expression

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev b324f80443 use numeric limits instead of -1
Fixes MSVC warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Rosen Penev a10c08ba1d swap variables
These are the wrong way around. MSVC warns with /W4.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2 years ago
Mohamed Ali Chebbi b8b4a041a1 compilation issue on Windows 2 years ago
Mohamed Ali Chebbi 51ef600fe6 compilation issue on Mac OS 2 2 years ago
Mohamed Ali Chebbi c7aec66195 compilation issue on Mac OS 2 years ago