diff --git a/librz/bin/format/mach0/coresymbolication.c b/librz/bin/format/mach0/coresymbolication.c index 26363c3da4c..8d638c8bf39 100644 --- a/librz/bin/format/mach0/coresymbolication.c +++ b/librz/bin/format/mach0/coresymbolication.c @@ -199,7 +199,7 @@ RZ_API RzCoreSymCacheElement *rz_coresym_cache_element_new(RzBinFile *bf, RzBuff RzCoreSymCacheElementSegment *seg = &result->segments[i]; seg->paddr = seg->vaddr = rz_read_le64(cursor); cursor += 8; - if (cursor >= end) { + if ((cursor + 8) >= end) { goto beach; } seg->size = seg->vsize = rz_read_le64(cursor); diff --git a/librz/bin/p/bin_dyldcache.c b/librz/bin/p/bin_dyldcache.c index a7d8ea48edc..18678a309be 100644 --- a/librz/bin/p/bin_dyldcache.c +++ b/librz/bin/p/bin_dyldcache.c @@ -434,6 +434,11 @@ static RzList *classes(RzBinFile *bf) { ut8 *pointers_end = pointers + sections[i].size; for (; cursor < pointers_end; cursor += 8) { + if ((cursor + 8) > pointers_end) { + MACH0_(mach0_free) + (mach0); + goto beach; + } ut64 pointer_to_class = rz_read_le64(cursor); RzBinClass *klass;