hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/security/selinux/ss/conditional.h
....@@ -1,10 +1,8 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /* Authors: Karl MacMillan <kmacmillan@tresys.com>
23 * Frank Mayer <mayerf@tresys.com>
34 *
45 * Copyright (C) 2003 - 2004 Tresys Technology, LLC
5
- * This program is free software; you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 2.
86 */
97
108 #ifndef _CONDITIONAL_H_
....@@ -21,7 +19,7 @@
2119 * A conditional expression is a list of operators and operands
2220 * in reverse polish notation.
2321 */
24
-struct cond_expr {
22
+struct cond_expr_node {
2523 #define COND_BOOL 1 /* plain bool */
2624 #define COND_NOT 2 /* !bool */
2725 #define COND_OR 3 /* bool || bool */
....@@ -30,9 +28,13 @@
3028 #define COND_EQ 6 /* bool == bool */
3129 #define COND_NEQ 7 /* bool != bool */
3230 #define COND_LAST COND_NEQ
33
- __u32 expr_type;
34
- __u32 bool;
35
- struct cond_expr *next;
31
+ u32 expr_type;
32
+ u32 bool;
33
+};
34
+
35
+struct cond_expr {
36
+ struct cond_expr_node *nodes;
37
+ u32 len;
3638 };
3739
3840 /*
....@@ -41,8 +43,8 @@
4143 * struct is for that list.
4244 */
4345 struct cond_av_list {
44
- struct avtab_node *node;
45
- struct cond_av_list *next;
46
+ struct avtab_node **nodes;
47
+ u32 len;
4648 };
4749
4850 /*
....@@ -54,13 +56,12 @@
5456 */
5557 struct cond_node {
5658 int cur_state;
57
- struct cond_expr *expr;
58
- struct cond_av_list *true_list;
59
- struct cond_av_list *false_list;
60
- struct cond_node *next;
59
+ struct cond_expr expr;
60
+ struct cond_av_list true_list;
61
+ struct cond_av_list false_list;
6162 };
6263
63
-int cond_policydb_init(struct policydb *p);
64
+void cond_policydb_init(struct policydb *p);
6465 void cond_policydb_destroy(struct policydb *p);
6566
6667 int cond_init_bool_indexes(struct policydb *p);
....@@ -68,15 +69,17 @@
6869
6970 int cond_index_bool(void *key, void *datum, void *datap);
7071
71
-int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp);
72
+int cond_read_bool(struct policydb *p, struct symtab *s, void *fp);
7273 int cond_read_list(struct policydb *p, void *fp);
7374 int cond_write_bool(void *key, void *datum, void *ptr);
74
-int cond_write_list(struct policydb *p, struct cond_node *list, void *fp);
75
+int cond_write_list(struct policydb *p, void *fp);
7576
7677 void cond_compute_av(struct avtab *ctab, struct avtab_key *key,
7778 struct av_decision *avd, struct extended_perms *xperms);
7879 void cond_compute_xperms(struct avtab *ctab, struct avtab_key *key,
7980 struct extended_perms_decision *xpermd);
80
-int evaluate_cond_node(struct policydb *p, struct cond_node *node);
81
+void evaluate_cond_nodes(struct policydb *p);
82
+void cond_policydb_destroy_dup(struct policydb *p);
83
+int cond_policydb_dup(struct policydb *new, struct policydb *orig);
8184
8285 #endif /* _CONDITIONAL_H_ */