Print this page
7029 want per-process exploit mitigation features (secflags)
7030 want basic address space layout randomization (aslr)
7031 noexec_user_stack should be a secflag
7032 want a means to forbid mappings around NULL.

@@ -9514,10 +9514,12 @@
             SCF_SUCCESS ||
             scf_pg_get_property(pg, SCF_PROPERTY_PROJECT, NULL) ==
             SCF_SUCCESS ||
             scf_pg_get_property(pg, SCF_PROPERTY_RESOURCE_POOL, NULL) ==
             SCF_SUCCESS ||
+            scf_pg_get_property(pg, SCF_PROPERTY_SECFLAGS, NULL) ==
+            SCF_SUCCESS ||
             scf_pg_get_property(pg, SCF_PROPERTY_USE_PROFILE, NULL) ==
             SCF_SUCCESS;
 
         if (nonenv) {
                 ctxt = xmlNewNode(NULL, (xmlChar *)"method_context");

@@ -9538,10 +9540,16 @@
                 if (pg_get_prop(pg, SCF_PROPERTY_RESOURCE_POOL, exp_prop) ==
                     0 &&
                     set_attr_from_prop_default(exp_prop, ctxt,
                     "resource_pool", ":default") != 0)
                         err = 1;
+
+                if (pg_get_prop(pg, SCF_PROPERTY_SECFLAGS, exp_prop) == 0 &&
+                    set_attr_from_prop_default(exp_prop, ctxt,
+                    "security_flags", ":default") != 0)
+                        err = 1;
+
                 /*
                  * We only want to complain about profile or credential
                  * properties if we will use them.  To determine that we must
                  * examine USE_PROFILE.
                  */

@@ -9660,11 +9668,12 @@
                                 continue;
                 } else if (strcmp(exp_str, SCF_PROPERTY_USER) == 0 ||
                     strcmp(exp_str, SCF_PROPERTY_GROUP) == 0 ||
                     strcmp(exp_str, SCF_PROPERTY_SUPP_GROUPS) == 0 ||
                     strcmp(exp_str, SCF_PROPERTY_PRIVILEGES) == 0 ||
-                    strcmp(exp_str, SCF_PROPERTY_LIMIT_PRIVILEGES) == 0) {
+                    strcmp(exp_str, SCF_PROPERTY_LIMIT_PRIVILEGES) == 0 ||
+                    strcmp(exp_str, SCF_PROPERTY_SECFLAGS) == 0) {
                         if (nonenv && !use_profile)
                                 continue;
                 } else if (strcmp(exp_str, SCF_PROPERTY_PROFILE) == 0) {
                         if (nonenv && use_profile)
                                 continue;

@@ -9846,10 +9855,14 @@
                                 err = 1;
                 } else if (strcmp(exp_str, SCF_PROPERTY_RESOURCE_POOL) == 0) {
                         if (set_attr_from_prop(exp_prop, n,
                             "resource_pool") != 0)
                                 err = 1;
+                } else if (strcmp(exp_str, SCF_PROPERTY_SECFLAGS) == 0) {
+                        if (set_attr_from_prop(exp_prop, n,
+                            "security_flags") != 0)
+                                err = 1;
                 } else if (strcmp(exp_str, SCF_PROPERTY_USE_PROFILE) == 0) {
                         /* EMPTY */
                 } else if (strcmp(exp_str, SCF_PROPERTY_USER) == 0) {
                         if (use_profile ||
                             set_attr_from_prop(exp_prop, cred, "user") != 0)