| // Copyright Microsoft and CHERIoT Contributors. |
| // SPDX-License-Identifier: MIT |
| |
| #include "hello.h" |
| #include <fail-simulator-on-error.h> |
| |
| /// Thread entry point. |
| void __cheri_compartment("hello") entry() |
| { |
| // Try writing a string with a missing null terminator |
| char maliciousString[] = {'h', 'e', 'l', 'l', 'o'}; |
| write(maliciousString); |
| // Now try one that doesn't have read permission: |
| CHERI::Capability storeOnlyString{maliciousString}; |
| storeOnlyString.permissions() &= CHERI::Permission::Store; |
| write(storeOnlyString); |
| // Now one that should work |
| write("Non-malicious string"); |
| } |