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

@@ -196,10 +196,11 @@
         SCALAR_FIELD(pstatus_t,         pr_dmodel,      0);
         SCALAR_FIELD(pstatus_t,         pr_taskid,      1);
         SCALAR_FIELD(pstatus_t,         pr_projid,      1);
         SCALAR_FIELD(pstatus_t,         pr_nzomb,       1);
         SCALAR_FIELD(pstatus_t,         pr_zoneid,      1);
+        SCALAR_FIELD(pstatus_t,         pr_secflags,    0);
         SCALAR_FIELD(pstatus_t,         pr_lwp,         0);
 
         END;
 }
 

@@ -585,10 +586,19 @@
         ARRAY_FIELD(prfdinfo_t,         pr_path,        0);
 
         END;
 }
 
+static void
+gen_psecflags(void)
+{
+        START(psecflags, psecflags_t);
+        SCALAR_FIELD(psecflags_t, psf_effective, 0);
+        SCALAR_FIELD(psecflags_t, psf_inherit, 0);
+        END;
+}
+
 
 /*ARGSUSED*/
 int
 main(int argc, char *argv[])
 {

@@ -626,10 +636,11 @@
         gen_stack();
         gen_sysset();
         gen_timestruc();
         gen_utsname();
         gen_prfdinfo();
+        gen_psecflags();
 
 
         /*
          * Generate the full arch_layout description
          */

@@ -654,10 +665,11 @@
         (void) printf(fmt, "stack");
         (void) printf(fmt, "sysset");
         (void) printf(fmt, "timestruc");
         (void) printf(fmt, "utsname");
         (void) printf(fmt, "prfdinfo");
+        (void) printf(fmt, "psecflags");
         (void) printf("};\n");
 
         /*
          * A public function, to make the information available
          */