Commit Graph

114 Commits

Author SHA1 Message Date
Luis Díaz Más
f30022d73d
Fix issues detected with PVS-Studio + other little improvements (#1689)
* avoid re-declaration of constant variables

* Replace pthreads critical section with std::mutex

* ci - better naming

* cmake - increase minimum version to 3.11. Use project DESCRIPTION

* fix - do not treat string::find() return type as bool

* remove conditions that were always true

* remove condition that were always false

* Remove EXV_HAVE_GMTIME_R which is not used anymore

* pixelWidth_ was inherited from Exiv2::Image

The width & height variables in the TiffImage class need to be mutable
to be able to change their values on the getters pixelHeight() and
pixelWidth() ... Do not ask me why ...

* Remove superfluous if

* pvs:V766 item with identical key added already

* pvs:V730 not all members were initialized (time)

* pvs:V730 not all members are initialized

* pvs:v668 no point in testing pointer against null after new

* pvs:V1048 variable assigned the same value

* replace c-style dynamic vector with std one

* pvs:547 fakeData is always true

* Remove useless constructor in derived class

* pvs:V690 modern way to disable copy-ctor

* Replace malloc/free with new/delete. No need to check for null

* pvs:V1028 cast operands and not result

* Remove custom MIN/MAX functions

* pvs:V595 pointer used before verified against null

* pvs: index used before being checked

* pvs:V1028 possible overflow. Cast operands

* pvs:v575 potential null pointer passed to other functions

* pvs:V547 deal with always true/false expressions

* pvs:V560 part of conditional expressions always false or true

* pvs:V701 possible break in realloc -> move to std::vector

* Make some classes 'final'

* Replace sprintf with std::to_string()

* fix compilation on windows
2021-06-01 12:39:10 +02:00
Christoph Hasse
758dd6bbc6 refactor!: remove free() function from DataBuf to avoid potential problems, see #1542 2021-05-27 08:26:00 +02:00
Rosen Penev
2c57f214c5 clang-tidy: use nullptr
Found with modernize-use-nullptr

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-26 08:31:45 +02:00
Rosen Penev
743da1a564 clang-tidy: use C++ casting
Found with google-readability-casting

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-20 07:29:02 +02:00
Rosen Penev
b8712188bb clang-tidy: use auto
Found with modernize-use-auto

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-17 21:52:03 +02:00
Rosen Penev
8e178e912e replace {} initialization with fill
Old compilers don't implement {} correctly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-16 11:27:10 +02:00
Rosen Penev
fdf9d3799c clang-tidy: don't use else after return
Found with llvm-else-after-return

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-15 17:32:56 +02:00
Rosen Penev
9642e3cceb clang-tidy: remove pointless string init
Found with readability-redundant-string-init

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-12 07:12:15 +02:00
Rosen Penev
8337462032 clang-tidy: use empty() instead of comparing size
Found with readability-container-size-empty

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-11 22:02:47 +02:00
Rosen Penev
1dc1186760 clang-tidy: simplify boolean expressions
Found with readability-simplify-boolean-expr

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-09 17:30:46 +02:00
Rosen Penev
4ceb325c8f clang-tidy: range for loop conversions
Found with modernize-loop-convert

Ran through git clang-format.

Also removed several questionable loops and replaced with simpler
algorithms.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-03 14:50:04 +02:00
Luis Díaz Más
de4d43d4d1 Fix warnings EXIV2_TEAM_EXTRA_WARNINGS
Most of the warnings fixed were:
- Hiding of local variables
- Hiding of globals
- Useless casts
- Conversions between float/double
2021-04-18 18:49:58 +02:00
Luis Díaz Más
0bbaa6eff3 cpp: Replace auto_ptr by unique_ptr 2021-04-15 06:56:11 +02:00
Robin Mills
d632988bbd Massive code prolog cleanup. 2021-03-17 13:34:21 +00:00
clanmills
9fa6d3965a C++ changes requested by @piponazo. Fix python png_test() recommended by @LeoHsiao1. Update reference output. 2020-10-09 18:50:27 +01:00
clanmills
834dca39d0 Code changes 2020-10-09 06:40:28 +01:00
clanmills
7383d96d47 Fix compiler error when using EXIV2_DEBUG_MESSAGES. 2020-05-31 10:22:46 +01:00
Luis Díaz Más
113136e134 Replace DEBUG with EXIV2_DEBUG_MESSAGES
Fixes #926
2019-07-12 11:14:35 +02:00
Kevin Backhouse
6068df4c01 Add better bounds checking in PngImage::printStructure(). (#862) 2019-05-17 05:44:28 +02:00
Kevin Backhouse
8cd95e2218 Avoid negative integer overflow when chunkLength == 0.
This fixes #789.
2019-05-06 06:27:10 +02:00
Kevin Backhouse
6fa2e31206 Avoid negative integer overflow when iccOffset > chunkLength.
This fixes #790.
2019-05-05 12:21:32 +02:00
Luis Diaz Mas
127c2eac0e Fix warnings on MSVC 2019-01-25 08:12:59 +01:00
Luis Díaz Más
704fc56d52 Keep the profileName from readMetadata and use it in writeMetadata 2019-01-24 23:16:25 +01:00
Luis Díaz Más
e385599067 Refactoring to make the doe more readable. Fix icc tests 2019-01-24 22:30:30 +01:00
Luis Díaz Más
d1097fab59 Factor our function to read PNG Chunk info 2019-01-24 21:21:47 +01:00
Luis Díaz Más
914a8c5585 Factor out exception throw in different places inside isPngType 2019-01-24 18:52:38 +01:00
Luis Diaz Mas
88f22e13cb Fix ICC profile in PNG images 2019-01-21 23:10:12 +01:00
Dan Čermák
962962a8e9 Port Iptc::printStructure & getUshort to slices API
This fixes #211, #210, #209
2018-10-11 14:06:16 +02:00
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
2018-10-11 14:06:16 +02:00
Luis Díaz Más
603692a1d8 Copyright to Exiv2 authors 2018-09-12 19:22:31 +02:00
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_
2018-07-29 00:20:43 +02:00
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.
2018-07-29 00:20:30 +02:00
Dan Čermák
607b19111c [DataBuf] Replace wrong usage of release() with free() 2018-07-28 23:50:33 +02:00
Luis Diaz Mas
a227fcda39 debug: Add new debug message to print the PNG chunk being processed 2018-05-23 10:57:13 +02:00
Luis Diaz Mas
b0696d4da6 style: Apply formatting guidelines to one-line ifs 2018-05-23 10:57:13 +02:00
Luis Diaz Mas
4922df6018 Replace '\n' by endl that flush content. Useful for debugging 2018-05-23 10:57:13 +02:00
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
2018-02-22 14:55:12 +01:00
Dan Čermák
efe2ccdcb6 Replaced all hardcoded error codes with ker... constants 2018-02-18 09:28:57 +01:00
tbeu
5b5987a596 Remove obsolete EXIV2_RCSID 2017-11-19 11:17:12 +01:00
tbeu
5df8b01b77 Remove obsolete svn revision 2017-11-19 11:17:11 +01:00
clanmills
327b3f6c4d Fix https://github.com/Exiv2/exiv2/issues/83 2017-09-29 13:59:12 +01:00
Robin Mills
82dbe6199d https://github.com/Exiv2/exiv2/issues/11 Closed. Coincidentally Raphael reported issues with Visual Studio 2015 Community Edition. Issue 11 and Raphael's issues should now be resolved. 2017-06-29 22:13:26 +01:00
Robin Mills
6d5c2c3256 Getting ready to release v0.26 2017-03-08 20:42:28 +00:00
Robin Mills
2ebacb6b0b #1272 Use in-memory temporary files. 2017-03-05 17:42:12 +00:00
Robin Mills
f5956d5db2 #1230 Fixes to read tiff with web-ready. Includes the BasicIo expiremental API readUnmarked() and markRead() which I will remove later. 2016-10-17 15:48:42 +00:00
Robin Mills
5b38d4528a #1108 Added code to dump Exif, IPTC and iTXt/zTXt comment/description blocks for PNG files. 2016-10-06 19:52:52 +00:00
Robin Mills
793bd6ca63 #1109 MinGW/32 daily build. Fix GCC warning on MinGW/32 gcc 4.9.2 2016-09-20 16:18:07 +00:00
Robin Mills
d321dad695 #1108 Fixing issue with pngimage::printStructure() and the "Software" string in test/data/imagemagick.png 2016-09-16 11:19:07 +00:00
Robin Mills
1bea0c6aeb #1108 Better string formatting (and associated test/data changes). Tweaks to code layout for r4497. 2016-09-15 14:09:43 +00:00
Robin Mills
458580373a #1108 Enhanced pngimage::printStructure() to display checksum 2016-09-15 13:15:48 +00:00