aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-03-20 23:06:34 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-03-20 23:06:34 +0000
commit1032329bc164387a081dcda04529592e4594ebca (patch)
tree388efb29d7dec913e943931ac08952408292903b
parent053569192c851e092397ebe610e9e813861e570d (diff)
parent35b08ba4e03f677398ccdbf6531e5ec5a09b71f9 (diff)
downloadlibexif-android10-qpr3-release.tar.gz
Change-Id: I1b4769163d90741626d9e61a15ca9d89e51e2639
-rw-r--r--libexif/exif-data.c5
-rw-r--r--libexif/exif-entry.c4
2 files changed, 6 insertions, 3 deletions
diff --git a/libexif/exif-data.c b/libexif/exif-data.c
index 80d9346..5a7763b 100644
--- a/libexif/exif-data.c
+++ b/libexif/exif-data.c
@@ -315,7 +315,10 @@ exif_data_load_data_thumbnail (ExifData *data, const unsigned char *d,
unsigned int ds, ExifLong o, ExifLong s)
{
/* Sanity checks */
- if ((o + s < o) || (o + s < s) || (o + s > ds) || (o > ds)) {
+ uint64_t o64 = (uint64_t) o;
+ uint64_t s64 = (uint64_t) s;
+ uint64_t ds64 = (uint64_t) ds;
+ if ((o64 + s64) > ds64) {
exif_log (data->priv->log, EXIF_LOG_CODE_DEBUG, "ExifData",
"Bogus thumbnail offset (%u) or size (%u).",
o, s);
diff --git a/libexif/exif-entry.c b/libexif/exif-entry.c
index 0f72865..4a90842 100644
--- a/libexif/exif-entry.c
+++ b/libexif/exif-entry.c
@@ -1043,12 +1043,12 @@ exif_entry_get_value (ExifEntry *e, char *val, unsigned int maxlen)
d = 0.;
entry = exif_content_get_entry (
e->parent->parent->ifd[EXIF_IFD_0], EXIF_TAG_MAKE);
- if (entry && entry->data &&
+ if (entry && entry->data && (entry->size > 7) &&
!strncmp ((char *)entry->data, "Minolta", 7)) {
entry = exif_content_get_entry (
e->parent->parent->ifd[EXIF_IFD_0],
EXIF_TAG_MODEL);
- if (entry && entry->data) {
+ if (entry && entry->data && (entry->size > 8)) {
if (!strncmp ((char *)entry->data, "DiMAGE 7", 8))
d = 3.9;
else if (!strncmp ((char *)entry->data, "DiMAGE 5", 8))