diff --git a/camlibs/ptp2/ptp-pack.c b/camlibs/ptp2/ptp-pack.c index 7bb49d654..30b130108 100644 --- a/camlibs/ptp2/ptp-pack.c +++ b/camlibs/ptp2/ptp-pack.c @@ -1861,7 +1861,7 @@ ptp_unpack_CANON_changes (PTPParams *params, unsigned char* data, int datasize, } if ((size == 8) && (type == 0)) break; - if (curdata - data + size >= datasize) { + if ((curdata - data) + size >= datasize) { ptp_debug (params, "canon eos event decoder ran over supplied data, skipping entries"); break; } @@ -1869,8 +1869,10 @@ ptp_unpack_CANON_changes (PTPParams *params, unsigned char* data, int datasize, unsigned int j; entries++; + if (size < 12+2) + break; for (j=0;j<31;j++) - if (dtoh32a(curdata+12) & (1<