aboutsummaryrefslogtreecommitdiff
path: root/scripts/selinux/genheaders/genheaders.c
diff options
context:
space:
mode:
authorMatthew Garrett <[email protected]>2011-03-28 06:47:38 -0400
committerMatthew Garrett <[email protected]>2011-03-28 06:47:38 -0400
commit72ed73c3f0801e860ee27e53ab6aaf47941ba324 (patch)
treeb46c546d77ee8931d47dafc97bf23b11472bffeb /scripts/selinux/genheaders/genheaders.c
parent883ae7992c09435927dda642b61f1455fceb5b85 (diff)
parentbd1573a5546b4351b5d042f1e4cd631ea67cc6b0 (diff)
Merge branch 'x86-platform-next' into x86-platform
Diffstat (limited to 'scripts/selinux/genheaders/genheaders.c')
-rw-r--r--scripts/selinux/genheaders/genheaders.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/scripts/selinux/genheaders/genheaders.c b/scripts/selinux/genheaders/genheaders.c
index 58a12c278706..539855ff31f9 100644
--- a/scripts/selinux/genheaders/genheaders.c
+++ b/scripts/selinux/genheaders/genheaders.c
@@ -43,6 +43,8 @@ int main(int argc, char *argv[])
int i, j, k;
int isids_len;
FILE *fout;
+ const char *needle = "SOCKET";
+ char *substr;
progname = argv[0];
@@ -88,6 +90,24 @@ int main(int argc, char *argv[])
fprintf(fout, "%2d\n", i);
}
fprintf(fout, "\n#define SECINITSID_NUM %d\n", i-1);
+ fprintf(fout, "\nstatic inline bool security_is_socket_class(u16 kern_tclass)\n");
+ fprintf(fout, "{\n");
+ fprintf(fout, "\tbool sock = false;\n\n");
+ fprintf(fout, "\tswitch (kern_tclass) {\n");
+ for (i = 0; secclass_map[i].name; i++) {
+ struct security_class_mapping *map = &secclass_map[i];
+ substr = strstr(map->name, needle);
+ if (substr && strcmp(substr, needle) == 0)
+ fprintf(fout, "\tcase SECCLASS_%s:\n", map->name);
+ }
+ fprintf(fout, "\t\tsock = true;\n");
+ fprintf(fout, "\t\tbreak;\n");
+ fprintf(fout, "\tdefault:\n");
+ fprintf(fout, "\t\tbreak;\n");
+ fprintf(fout, "\t}\n\n");
+ fprintf(fout, "\treturn sock;\n");
+ fprintf(fout, "}\n");
+
fprintf(fout, "\n#endif\n");
fclose(fout);