Print this page
uts: Allow for address space randomisation.
Randomise the base addresses of shared objects, non-fixed mappings, the
stack and the heap. Introduce a service, svc:/system/process-security,
and a tool psecflags(1) to control and observe it
*** 45,54 ****
--- 45,55 ----
#include <sys/avl.h>
#include <sys/rctl.h>
#include <sys/list.h>
#include <sys/avl.h>
#include <sys/door_impl.h>
+ #include <sys/secflags.h>
#ifdef __cplusplus
extern "C" {
#endif
*** 345,354 ****
--- 346,356 ----
uintptr_t p_portcnt; /* event ports counter */
struct zone *p_zone; /* zone in which process lives */
struct vnode *p_execdir; /* directory that p_exec came from */
struct brand *p_brand; /* process's brand */
void *p_brand_data; /* per-process brand state */
+ psecflags_t p_secflags; /* per-process security flags */
/* additional lock to protect p_sessp (but not its contents) */
kmutex_t p_splock;
rctl_qty_t p_locked_mem; /* locked memory charged to proc */
/* protected by p_lock */
*** 782,791 ****
--- 784,800 ----
#else
#define LWP_MMODEL_NEWLWP()
#define LWP_MMODEL_SHARED_AS(addr, sz)
#endif
+ /* Security flag manipulation */
+ extern boolean_t secflag_enabled(proc_t *, uint_t);
+ extern void secflag_set(proc_t *, uint_t);
+ extern void secflag_enable(proc_t *, uint_t);
+ extern void secflag_disable(proc_t *, uint_t);
+ extern void secflag_promote(proc_t *);
+
/*
* Signal queue function prototypes. Must be here due to header ordering
* dependencies.
*/
extern void sigqfree(proc_t *);