only disable aligned_alloc if malloc was replaced but it wasn't
authorRich Felker <dalias@aerifal.cx>
Thu, 11 Jun 2020 02:05:03 +0000 (22:05 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 11 Jun 2020 02:05:03 +0000 (22:05 -0400)
it both malloc and aligned_alloc have been replaced but the internal
aligned_alloc still gets called, the replacement is a wrapper of some
sort. it's not clear if this usage should be officially supported, but
it's at least a plausibly interesting debugging usage, and easy to do.
it should not be relied upon unless it's documented as supported at
some later time.

src/malloc/oldmalloc/aligned_alloc.c

index e06c76ed04126848b40a3bdeadbf3303585efd48..4adca3b4f6b7704b3cb034c4a087eaf4e08c2749 100644 (file)
@@ -12,7 +12,8 @@ void *aligned_alloc(size_t align, size_t len)
                return 0;
        }
 
-       if (len > SIZE_MAX - align || __malloc_replaced) {
+       if (len > SIZE_MAX - align ||
+           (__malloc_replaced && !__aligned_alloc_replaced)) {
                errno = ENOMEM;
                return 0;
        }