diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2023-06-23 13:34:59 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2023-06-23 13:56:32 +0200 |
commit | 4f57070e272f506731557b35b484429a968c7dd2 (patch) | |
tree | 7e9502ad265f58e07c46c3a124b0d13755c7bf92 | |
parent | 2dc4e9c13b33ae38099f159a9fd87b4c8ea31978 (diff) | |
download | fiv-4f57070e272f506731557b35b484429a968c7dd2.tar.gz fiv-4f57070e272f506731557b35b484429a968c7dd2.tar.xz fiv-4f57070e272f506731557b35b484429a968c7dd2.zip |
Fix 32-bit build warnings
-rw-r--r-- | fiv-io.c | 6 | ||||
-rw-r--r-- | tiffer.h | 10 |
2 files changed, 11 insertions, 5 deletions
@@ -1263,7 +1263,7 @@ parse_mpf_index_ifd(struct tiffer *T) static bool parse_mpf( - GPtrArray *individuals, const uint8_t *mpf, size_t len, const uint8_t *end) + GPtrArray *individuals, const uint8_t *mpf, size_t len, size_t total_len) { struct tiffer T; if (!tiffer_init(&T, mpf, len) || !tiffer_next_ifd(&T)) @@ -1274,7 +1274,7 @@ parse_mpf( uint32_t *offsets = parse_mpf_index_ifd(&T); if (offsets) { for (const uint32_t *o = offsets; *o; o++) - if (*o <= end - mpf) + if (*o <= total_len) g_ptr_array_add(individuals, (gpointer) mpf + *o); free(offsets); } @@ -1378,7 +1378,7 @@ parse_jpeg_metadata(const char *data, size_t len, struct jpeg_metadata *meta) if (meta->mpf && marker == APP2 && p - payload >= 8 && !memcmp(payload, "MPF\0", 4) && !meta->mpf->len) { payload += 4; - parse_mpf(meta->mpf, payload, p - payload, end); + parse_mpf(meta->mpf, payload, p - payload, end - payload); } // TODO(p): Extract the main XMP segment. @@ -156,12 +156,18 @@ tiffer_next_ifd(struct tiffer *self) return tiffer_u16(self, &self->remaining_fields); } +static size_t +tiffer_length(const struct tiffer *self) +{ + return self->begin > self->end ? 0 : self->end - self->begin; +} + /// Initialize a derived TIFF reader for a subIFD at the given location. static bool tiffer_subifd( const struct tiffer *self, uint32_t offset, struct tiffer *subreader) { - if (self->begin > self->end || self->end - self->begin < offset) + if (tiffer_length(self) < offset) return false; *subreader = *self; @@ -332,7 +338,7 @@ tiffer_next_entry(struct tiffer *self, struct tiffer_entry *entry) if (values_size <= sizeof offset) { entry->p = self->p; self->p += sizeof offset; - } else if (tiffer_u32(self, &offset) && self->end - self->begin >= offset) { + } else if (tiffer_u32(self, &offset) && tiffer_length(self) >= offset) { entry->p = self->begin + offset; } else { return false; |