type1_negotiate - negotiate a Type 1 POV
LIBRARY
library "libpov"
SYNOPSIS
#include <libpov.h>
int type1_negotiate(unsigned int ipmask, unsigned int regmask, unsigned int regnum, type1_vals *t1vals)
DESCRIPTION
The type1_negotiate
function performs a CGC Type 1 POV negotiation by
registering the supplied ipmask
, regmask
, and regnum
values with the
CFE competition framework, which in return specifies register and IP values
that the POV is required to use in order to demonstrate a successful POV.
ipmask
and regmask
indicate the callers degree of control over EIP and
a general purpose register named by regnum
according to the following list:
- 0:
eax
- 1:
ecx
- 2:
edx
- 3:
ebx
- 4:
esp
- 5:
ebp
- 6:
esi
- 7:
edi
RETURN VALUE
On success, zero is returned and the t1vals
structure is populated with the
IP and register value that the POV is required to use in order to demonstrate
a successful POV. At the time of the crash the following must be true of the
crashing CB state:
(crash_eip & ipmask) == t1vals->ipval
(crash_REG & regmask) == t1vals->regval
On error, -1 is returned and t1vals
is undefined.