| // Copyright 2026 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <stdint.h> |
| #include <stdlib.h> |
| |
| #include "base/allocator/partition_allocator/src/partition_alloc/buildflags.h" |
| #include "base/allocator/partition_allocator/src/partition_alloc/partition_address_space.h" |
| |
| int main() { |
| void* ptr = malloc(100); |
| if (!ptr) { |
| return 1; |
| } |
| |
| #if PA_BUILDFLAG(HAS_64_BIT_POINTERS) |
| // Verify that the memory returned by malloc() is NOT managed by |
| // PartitionAlloc. |
| // This check is only available on 64-bit builds because PartitionAlloc's |
| // core address space management (and the IsManagedByPartitionAlloc API) |
| // fundamentally relies on 64-bit address space reservations. On 32-bit, |
| // the fallback is assumed to be working if malloc/free succeed without |
| // crashing. |
| if (partition_alloc::IsManagedByPartitionAlloc( |
| reinterpret_cast<uintptr_t>(ptr))) { |
| return 1; // Failed: PartitionAlloc is active! |
| } |
| #endif |
| |
| free(ptr); |
| return 0; // Success. |
| } |