Dan Fandrich [Sat, 23 Feb 2019 14:36:37 +0000 (15:36 +0100)]
Fixed a potential NPE in exif_mnote_data_pentax_save
Found by Coverity.
Dan Fandrich [Fri, 22 Feb 2019 15:17:01 +0000 (16:17 +0100)]
Added test-extract.c and a new regression test extract-parse.sh.
This extracts the EXIF tags from an image then compares the parsed value
of the extracted tags with those of the original file. This ensures that
the tags are written properly, without change in tag data. The MakerNote
tag sometimes has a harmless, slight difference in size because of
padding being removed.
However, in developing this test, I found that the Olympus variant 4
MakerNote has a huge size difference. This might be harmless (there
might just be a lot of padding removed) but it's also possible that
these MakerNotes aren't being properly parsed. This discrepancy should
be investigated.
The exif_data_save_data() function is also returning some JPEG markers
at the end of the buffer which I wasn't expecting. This also should be
investigated.
The test is enabled anyway in the meantime to reduce the chance of
regressions in the remaining tags.
Dan Fandrich [Fri, 22 Feb 2019 15:51:27 +0000 (16:51 +0100)]
Fixed a compiler warning in test-fuzzer
Dan Fandrich [Fri, 12 Oct 2018 14:01:45 +0000 (16:01 +0200)]
Improve deep recursion detection in exif_data_load_data_content.
The existing detection was still vulnerable to pathological cases
causing DoS by wasting CPU. The new algorithm takes the number of tags
into account to make it harder to abuse by cases using shallow recursion
but with a very large number of tags. This improves on commit
5d28011c
which wasn't sufficient to counter this kind of case.
The limitation in the previous fix was discovered by Laurent Delosieres,
Secunia Research at Flexera (Secunia Advisory SA84652) and is assigned
the identifier CVE-2018-20030.
Dan Fandrich [Thu, 7 Feb 2019 11:01:32 +0000 (12:01 +0100)]
Retry on error when downloading failmalloc in the Travis build.
Dan Fandrich [Tue, 5 Feb 2019 10:09:58 +0000 (11:09 +0100)]
Set the buffer size to 0 to indicate an error in exif_loader_get_buf.
Otherwise, the caller has no way of knowing an error occurred, such as the NULL
check done in the previous commit.
Dan Fandrich [Mon, 4 Feb 2019 15:27:17 +0000 (16:27 +0100)]
Fixed a potential NULL pointer dereference in exif_loader_get_buf.
This would only happen if given a NULL pointer by the application.
Found by Clang scan-build.
Dan Fandrich [Sat, 2 Feb 2019 19:01:49 +0000 (20:01 +0100)]
Added FreeBSD builds on Cirrus CI.
Build results will be at
https://cirrus-ci.com/github/libexif/libexif
Marcus Meissner [Sat, 2 Feb 2019 18:04:59 +0000 (19:04 +0100)]
handle non-0 terminated value returns as failure
Marcus Meissner [Sat, 2 Feb 2019 18:04:29 +0000 (19:04 +0100)]
the USERCOMMENT field should be returned \0 terminated (AFL)
Marcus Meissner [Sat, 2 Feb 2019 17:52:28 +0000 (18:52 +0100)]
abort early... we can get a very high number and this does not help
Dan Fandrich [Fri, 1 Feb 2019 11:29:02 +0000 (12:29 +0100)]
Add a MUSL build on Travis.
kyububba [Mon, 7 Jan 2019 14:19:41 +0000 (06:19 -0800)]
Add GPSHPositioningError tag defined in exif version 2.3.1 (#7)
* Update exif-tag.h
* Update exif-tag.c
Dan Fandrich [Fri, 30 Nov 2018 13:17:55 +0000 (14:17 +0100)]
Reformatted the matrix section of the Travis config file.
Dan Fandrich [Fri, 30 Nov 2018 09:37:39 +0000 (10:37 +0100)]
Added an ARM cross-compile build to Travis.
Dan Fandrich [Fri, 30 Nov 2018 12:46:10 +0000 (13:46 +0100)]
Fixed cross-compiling with the default options.
The failmalloc check doesn't make sense when cross-compiling, and
configure even errored out in this case.
Dan Fandrich [Sat, 10 Nov 2018 13:16:47 +0000 (14:16 +0100)]
Add check-failmalloc.sh to test OOM conditions.
This requires Failmalloc, a library that can be used along with glibc to
cause malloc calls to fail in a defined way. Configure will search for
libfailmalloc.so.0 in the usual places by default, or in a
user-specified location. The tests are skipped if it's not available.
Enable Failmalloc on the Travis coverage build.
Dan Fandrich [Fri, 9 Nov 2018 17:18:33 +0000 (18:18 +0100)]
Removed obsolete comment.
Dan Fandrich [Wed, 7 Nov 2018 19:19:18 +0000 (20:19 +0100)]
Added an Appveyor configuration for msys2.
[ci skip]
Dan Fandrich [Tue, 6 Nov 2018 00:03:54 +0000 (01:03 +0100)]
Enable AM_SILENT_RULES by default.
Verbose compile commands can be re-enabled with "make V=1" which is done
on the continuous build systems for easier debugging.
Dan Fandrich [Mon, 5 Nov 2018 23:53:56 +0000 (00:53 +0100)]
Be a bit more robust in the face of out-of-memory errors.
Do a better job in leaving things in a more consistent state after an
allocation failure. Also, make the tests report and handle OOM
conditions cleanly.
Dan Fandrich [Mon, 5 Nov 2018 20:44:37 +0000 (21:44 +0100)]
Run the libexif-testsuite tests in parallel now that they can be.
Dan Fandrich [Sat, 3 Nov 2018 15:43:24 +0000 (16:43 +0100)]
Use a glob to find test-suite.log on a failing Travis build.
When running on libexif-testsuite, the file is in tests/ not test/.
Dan Fandrich [Thu, 1 Nov 2018 17:32:04 +0000 (18:32 +0100)]
Added the test/testdata/* files to the dist tar ball.
This was missed in commit
5c93e6b4.
Dan Fandrich [Thu, 1 Nov 2018 13:24:31 +0000 (14:24 +0100)]
Add swap-byte-order.sh to test libexif's byte order conversion function.
This is accomplished by adding a feature to test-parse.c to switch the
byte order before dumping the EXIF output. Additionally, the MakerNote
values are now logged in the dump as well, in the same way as the
regular tags, to better catch regressions.
This new test uncovered a bug in the decoding of the
MNOTE_NIKON_TAG_FIRMWARE tag whose data should not be treated as being
endian-specific.
Dan Fandrich [Thu, 1 Nov 2018 10:23:06 +0000 (11:23 +0100)]
Added a thumbnail to test-mem.c to ensure it's properly freed.
Dan Fandrich [Wed, 31 Oct 2018 14:11:51 +0000 (15:11 +0100)]
Use exif_mnote_data_get_name in test-parse.c
This is analagous to exif_tag_get_name that is used for the regular
tags.
Dan Fandrich [Sat, 27 Oct 2018 10:57:21 +0000 (12:57 +0200)]
Add code coverage using libexif-testsuite.
This runs the libexif, exif and libexif-testsuite tests to get a more
complete indication of total test coverage.
Dan Fandrich [Fri, 28 Sep 2018 13:25:57 +0000 (15:25 +0200)]
Ignore some more automake files to .gitignore
Dan Fandrich [Mon, 3 Sep 2018 00:49:19 +0000 (02:49 +0200)]
Add a .appveyor.yml file to enable AppVeyor CI integration.
Only Cygwin environments are tested for now.
Results are available at
https://ci.appveyor.com/project/dfandrich/libexif
Dan Fandrich [Sun, 2 Sep 2018 14:26:06 +0000 (16:26 +0200)]
Removed some FIXME comments.
Dan Fandrich [Wed, 29 Aug 2018 20:21:36 +0000 (22:21 +0200)]
Display the test log on a Travis test failure.
Dan Fandrich [Tue, 28 Aug 2018 23:32:36 +0000 (01:32 +0200)]
Unify some parameter names between declarations and definitions.
Dan Fandrich [Tue, 28 Aug 2018 20:19:48 +0000 (22:19 +0200)]
Added ASAN and UBSAN builds and upgrade to clang-6 and gcc-8.
An updated libtool is needed to pass the sanitize options to the
compiler. The new compilers are undocumented but available.
Dan Fandrich [Tue, 28 Aug 2018 14:52:53 +0000 (16:52 +0200)]
Added clang-5 and gcc-7 Travis build configurations.
Marcus Meissner [Sun, 26 Aug 2018 11:15:56 +0000 (13:15 +0200)]
rsync from translation project
Christian Kirbach [Sun, 26 Aug 2018 11:15:32 +0000 (13:15 +0200)]
updated german
Dan Fandrich [Fri, 24 Aug 2018 16:37:11 +0000 (18:37 +0200)]
Added more configurations to the Travis build matrix.
Dan Fandrich [Sat, 18 Aug 2018 05:02:03 +0000 (07:02 +0200)]
Install the autopoint package for Travis builds.
This is needed because gettext is used.
Dan Fandrich [Sat, 18 Aug 2018 01:27:57 +0000 (03:27 +0200)]
Add a .travis.yml file to enable Travis CI integration.
Dan Fandrich [Tue, 14 Aug 2018 22:55:25 +0000 (00:55 +0200)]
Display unknown Canon MakerNote tag data in exif_mnote_data_get_value
Displaying an integer value is better than not displaying anything at
all, and makes Canon match the other supported MakerNote types.
Dan Fandrich [Tue, 14 Aug 2018 16:18:47 +0000 (18:18 +0200)]
Support signed types in some generic MakerNote formatters.
The unsigned types are now also formatted correctly as unsigned in a
number of them.
Dan Fandrich [Mon, 13 Aug 2018 00:30:26 +0000 (02:30 +0200)]
Updated translations from launchpad.net
Updated Russian translation by Eugene Roskin
Updated Turkish translation by kulkke
Dan Fandrich [Sun, 12 Aug 2018 13:39:51 +0000 (15:39 +0200)]
Updated translations from translationproject.org.
Updated Ukrainian translation by Yuri Chornoivan
Updated Vietnamese translation by Trần Ngọc Quân
msgid updates in many other languages.
Dan Fandrich [Fri, 1 Jun 2018 18:17:43 +0000 (20:17 +0200)]
Add a new parsing regression test.
This is intended as a fast check that all tags, including MakerNotes, can be
parsed. It is not intended to replace the much more complete tests in
libexif-testsuite, but rather add some basic parsing test coverage without
having to download and configure a separate repository. As more tags are
identified and supported in the library in the future, the golden test files
will need to be updated to match.
The input files cover all four major MakerNote types supported by libexif and a
large proportion of the variants within those types. The test files have had
their JPEG image data stripped out to make them smaller (which also makes them
noncompliant) but it's good enough for libexif to read the tags as well as some
other EXIF tools that don't care about the image.
Patch from Google.
Dan Fandrich [Fri, 29 Jun 2018 21:49:56 +0000 (23:49 +0200)]
Remove the inline keyword from exif_tag_table_count()
This function is called from two object files and some compilers won't
export it when it's explicitly marked inline.
Fixes https://sourceforge.net/p/libexif/bugs/120/ reported by Reid Kleckner.
Dan Fandrich [Wed, 13 Jun 2018 19:45:02 +0000 (21:45 +0200)]
Fixed a number of compile warnings from gcc 7.3
Dan Fandrich [Fri, 1 Jun 2018 17:55:57 +0000 (19:55 +0200)]
Removed a C++-style comment
Dan Fandrich [Thu, 1 Feb 2018 00:26:54 +0000 (01:26 +0100)]
Fixed some issues with truncating strings in exif_entry_get_value
If the buffer size provided forced the result to be truncated, the
truncation was not always properly performed. test-values.c was enhanced
to check proper truncation in a much wider variety of cases.
Dan Fandrich [Fri, 18 May 2018 08:08:48 +0000 (10:08 +0200)]
Skip uninteresting APPn markers when searching for EXIF block.
libexif rejects images where any APPn marker other than APP0 appears
before APP1. The EXIF spec says that this is not allowed, but there are
a lot of images where it happens anyway (e.g., from Photoshop).
Patch from Google.
Dan Fandrich [Fri, 11 May 2018 16:25:22 +0000 (18:25 +0200)]
Use a unique log message for an Exif header found at the start.
This occurs if exif_data_load_data is given just an Exif data block vs.
a JPEG block that must be scanned for the APP1 marker.
Dan Fandrich [Fri, 20 Apr 2018 16:05:19 +0000 (18:05 +0200)]
Reduce maximum recursion depth in exif_data_load_data_content
This only needs to be a small, single digit integer for normal files,
and reducing the maximum closer to this reduces the time and space
needed to detect pathological cases.
Dan Fandrich [Wed, 31 Jan 2018 21:31:11 +0000 (22:31 +0100)]
Fixed a handful of strange character encoding issues in comments
Dan Fandrich [Wed, 27 Dec 2017 22:59:43 +0000 (23:59 +0100)]
Replaced obsolete references to CVS and SourceForge.
Also, switched links to https: where available.
Marcus Meissner [Wed, 26 Jul 2017 15:30:19 +0000 (17:30 +0200)]
also switch byte order, and also test saving
Marcus Meissner [Wed, 26 Jul 2017 08:13:56 +0000 (10:13 +0200)]
check data size before reading daat
Marcus Meissner [Wed, 26 Jul 2017 07:35:45 +0000 (09:35 +0200)]
check for good sizes in the byteorder swap function in the makernote code.
fixes
https://sourceforge.net/p/libexif/bugs/128/
Marcus Meissner [Tue, 25 Jul 2017 22:04:17 +0000 (00:04 +0200)]
abort earlier
Marcus Meissner [Tue, 25 Jul 2017 21:44:44 +0000 (23:44 +0200)]
fixes some (not all) buffer overreads during decoding pentax makernote entries.
This should fix:
https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328
Marcus Meissner [Tue, 25 Jul 2017 21:38:56 +0000 (23:38 +0200)]
On saving makernotes, make sure the makernote container tags has a type
with 1 byte components.
Fixes (at least):
https://sourceforge.net/p/libexif/bugs/130
https://sourceforge.net/p/libexif/bugs/129
Marcus Meissner [Mon, 24 Jul 2017 13:20:58 +0000 (15:20 +0200)]
add a test-fuzzer that can be used to be called by AFL that tries to
do various exif decoding on the passed file.
Dan Fandrich [Fri, 26 May 2017 14:16:41 +0000 (07:16 -0700)]
Fixed an unused variable warning
Dan Fandrich [Fri, 26 May 2017 13:13:14 +0000 (06:13 -0700)]
Fixed the internal MakerNote tag structs to use the correct enum type.
Patch by Google.
Dan Fandrich [Fri, 26 May 2017 11:22:17 +0000 (04:22 -0700)]
Fixed some type warnings in log messages by explicitly casting to unsigned
Dan Fandrich [Fri, 26 May 2017 09:50:34 +0000 (02:50 -0700)]
Removed some extraneous #define DEBUG
Dan Fandrich [Fri, 26 May 2017 08:41:02 +0000 (01:41 -0700)]
Use the standard assert() function instead of rolling our own
Dan Fandrich [Thu, 1 Sep 2016 22:40:20 +0000 (15:40 -0700)]
Recent updates
Dan Fandrich [Thu, 1 Sep 2016 22:38:43 +0000 (15:38 -0700)]
configure.ac: Made some changes to void warnings with modern automake versions
Dan Fandrich [Thu, 1 Sep 2016 21:53:52 +0000 (14:53 -0700)]
Mention updated Swedish translation
Dan Fandrich [Thu, 1 Sep 2016 21:52:02 +0000 (14:52 -0700)]
Mention translation updates
Dan Fandrich [Thu, 1 Sep 2016 21:51:25 +0000 (14:51 -0700)]
Added Malay translation from launchpad.net
Dan Fandrich [Thu, 1 Sep 2016 21:47:05 +0000 (14:47 -0700)]
Cleaned up non-TP translations to match the latest strings:
be.po bs.po sq.po sr.po tr.po zh_CN.po
Dan Fandrich [Thu, 1 Sep 2016 21:34:05 +0000 (14:34 -0700)]
Updated non-TP translations from launchpad.net's "yakkety"
translations: en_AU.po
Dan Fandrich [Thu, 1 Sep 2016 21:26:19 +0000 (14:26 -0700)]
po/ms.po: Added Malay translation from launchpad.net
Dan Fandrich [Thu, 1 Sep 2016 20:57:20 +0000 (13:57 -0700)]
Updated non-TP translations from launchpad.net's "yakkety"
translations:
bs.po en_GB.po pt.po pt_BR.po ru.po
Dan Fandrich [Thu, 1 Sep 2016 20:20:31 +0000 (13:20 -0700)]
po/sv.po: Updated Swedish translation by Sebastian Rasmussen
Dan Fandrich [Thu, 1 Sep 2016 20:08:20 +0000 (13:08 -0700)]
Fixed a typo in translatable text (fix #123 thanks to Sebastian)
Marcus Meissner [Sat, 2 Apr 2016 13:04:08 +0000 (15:04 +0200)]
updated vietnamese
Marcus Meissner [Sat, 2 Apr 2016 13:03:45 +0000 (15:03 +0200)]
updated spanish
Marcus Meissner [Sat, 2 Apr 2016 13:03:05 +0000 (15:03 +0200)]
updated german
Marcus Meissner [Sat, 2 Apr 2016 13:02:40 +0000 (15:02 +0200)]
updated svensk
Marcus Meissner [Mon, 26 May 2014 06:24:17 +0000 (08:24 +0200)]
added AC_SYS_LARGEFILE just in case we ever get jpegs larger than 2GB
Dan Fandrich [Sun, 5 Jan 2014 10:13:43 +0000 (02:13 -0800)]
po/es.po: Updated Spanish translation by Antonio Ceballos
Dan Fandrich [Sat, 13 Jul 2013 20:36:59 +0000 (13:36 -0700)]
po/da.po: Updated Danish translation by Joe Hansen
po/de.po: Updated German translation by Christian Kirbach
po/fr.po: Updated French translation by Frédéric Marchal
po/uk.po: Updated Ukrainian translation by Yuri Chornoivan
Dan Fandrich [Sat, 13 Jul 2013 20:35:48 +0000 (13:35 -0700)]
FNumber => F-Number
Dan Fandrich [Sat, 13 Jul 2013 20:34:50 +0000 (13:34 -0700)]
Fixed a C89 compatibility issue (bug #117 reported by
Guenter Knauf)
Dan Fandrich [Sat, 23 Feb 2013 20:18:14 +0000 (12:18 -0800)]
po/pl.po: Updated Polish translation by Jakub Bogusz
Dan Fandrich [Fri, 13 Jul 2012 20:12:39 +0000 (13:12 -0700)]
I suppose I should take some credit (for better or for worse)
Dan Fandrich [Thu, 12 Jul 2012 20:32:43 +0000 (13:32 -0700)]
Prepare for continued development
Dan Fandrich [Thu, 12 Jul 2012 19:25:21 +0000 (12:25 -0700)]
Prepare for continued development
Dan Fandrich [Thu, 12 Jul 2012 20:24:14 +0000 (13:24 -0700)]
Mention the fixed security issues in the NEWS file
Dan Fandrich [Thu, 12 Jul 2012 17:48:14 +0000 (10:48 -0700)]
Released 0.6.21
Dan Fandrich [Thu, 12 Jul 2012 17:44:42 +0000 (10:44 -0700)]
List the various security fixes just checked in
Dan Fandrich [Thu, 12 Jul 2012 17:29:05 +0000 (10:29 -0700)]
Fixed some possible division-by-zeros in Olympus-style makernotes
This fixes bug #3434545, a.k.a. CVE-2012-2837
Dan Fandrich [Thu, 12 Jul 2012 17:28:26 +0000 (10:28 -0700)]
Fix a buffer overflow on corrupted JPEG data
An unsigned data length might wrap around when decremented
below zero, bypassing sanity checks on length.
This code path can probably only occur if exif_data_load_data()
is called directly by the application on data that wasn't parsed
by libexif itself.
This solves the other part of CVE-2012-2836
Dan Fandrich [Thu, 12 Jul 2012 17:27:27 +0000 (10:27 -0700)]
Fix a buffer overflow on corrupt EXIF data.
This fixes bug #3434540 and fixes part of CVE-2012-2836
Dan Fandrich [Thu, 12 Jul 2012 17:26:01 +0000 (10:26 -0700)]
Fixed a buffer overflow problem in exif_entry_get_value
If the application passed in a buffer length of 0, then it would
be treated as the buffer had unlimited length.
This fixes CVE-2012-2841
Dan Fandrich [Thu, 12 Jul 2012 17:13:03 +0000 (10:13 -0700)]
Fixed an out of bounds read on corrupted input.
The EXIF_TAG_COPYRIGHT tag ought to be, but perhaps is not,
NUL-terminated.
This fixes CVE-2012-2812
Dan Fandrich [Thu, 12 Jul 2012 17:12:24 +0000 (10:12 -0700)]
Don't read past the end of a tag when converting from UTF-16
This fixes CVE-2012-2813
Dan Fandrich [Thu, 12 Jul 2012 17:11:30 +0000 (10:11 -0700)]
Fixed an off-by-one error in exif_convert_utf16_to_utf8()
This can cause a one-byte NUL write past the end of the buffer.
This fixes CVE-2012-2840