blob: 52e863119164cae22f260d8f6fae6a81b7788853 [file] [log] [blame]
// Import everything from the environment
import * as host from "./cheri.js"
// Change this address to whatever address was logged at the start of execution.
const SecretAddress = 0x2004cc8c
function run()
{
// Get the global capability into VM register 0
host.register_move(0, host.CGP)
// Check that the address is in the bounds of the globals capability.
if (SecretAddress < host.get_base(0))
{
host.print('Secret is before the start of CGP')
return
}
if ((SecretAddress+4) > (host.get_base(0) + host.get_length(0)))
{
host.print('Secret is after the end of CGP')
return
}
// Set the address in our copy of the global capability to the address of
// the secret.
host.set_address(0, SecretAddress)
// See if we managed to leak the secret correctly.
host.check_secret(host.load_int(0, 0));
}
vmExport(1234, run);