mirror of
https://github.com/openharmony/third_party_libexif.git
synced 2026-07-21 00:26:31 -04:00
!111 【CppCrash】exif_get_shourt
Merge pull request !111 from AiChaosN/exif_get_short_0459
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
#define JPEG_MARKER_APP1 0xe1
|
||||
#undef JPEG_HEADER_LEN
|
||||
#define JPEG_HEADER_LEN 6
|
||||
#define ENTRY_SIZE 12
|
||||
|
||||
#define CHECKOVERFLOW(offset,datasize,structsize) (( offset >= datasize) || (structsize > datasize) || (offset > datasize - structsize ))
|
||||
|
||||
@@ -606,6 +607,13 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
|
||||
/* Check if we have enough data. */
|
||||
if (CHECKOVERFLOW(offset + ENTRY_SIZE * i, ds, sizeof(ExifShort))) {
|
||||
exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
|
||||
"Tag data past end of buffer (%u+2 > %u)", offset + ENTRY_SIZE * i, ds);
|
||||
return;
|
||||
}
|
||||
|
||||
tag = exif_get_short (d + offset + 12 * i, data->priv->order);
|
||||
switch (tag) {
|
||||
case EXIF_TAG_EXIF_IFD_POINTER:
|
||||
|
||||
Reference in New Issue
Block a user