!111 【CppCrash】exif_get_shourt

Merge pull request !111 from AiChaosN/exif_get_short_0459
This commit is contained in:
openharmony_ci
2025-01-22 02:50:52 +00:00
committed by Gitee
+8
View File
@@ -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: