mirror of
https://github.com/cdcseacave/TinyEXIF.git
synced 2026-07-21 19:23:01 +04:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b6ea1b7bbe | |||
| 841e292929 |
+9
-3
@@ -205,7 +205,10 @@ public:
|
||||
bool Fetch(uint16_t& val, uint32_t idx) const {
|
||||
if (!IsShort() || length <= idx)
|
||||
return false;
|
||||
val = parse16(buf + GetSubIFD() + idx*2, alignIntel);
|
||||
const uint32_t offset = GetSubIFD() + idx*2;
|
||||
if (offset + 2 > len)
|
||||
return false;
|
||||
val = parse16(buf + offset, alignIntel);
|
||||
return true;
|
||||
}
|
||||
bool Fetch(uint32_t& val) const {
|
||||
@@ -229,7 +232,10 @@ public:
|
||||
bool Fetch(double& val, uint32_t idx) const {
|
||||
if (!IsRational() || length <= idx)
|
||||
return false;
|
||||
val = parseRational(buf + GetSubIFD() + idx*8, alignIntel, IsSRational());
|
||||
const uint32_t offset = GetSubIFD() + idx*8;
|
||||
if (offset + 8 > len)
|
||||
return false;
|
||||
val = parseRational(buf + offset, alignIntel, IsSRational());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -295,7 +301,7 @@ public:
|
||||
if (value[num_components-1] == '\0')
|
||||
value.resize(num_components-1);
|
||||
} else
|
||||
if (base+data+num_components <= len) {
|
||||
if ((uint64_t)base+data+num_components <= (uint64_t)len) {
|
||||
const char* const sz((const char*)buf+base+data);
|
||||
unsigned num(0);
|
||||
while (num < num_components && sz[num] != '\0')
|
||||
|
||||
Reference in New Issue
Block a user