Skip to content

Commit eb1f3f2

Browse files
authored
Merge pull request #225 from struct/fix_pointer_search
untag pointers before searching
2 parents b4e146b + b14a84a commit eb1f3f2

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

src/iso_alloc_mem_tags.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ INTERNAL_HIDDEN uint8_t _iso_alloc_get_mem_tag(void *p, iso_alloc_zone_t *zone)
2424
}
2525

2626
_mtp += (chunk_offset / zone->chunk_size);
27-
;
27+
2828
return *_mtp;
2929
#else
3030
return 0;

src/iso_alloc_search.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ INTERNAL_HIDDEN void *_iso_alloc_ptr_search(void *n, bool poison) {
1111
uint8_t *end = NULL;
1212
const size_t zones_used = _root->zones_used;
1313

14+
#if MEMORY_TAGGING || (ARM_MTE == 1)
15+
/* It should be safe to clear these upper bits even
16+
* if the pointer wasn't returned by IsoAlloc. */
17+
n = (void *) ((uintptr_t) n & TAGGED_PTR_MASK);
18+
#endif
19+
1420
for(int32_t i = 0; i < zones_used; i++) {
1521
iso_alloc_zone_t *zone = &_root->zones[i];
1622

0 commit comments

Comments
 (0)