aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuzhen Wang <shuzhenwang@google.com>2020-03-02 14:52:12 -0800
committerAnis Assi <anisassi@google.com>2020-03-12 13:34:08 -0700
commite4db0a5060f28641e022f39c8e75a20e7072fac3 (patch)
treee87c8870657050fa806d086ef61f7654a259f8da
parenta64e1fb34d12ef69c9774b351b801681d3466928 (diff)
downloadlibexif-security-oc-mr1-release.tar.gz
Make sure the number of bytes being copied from doesn't exceed the source buffer size. Test: testPocBug_148705132 Bug: 148705132 Change-Id: Ib0f8441f2d0d4ed33c324630a9400a8412209da7 (cherry picked from commit 127f882f67b38def9b5424987c32e21064f4d49c)
-rw-r--r--libexif/exif-data.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libexif/exif-data.c b/libexif/exif-data.c
index 67df4db..b8324b8 100644
--- a/libexif/exif-data.c
+++ b/libexif/exif-data.c
@@ -295,7 +295,9 @@ exif_data_save_data_entry (ExifData *data, ExifEntry *e,
/* Write the data. Fill unneeded bytes with 0. Do not crash with
* e->data is NULL */
if (e->data) {
- memcpy (*d + 6 + doff, e->data, s);
+ unsigned int len = s;
+ if (e->size < s) len = e->size;
+ memcpy (*d + 6 + doff, e->data, len);
} else {
memset (*d + 6 + doff, 0, s);
}