* [RFC PATCH 1/6] libsepol: rename struct member
@ 2022-11-14 20:10 Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 2/6] checkpolicy: update cond_expr_t struct member name Christian Göttsche
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Avoid using the identifier `bool` to improve support with future C
standards. C23 is about to make `bool` a predefined macro (see N2654).
Since the struct cond_expr_t is part of the public API it will break
client applications. A quick code search of the Debian code shows only
usage in checkpolicy and setools.
Define a new macro signaling the renaming to simplify support of client
applications for new and older versions of libsepol.
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
libsepol/cil/src/cil_binary.c | 6 +++---
libsepol/include/sepol/policydb/conditional.h | 4 +++-
libsepol/src/conditional.c | 14 +++++++-------
libsepol/src/expand.c | 6 +++---
libsepol/src/kernel_to_cil.c | 2 +-
libsepol/src/kernel_to_conf.c | 2 +-
libsepol/src/link.c | 6 +++---
libsepol/src/module_to_cil.c | 2 +-
libsepol/src/policydb_validate.c | 2 +-
libsepol/src/write.c | 2 +-
libsepol/tests/debug.c | 2 +-
libsepol/tests/test-linker-cond-map.c | 2 +-
12 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
index 40615db2..ef7f4d70 100644
--- a/libsepol/cil/src/cil_binary.c
+++ b/libsepol/cil/src/cil_binary.c
@@ -2123,7 +2123,7 @@ static int __cil_cond_item_to_sepol_expr(policydb_t *pdb, struct cil_list_item *
*head = cil_malloc(sizeof(cond_expr_t));
(*head)->next = NULL;
(*head)->expr_type = COND_BOOL;
- (*head)->bool = sepol_bool->s.value;
+ (*head)->boolean = sepol_bool->s.value;
*tail = *head;
} else if (item->flavor == CIL_LIST) {
struct cil_list *l = item->data;
@@ -2159,7 +2159,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
enum cil_flavor cil_op = (enum cil_flavor)(uintptr_t)item->data;
op = cil_malloc(sizeof(*op));
- op->bool = 0;
+ op->boolean = 0;
op->next = NULL;
switch (cil_op) {
@@ -2226,7 +2226,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
goto exit;
}
op = cil_malloc(sizeof(*op));
- op->bool = 0;
+ op->boolean = 0;
op->next = NULL;
op->expr_type = COND_OR;
t1->next = h2;
diff --git a/libsepol/include/sepol/policydb/conditional.h b/libsepol/include/sepol/policydb/conditional.h
index 49c0d766..8d4741d3 100644
--- a/libsepol/include/sepol/policydb/conditional.h
+++ b/libsepol/include/sepol/policydb/conditional.h
@@ -54,7 +54,9 @@ typedef struct cond_expr {
#define COND_NEQ 7 /* bool != bool */
#define COND_LAST COND_NEQ
uint32_t expr_type;
- uint32_t bool;
+ /* The member `boolean` was renamed from `bool` in version 3.5 */
+#define COND_EXPR_T_RENAME_BOOL_BOOLEAN
+ uint32_t boolean;
struct cond_expr *next;
} cond_expr_t;
diff --git a/libsepol/src/conditional.c b/libsepol/src/conditional.c
index a620451d..24380ea0 100644
--- a/libsepol/src/conditional.c
+++ b/libsepol/src/conditional.c
@@ -125,7 +125,7 @@ int cond_expr_equal(cond_node_t * a, cond_node_t * b)
if (cur_a->expr_type != cur_b->expr_type)
return 0;
if (cur_a->expr_type == COND_BOOL) {
- if (cur_a->bool != cur_b->bool)
+ if (cur_a->boolean != cur_b->boolean)
return 0;
}
cur_a = cur_a->next;
@@ -223,7 +223,7 @@ int cond_evaluate_expr(policydb_t * p, cond_expr_t * expr)
if (sp == (COND_EXPR_MAXDEPTH - 1))
return -1;
sp++;
- s[sp] = p->bool_val_to_struct[cur->bool - 1]->state;
+ s[sp] = p->bool_val_to_struct[cur->boolean - 1]->state;
break;
case COND_NOT:
if (sp < 0)
@@ -279,7 +279,7 @@ cond_expr_t *cond_copy_expr(cond_expr_t * expr)
memset(new_expr, 0, sizeof(cond_expr_t));
new_expr->expr_type = cur->expr_type;
- new_expr->bool = cur->bool;
+ new_expr->boolean = cur->boolean;
if (!head)
head = new_expr;
@@ -388,10 +388,10 @@ int cond_normalize_expr(policydb_t * p, cond_node_t * cn)
switch (e->expr_type) {
case COND_BOOL:
/* see if we've already seen this bool */
- if (!bool_present(e->bool, cn->bool_ids, cn->nbools)) {
+ if (!bool_present(e->boolean, cn->bool_ids, cn->nbools)) {
/* count em all but only record up to COND_MAX_BOOLS */
if (cn->nbools < COND_MAX_BOOLS)
- cn->bool_ids[cn->nbools++] = e->bool;
+ cn->bool_ids[cn->nbools++] = e->boolean;
else
cn->nbools++;
}
@@ -737,7 +737,7 @@ static int expr_isvalid(policydb_t * p, cond_expr_t * expr)
return 0;
}
- if (expr->bool > p->p_bools.nprim) {
+ if (expr->boolean > p->p_bools.nprim) {
WARN(NULL, "security: conditional expressions uses unknown bool.");
return 0;
}
@@ -775,7 +775,7 @@ static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
memset(expr, 0, sizeof(cond_expr_t));
expr->expr_type = le32_to_cpu(buf[0]);
- expr->bool = le32_to_cpu(buf[1]);
+ expr->boolean = le32_to_cpu(buf[1]);
if (!expr_isvalid(p, expr)) {
free(expr);
diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
index 8d19850e..1337c32f 100644
--- a/libsepol/src/expand.c
+++ b/libsepol/src/expand.c
@@ -2025,8 +2025,8 @@ static int cond_node_map_bools(expand_state_t * state, cond_node_t * cn)
cur = cn->expr;
while (cur) {
- if (cur->bool)
- cur->bool = state->boolmap[cur->bool - 1];
+ if (cur->boolean)
+ cur->boolean = state->boolmap[cur->boolean - 1];
cur = cur->next;
}
@@ -2899,7 +2899,7 @@ static void discard_tunables(sepol_handle_t *sh, policydb_t *pol)
cur_expr = cur_expr->next) {
if (cur_expr->expr_type != COND_BOOL)
continue;
- booldatum = pol->bool_val_to_struct[cur_expr->bool - 1];
+ booldatum = pol->bool_val_to_struct[cur_expr->boolean - 1];
if (booldatum->flags & COND_BOOL_FLAGS_TUNABLE)
tmp[tunables++] = booldatum;
else
diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
index ad4121d5..e9cd89c2 100644
--- a/libsepol/src/kernel_to_cil.c
+++ b/libsepol/src/kernel_to_cil.c
@@ -43,7 +43,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
for (curr = expr; curr != NULL; curr = curr->next) {
if (curr->expr_type == COND_BOOL) {
- char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
+ char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
new_val = create_str("%s", 1, val1);
} else {
const char *op;
diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
index 63dffd9b..59083479 100644
--- a/libsepol/src/kernel_to_conf.c
+++ b/libsepol/src/kernel_to_conf.c
@@ -42,7 +42,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
for (curr = expr; curr != NULL; curr = curr->next) {
if (curr->expr_type == COND_BOOL) {
- char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
+ char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
new_val = create_str("%s", 1, val1);
} else {
const char *op;
diff --git a/libsepol/src/link.c b/libsepol/src/link.c
index cbe4cea4..3b7742bc 100644
--- a/libsepol/src/link.c
+++ b/libsepol/src/link.c
@@ -1524,9 +1524,9 @@ static int copy_cond_list(cond_node_t * list, cond_node_t ** dst,
/* expression nodes don't have a bool value of 0 - don't map them */
if (cur_expr->expr_type != COND_BOOL)
continue;
- assert(module->map[SYM_BOOLS][cur_expr->bool - 1] != 0);
- cur_expr->bool =
- module->map[SYM_BOOLS][cur_expr->bool - 1];
+ assert(module->map[SYM_BOOLS][cur_expr->boolean - 1] != 0);
+ cur_expr->boolean =
+ module->map[SYM_BOOLS][cur_expr->boolean - 1];
}
new_node->nbools = cur->nbools;
/* FIXME should COND_MAX_BOOLS be used here? */
diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
index b900290a..4e15f8e4 100644
--- a/libsepol/src/module_to_cil.c
+++ b/libsepol/src/module_to_cil.c
@@ -1272,7 +1272,7 @@ static int cond_expr_to_cil(int indent, struct policydb *pdb, struct cond_expr *
for (curr = cond_expr; curr != NULL; curr = curr->next) {
if (curr->expr_type == COND_BOOL) {
- val1 = pdb->p_bool_val_to_name[curr->bool - 1];
+ val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
// length of boolean + 2 parens + null terminator
len = strlen(val1) + 2 + 1;
new_val = malloc(len);
diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c
index 521ea4ff..d1bc7f03 100644
--- a/libsepol/src/policydb_validate.c
+++ b/libsepol/src/policydb_validate.c
@@ -957,7 +957,7 @@ static int validate_cond_expr(sepol_handle_t *handle, const struct cond_expr *ex
for (; expr; expr = expr->next) {
switch(expr->expr_type) {
case COND_BOOL:
- if (validate_value(expr->bool, boolean))
+ if (validate_value(expr->boolean, boolean))
goto bad;
if (depth == (COND_EXPR_MAXDEPTH - 1))
goto bad;
diff --git a/libsepol/src/write.c b/libsepol/src/write.c
index a9fdf93a..024fe628 100644
--- a/libsepol/src/write.c
+++ b/libsepol/src/write.c
@@ -834,7 +834,7 @@ static int cond_write_node(policydb_t * p,
for (cur_expr = node->expr; cur_expr != NULL; cur_expr = cur_expr->next) {
items = 0;
buf[items++] = cpu_to_le32(cur_expr->expr_type);
- buf[items++] = cpu_to_le32(cur_expr->bool);
+ buf[items++] = cpu_to_le32(cur_expr->boolean);
items2 = put_entry(buf, sizeof(uint32_t), items, fp);
if (items2 != items)
return POLICYDB_ERROR;
diff --git a/libsepol/tests/debug.c b/libsepol/tests/debug.c
index 90aa6e0a..8494dd25 100644
--- a/libsepol/tests/debug.c
+++ b/libsepol/tests/debug.c
@@ -41,7 +41,7 @@ void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
for (cur = exp; cur != NULL; cur = cur->next) {
switch (cur->expr_type) {
case COND_BOOL:
- fprintf(fp, "%s ", p->p_bool_val_to_name[cur->bool - 1]);
+ fprintf(fp, "%s ", p->p_bool_val_to_name[cur->boolean - 1]);
break;
case COND_NOT:
fprintf(fp, "! ");
diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
index 694a7346..6ea0e4c2 100644
--- a/libsepol/tests/test-linker-cond-map.c
+++ b/libsepol/tests/test-linker-cond-map.c
@@ -70,7 +70,7 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
CU_ASSERT(expr->expr_type == bools[i].expr_type);
if (bools[i].bool) {
- CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->bool - 1], bools[i].bool) == 0);
+ CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
}
expr = expr->next;
}
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 2/6] checkpolicy: update cond_expr_t struct member name
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
@ 2022-11-14 20:10 ` Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 3/6] libsepol/tests: rename bool indentifiers Christian Göttsche
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
checkpolicy/checkpolicy.c | 2 +-
checkpolicy/policy_define.c | 2 +-
checkpolicy/test/dismod.c | 2 +-
checkpolicy/test/dispol.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/checkpolicy/checkpolicy.c b/checkpolicy/checkpolicy.c
index 926ce72c..a1406e7b 100644
--- a/checkpolicy/checkpolicy.c
+++ b/checkpolicy/checkpolicy.c
@@ -313,7 +313,7 @@ static void display_expr(const cond_expr_t * exp)
switch (cur->expr_type) {
case COND_BOOL:
printf("%s ",
- policydbp->p_bool_val_to_name[cur->bool - 1]);
+ policydbp->p_bool_val_to_name[cur->boolean - 1]);
break;
case COND_NOT:
printf("! ");
diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c
index 54bb304b..4ff730be 100644
--- a/checkpolicy/policy_define.c
+++ b/checkpolicy/policy_define.c
@@ -4126,7 +4126,7 @@ cond_expr_t *define_cond_expr(uint32_t expr_type, void *arg1, void *arg2)
free(id);
return NULL;
}
- expr->bool = bool_var->s.value;
+ expr->boolean = bool_var->s.value;
free(id);
return expr;
default:
diff --git a/checkpolicy/test/dismod.c b/checkpolicy/test/dismod.c
index ec2a3e9a..51b68433 100644
--- a/checkpolicy/test/dismod.c
+++ b/checkpolicy/test/dismod.c
@@ -400,7 +400,7 @@ static void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
switch (cur->expr_type) {
case COND_BOOL:
fprintf(fp, "%s ",
- p->p_bool_val_to_name[cur->bool - 1]);
+ p->p_bool_val_to_name[cur->boolean - 1]);
break;
case COND_NOT:
fprintf(fp, "! ");
diff --git a/checkpolicy/test/dispol.c b/checkpolicy/test/dispol.c
index 8ddefb04..c396bef7 100644
--- a/checkpolicy/test/dispol.c
+++ b/checkpolicy/test/dispol.c
@@ -197,7 +197,7 @@ static void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
switch (cur->expr_type) {
case COND_BOOL:
fprintf(fp, "%s ",
- p->p_bool_val_to_name[cur->bool - 1]);
+ p->p_bool_val_to_name[cur->boolean - 1]);
break;
case COND_NOT:
fprintf(fp, "! ");
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 3/6] libsepol/tests: rename bool indentifiers
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 2/6] checkpolicy: update cond_expr_t struct member name Christian Göttsche
@ 2022-11-14 20:10 ` Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 4/6] checkpolicy: rename bool identifiers Christian Göttsche
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Avoid using the identifier `bool` to improve support with future C
standards. C23 is about to make `bool` a predefined macro (see N2654).
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
libsepol/tests/test-linker-cond-map.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
index 6ea0e4c2..14206666 100644
--- a/libsepol/tests/test-linker-cond-map.c
+++ b/libsepol/tests/test-linker-cond-map.c
@@ -51,7 +51,7 @@
*/
typedef struct test_cond_expr {
- const char *bool;
+ const char *boolean;
uint32_t expr_type;
} test_cond_expr_t;
@@ -69,18 +69,18 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
CU_ASSERT_FATAL(expr != NULL);
CU_ASSERT(expr->expr_type == bools[i].expr_type);
- if (bools[i].bool) {
- CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
+ if (bools[i].boolean) {
+ CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].boolean) == 0);
}
expr = expr->next;
}
}
-static void test_bool_state(policydb_t * p, const char *bool, int state)
+static void test_bool_state(policydb_t * p, const char *boolean, int state)
{
cond_bool_datum_t *b;
- b = hashtab_search(p->p_bools.table, bool);
+ b = hashtab_search(p->p_bools.table, boolean);
CU_ASSERT_FATAL(b != NULL);
CU_ASSERT(b->state == state);
}
@@ -100,7 +100,7 @@ void base_cond_tests(policydb_t * base)
test_sym_presence(base, "g_b_bool_1", SYM_BOOLS, SCOPE_DECL, decls, 1);
test_bool_state(base, "g_b_bool_1", 0);
/* conditional expression mapped correctly */
- bools[0].bool = "g_b_bool_1";
+ bools[0].boolean = "g_b_bool_1";
bools[0].expr_type = COND_BOOL;
test_cond_expr_mapping(base, d, bools, 1);
@@ -110,7 +110,7 @@ void base_cond_tests(policydb_t * base)
test_sym_presence(base, "o1_b_bool_1", SYM_BOOLS, SCOPE_DECL, decls, 1);
test_bool_state(base, "o1_b_bool_1", 1);
/* conditional expression mapped correctly */
- bools[0].bool = "o1_b_bool_1";
+ bools[0].boolean = "o1_b_bool_1";
bools[0].expr_type = COND_BOOL;
test_cond_expr_mapping(base, d, bools, 1);
@@ -128,7 +128,7 @@ void module_cond_tests(policydb_t * base)
test_sym_presence(base, "g_m1_bool_1", SYM_BOOLS, SCOPE_DECL, decls, 1);
test_bool_state(base, "g_m1_bool_1", 1);
/* conditional expression mapped correctly */
- bools[0].bool = "g_m1_bool_1";
+ bools[0].boolean = "g_m1_bool_1";
bools[0].expr_type = COND_BOOL;
test_cond_expr_mapping(base, d, bools, 1);
@@ -138,7 +138,7 @@ void module_cond_tests(policydb_t * base)
test_sym_presence(base, "o1_m1_bool_1", SYM_BOOLS, SCOPE_DECL, decls, 1);
test_bool_state(base, "o1_m1_bool_1", 0);
/* conditional expression mapped correctly */
- bools[0].bool = "o1_m1_bool_1";
+ bools[0].boolean = "o1_m1_bool_1";
bools[0].expr_type = COND_BOOL;
test_cond_expr_mapping(base, d, bools, 1);
@@ -150,11 +150,11 @@ void module_cond_tests(policydb_t * base)
test_bool_state(base, "g_m2_bool_1", 1);
test_bool_state(base, "g_m2_bool_2", 0);
/* conditional expression mapped correctly */
- bools[0].bool = "g_m2_bool_1";
+ bools[0].boolean = "g_m2_bool_1";
bools[0].expr_type = COND_BOOL;
- bools[1].bool = "g_m2_bool_2";
+ bools[1].boolean = "g_m2_bool_2";
bools[1].expr_type = COND_BOOL;
- bools[2].bool = NULL;
+ bools[2].boolean = NULL;
bools[2].expr_type = COND_AND;
test_cond_expr_mapping(base, d, bools, 3);
}
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 4/6] checkpolicy: rename bool identifiers
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 2/6] checkpolicy: update cond_expr_t struct member name Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 3/6] libsepol/tests: rename bool indentifiers Christian Göttsche
@ 2022-11-14 20:10 ` Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 5/6] libsepol: " Christian Göttsche
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Avoid using the identifier `bool` to improve support with future C
standards. C23 is about to make `bool` a predefined macro (see N2654).
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
checkpolicy/checkpolicy.c | 8 ++++----
checkpolicy/test/dismod.c | 8 ++++----
checkpolicy/test/dispol.c | 8 ++++----
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/checkpolicy/checkpolicy.c b/checkpolicy/checkpolicy.c
index a1406e7b..4c1b9b89 100644
--- a/checkpolicy/checkpolicy.c
+++ b/checkpolicy/checkpolicy.c
@@ -354,14 +354,14 @@ static int display_cond_expressions(void)
static int change_bool(const char *name, int state)
{
- cond_bool_datum_t *bool;
+ cond_bool_datum_t *boolean;
- bool = hashtab_search(policydbp->p_bools.table, name);
- if (bool == NULL) {
+ boolean = hashtab_search(policydbp->p_bools.table, name);
+ if (boolean == NULL) {
printf("Could not find bool %s\n", name);
return -1;
}
- bool->state = state;
+ boolean->state = state;
evaluate_conds(policydbp);
return 0;
}
diff --git a/checkpolicy/test/dismod.c b/checkpolicy/test/dismod.c
index 51b68433..6328d326 100644
--- a/checkpolicy/test/dismod.c
+++ b/checkpolicy/test/dismod.c
@@ -598,14 +598,14 @@ int display_cond_expressions(policydb_t * p, FILE * fp)
int change_bool(char *name, int state, policydb_t * p, FILE * fp)
{
- cond_bool_datum_t *bool;
+ cond_bool_datum_t *boolean;
- bool = hashtab_search(p->p_bools.table, name);
- if (bool == NULL) {
+ boolean = hashtab_search(p->p_bools.table, name);
+ if (boolean == NULL) {
fprintf(fp, "Could not find bool %s\n", name);
return -1;
}
- bool->state = state;
+ boolean->state = state;
evaluate_conds(p);
return 0;
}
diff --git a/checkpolicy/test/dispol.c b/checkpolicy/test/dispol.c
index c396bef7..1d619e2c 100644
--- a/checkpolicy/test/dispol.c
+++ b/checkpolicy/test/dispol.c
@@ -262,14 +262,14 @@ static int display_handle_unknown(policydb_t * p, FILE * out_fp)
static int change_bool(char *name, int state, policydb_t * p, FILE * fp)
{
- cond_bool_datum_t *bool;
+ cond_bool_datum_t *boolean;
- bool = hashtab_search(p->p_bools.table, name);
- if (bool == NULL) {
+ boolean = hashtab_search(p->p_bools.table, name);
+ if (boolean == NULL) {
fprintf(fp, "Could not find bool %s\n", name);
return -1;
}
- bool->state = state;
+ boolean->state = state;
evaluate_conds(p);
return 0;
}
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 5/6] libsepol: rename bool identifiers
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
` (2 preceding siblings ...)
2022-11-14 20:10 ` [RFC PATCH 4/6] checkpolicy: rename bool identifiers Christian Göttsche
@ 2022-11-14 20:10 ` Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 6/6] libsemanage/tests: " Christian Göttsche
2022-11-17 21:45 ` [RFC PATCH 1/6] libsepol: rename struct member James Carter
5 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Avoid using the identifier `bool` to improve support with future C
standards. C23 is about to make `bool` a predefined macro (see N2654).
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
libsepol/cil/src/cil_binary.c | 8 ++++----
libsepol/cil/src/cil_policy.c | 12 ++++++------
libsepol/src/expand.c | 12 ++++++------
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
index ef7f4d70..c4ee2380 100644
--- a/libsepol/cil/src/cil_binary.c
+++ b/libsepol/cil/src/cil_binary.c
@@ -4170,13 +4170,13 @@ static int __cil_user_val_array_insert(hashtab_key_t key, hashtab_datum_t datum,
static int __cil_bool_val_array_insert(hashtab_key_t key, hashtab_datum_t datum, void *data)
{
policydb_t *pdb = data;
- cond_bool_datum_t *bool = (cond_bool_datum_t *)datum;
+ cond_bool_datum_t *boolean = (cond_bool_datum_t *)datum;
- if (bool->s.value < 1 || bool->s.value > pdb->p_bools.nprim) {
+ if (boolean->s.value < 1 || boolean->s.value > pdb->p_bools.nprim) {
return -EINVAL;
}
- pdb->p_bool_val_to_name[bool->s.value - 1] = (char *)key;
- pdb->bool_val_to_struct[bool->s.value - 1] = bool;
+ pdb->p_bool_val_to_name[boolean->s.value - 1] = (char *)key;
+ pdb->bool_val_to_struct[boolean->s.value - 1] = boolean;
return 0;
}
diff --git a/libsepol/cil/src/cil_policy.c b/libsepol/cil/src/cil_policy.c
index 7c543c47..feb97868 100644
--- a/libsepol/cil/src/cil_policy.c
+++ b/libsepol/cil/src/cil_policy.c
@@ -1008,13 +1008,13 @@ static void cil_validatetrans_to_policy(FILE *out, struct cil_db *db, struct cil
static void cil_bools_to_policy(FILE *out, struct cil_list *bools)
{
struct cil_list_item *i1;
- struct cil_bool *bool;
+ struct cil_bool *boolean;
const char *value;
cil_list_for_each(i1, bools) {
- bool = i1->data;
- value = bool->value ? "true" : "false";
- fprintf(out, "bool %s %s;\n", bool->datum.fqn, value);
+ boolean = i1->data;
+ value = boolean->value ? "true" : "false";
+ fprintf(out, "bool %s %s;\n", boolean->datum.fqn, value);
}
}
@@ -1437,12 +1437,12 @@ static int __cil_te_rules_to_policy_helper(struct cil_tree_node *node, uint32_t
*finished = CIL_TREE_SKIP_HEAD;
break;
case CIL_BOOLEANIF: {
- struct cil_booleanif *bool = node->data;
+ struct cil_booleanif *boolean = node->data;
struct cil_tree_node *n;
struct cil_condblock *cb;
fprintf(args->out, "if ");
- cil_cond_expr_to_policy(args->out, bool->datum_expr, CIL_TRUE);
+ cil_cond_expr_to_policy(args->out, boolean->datum_expr, CIL_TRUE);
fprintf(args->out," {\n");
n = node->cl_head;
cb = n != NULL ? n->data : NULL;
diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
index 1337c32f..c08d3a35 100644
--- a/libsepol/src/expand.c
+++ b/libsepol/src/expand.c
@@ -1106,11 +1106,11 @@ static int bool_copy_callback(hashtab_key_t key, hashtab_datum_t datum,
{
int ret;
expand_state_t *state;
- cond_bool_datum_t *bool, *new_bool;
+ cond_bool_datum_t *boolean, *new_bool;
char *id, *new_id;
id = key;
- bool = (cond_bool_datum_t *) datum;
+ boolean = (cond_bool_datum_t *) datum;
state = (expand_state_t *) data;
if (!is_id_enabled(id, state->base, SYM_BOOLS)) {
@@ -1118,7 +1118,7 @@ static int bool_copy_callback(hashtab_key_t key, hashtab_datum_t datum,
return 0;
}
- if (bool->flags & COND_BOOL_FLAGS_TUNABLE) {
+ if (boolean->flags & COND_BOOL_FLAGS_TUNABLE) {
/* Skip tunables */
return 0;
}
@@ -1152,10 +1152,10 @@ static int bool_copy_callback(hashtab_key_t key, hashtab_datum_t datum,
return -1;
}
- state->boolmap[bool->s.value - 1] = new_bool->s.value;
+ state->boolmap[boolean->s.value - 1] = new_bool->s.value;
- new_bool->state = bool->state;
- new_bool->flags = bool->flags;
+ new_bool->state = boolean->state;
+ new_bool->flags = boolean->flags;
return 0;
}
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 6/6] libsemanage/tests: rename bool identifiers
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
` (3 preceding siblings ...)
2022-11-14 20:10 ` [RFC PATCH 5/6] libsepol: " Christian Göttsche
@ 2022-11-14 20:10 ` Christian Göttsche
2022-11-17 21:45 ` [RFC PATCH 1/6] libsepol: rename struct member James Carter
5 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2022-11-14 20:10 UTC (permalink / raw)
To: selinux
Avoid using the identifier `bool` to improve support with future C
standards. C23 is about to make `bool` a predefined macro (see N2654).
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
libsemanage/tests/libsemanage-tests.c | 2 +-
libsemanage/tests/test_bool.c | 6 +++---
libsemanage/tests/test_bool.h | 6 +++---
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/libsemanage/tests/libsemanage-tests.c b/libsemanage/tests/libsemanage-tests.c
index ee176703..1d41a03b 100644
--- a/libsemanage/tests/libsemanage-tests.c
+++ b/libsemanage/tests/libsemanage-tests.c
@@ -73,7 +73,7 @@ static bool do_tests(int interactive, int verbose)
DECLARE_SUITE(semanage_store);
DECLARE_SUITE(semanage_utilities);
DECLARE_SUITE(handle);
- DECLARE_SUITE(bool);
+ DECLARE_SUITE(boolean);
DECLARE_SUITE(fcontext);
DECLARE_SUITE(iface);
DECLARE_SUITE(ibendport);
diff --git a/libsemanage/tests/test_bool.c b/libsemanage/tests/test_bool.c
index 672544bb..9356a1ae 100644
--- a/libsemanage/tests/test_bool.c
+++ b/libsemanage/tests/test_bool.c
@@ -57,7 +57,7 @@ static void test_bool_list_local(void);
extern semanage_handle_t *sh;
-int bool_test_init(void)
+int boolean_test_init(void)
{
if (create_test_store() < 0) {
fprintf(stderr, "Could not create test store\n");
@@ -72,7 +72,7 @@ int bool_test_init(void)
return 0;
}
-int bool_test_cleanup(void)
+int boolean_test_cleanup(void)
{
if (destroy_test_store() < 0) {
fprintf(stderr, "Could not destroy test store\n");
@@ -82,7 +82,7 @@ int bool_test_cleanup(void)
return 0;
}
-int bool_add_tests(CU_pSuite suite)
+int boolean_add_tests(CU_pSuite suite)
{
CU_add_test(suite, "bool_key_create", test_bool_key_create);
CU_add_test(suite, "bool_key_extract", test_bool_key_extract);
diff --git a/libsemanage/tests/test_bool.h b/libsemanage/tests/test_bool.h
index b5b5a603..985c1f06 100644
--- a/libsemanage/tests/test_bool.h
+++ b/libsemanage/tests/test_bool.h
@@ -24,8 +24,8 @@
#include <CUnit/Basic.h>
#include "semanage/semanage.h"
-int bool_test_init(void);
-int bool_test_cleanup(void);
-int bool_add_tests(CU_pSuite suite);
+int boolean_test_init(void);
+int boolean_test_cleanup(void);
+int boolean_add_tests(CU_pSuite suite);
#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 1/6] libsepol: rename struct member
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
` (4 preceding siblings ...)
2022-11-14 20:10 ` [RFC PATCH 6/6] libsemanage/tests: " Christian Göttsche
@ 2022-11-17 21:45 ` James Carter
2023-03-31 17:36 ` Christian Göttsche
5 siblings, 1 reply; 10+ messages in thread
From: James Carter @ 2022-11-17 21:45 UTC (permalink / raw)
To: Christian Göttsche; +Cc: selinux, Chris PeBenito
On Mon, Nov 14, 2022 at 3:16 PM Christian Göttsche
<cgzones@googlemail.com> wrote:
>
> Avoid using the identifier `bool` to improve support with future C
> standards. C23 is about to make `bool` a predefined macro (see N2654).
>
> Since the struct cond_expr_t is part of the public API it will break
> client applications. A quick code search of the Debian code shows only
> usage in checkpolicy and setools.
>
Because it will break setools, I think we should hold off on this
series until after the upcoming release of the SELinux userspace
(which should happen in early to mid December).
Jim
> Define a new macro signaling the renaming to simplify support of client
> applications for new and older versions of libsepol.
>
> Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
> ---
> libsepol/cil/src/cil_binary.c | 6 +++---
> libsepol/include/sepol/policydb/conditional.h | 4 +++-
> libsepol/src/conditional.c | 14 +++++++-------
> libsepol/src/expand.c | 6 +++---
> libsepol/src/kernel_to_cil.c | 2 +-
> libsepol/src/kernel_to_conf.c | 2 +-
> libsepol/src/link.c | 6 +++---
> libsepol/src/module_to_cil.c | 2 +-
> libsepol/src/policydb_validate.c | 2 +-
> libsepol/src/write.c | 2 +-
> libsepol/tests/debug.c | 2 +-
> libsepol/tests/test-linker-cond-map.c | 2 +-
> 12 files changed, 26 insertions(+), 24 deletions(-)
>
> diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> index 40615db2..ef7f4d70 100644
> --- a/libsepol/cil/src/cil_binary.c
> +++ b/libsepol/cil/src/cil_binary.c
> @@ -2123,7 +2123,7 @@ static int __cil_cond_item_to_sepol_expr(policydb_t *pdb, struct cil_list_item *
> *head = cil_malloc(sizeof(cond_expr_t));
> (*head)->next = NULL;
> (*head)->expr_type = COND_BOOL;
> - (*head)->bool = sepol_bool->s.value;
> + (*head)->boolean = sepol_bool->s.value;
> *tail = *head;
> } else if (item->flavor == CIL_LIST) {
> struct cil_list *l = item->data;
> @@ -2159,7 +2159,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> enum cil_flavor cil_op = (enum cil_flavor)(uintptr_t)item->data;
>
> op = cil_malloc(sizeof(*op));
> - op->bool = 0;
> + op->boolean = 0;
> op->next = NULL;
>
> switch (cil_op) {
> @@ -2226,7 +2226,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> goto exit;
> }
> op = cil_malloc(sizeof(*op));
> - op->bool = 0;
> + op->boolean = 0;
> op->next = NULL;
> op->expr_type = COND_OR;
> t1->next = h2;
> diff --git a/libsepol/include/sepol/policydb/conditional.h b/libsepol/include/sepol/policydb/conditional.h
> index 49c0d766..8d4741d3 100644
> --- a/libsepol/include/sepol/policydb/conditional.h
> +++ b/libsepol/include/sepol/policydb/conditional.h
> @@ -54,7 +54,9 @@ typedef struct cond_expr {
> #define COND_NEQ 7 /* bool != bool */
> #define COND_LAST COND_NEQ
> uint32_t expr_type;
> - uint32_t bool;
> + /* The member `boolean` was renamed from `bool` in version 3.5 */
> +#define COND_EXPR_T_RENAME_BOOL_BOOLEAN
> + uint32_t boolean;
> struct cond_expr *next;
> } cond_expr_t;
>
> diff --git a/libsepol/src/conditional.c b/libsepol/src/conditional.c
> index a620451d..24380ea0 100644
> --- a/libsepol/src/conditional.c
> +++ b/libsepol/src/conditional.c
> @@ -125,7 +125,7 @@ int cond_expr_equal(cond_node_t * a, cond_node_t * b)
> if (cur_a->expr_type != cur_b->expr_type)
> return 0;
> if (cur_a->expr_type == COND_BOOL) {
> - if (cur_a->bool != cur_b->bool)
> + if (cur_a->boolean != cur_b->boolean)
> return 0;
> }
> cur_a = cur_a->next;
> @@ -223,7 +223,7 @@ int cond_evaluate_expr(policydb_t * p, cond_expr_t * expr)
> if (sp == (COND_EXPR_MAXDEPTH - 1))
> return -1;
> sp++;
> - s[sp] = p->bool_val_to_struct[cur->bool - 1]->state;
> + s[sp] = p->bool_val_to_struct[cur->boolean - 1]->state;
> break;
> case COND_NOT:
> if (sp < 0)
> @@ -279,7 +279,7 @@ cond_expr_t *cond_copy_expr(cond_expr_t * expr)
> memset(new_expr, 0, sizeof(cond_expr_t));
>
> new_expr->expr_type = cur->expr_type;
> - new_expr->bool = cur->bool;
> + new_expr->boolean = cur->boolean;
>
> if (!head)
> head = new_expr;
> @@ -388,10 +388,10 @@ int cond_normalize_expr(policydb_t * p, cond_node_t * cn)
> switch (e->expr_type) {
> case COND_BOOL:
> /* see if we've already seen this bool */
> - if (!bool_present(e->bool, cn->bool_ids, cn->nbools)) {
> + if (!bool_present(e->boolean, cn->bool_ids, cn->nbools)) {
> /* count em all but only record up to COND_MAX_BOOLS */
> if (cn->nbools < COND_MAX_BOOLS)
> - cn->bool_ids[cn->nbools++] = e->bool;
> + cn->bool_ids[cn->nbools++] = e->boolean;
> else
> cn->nbools++;
> }
> @@ -737,7 +737,7 @@ static int expr_isvalid(policydb_t * p, cond_expr_t * expr)
> return 0;
> }
>
> - if (expr->bool > p->p_bools.nprim) {
> + if (expr->boolean > p->p_bools.nprim) {
> WARN(NULL, "security: conditional expressions uses unknown bool.");
> return 0;
> }
> @@ -775,7 +775,7 @@ static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
> memset(expr, 0, sizeof(cond_expr_t));
>
> expr->expr_type = le32_to_cpu(buf[0]);
> - expr->bool = le32_to_cpu(buf[1]);
> + expr->boolean = le32_to_cpu(buf[1]);
>
> if (!expr_isvalid(p, expr)) {
> free(expr);
> diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> index 8d19850e..1337c32f 100644
> --- a/libsepol/src/expand.c
> +++ b/libsepol/src/expand.c
> @@ -2025,8 +2025,8 @@ static int cond_node_map_bools(expand_state_t * state, cond_node_t * cn)
>
> cur = cn->expr;
> while (cur) {
> - if (cur->bool)
> - cur->bool = state->boolmap[cur->bool - 1];
> + if (cur->boolean)
> + cur->boolean = state->boolmap[cur->boolean - 1];
> cur = cur->next;
> }
>
> @@ -2899,7 +2899,7 @@ static void discard_tunables(sepol_handle_t *sh, policydb_t *pol)
> cur_expr = cur_expr->next) {
> if (cur_expr->expr_type != COND_BOOL)
> continue;
> - booldatum = pol->bool_val_to_struct[cur_expr->bool - 1];
> + booldatum = pol->bool_val_to_struct[cur_expr->boolean - 1];
> if (booldatum->flags & COND_BOOL_FLAGS_TUNABLE)
> tmp[tunables++] = booldatum;
> else
> diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
> index ad4121d5..e9cd89c2 100644
> --- a/libsepol/src/kernel_to_cil.c
> +++ b/libsepol/src/kernel_to_cil.c
> @@ -43,7 +43,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
>
> for (curr = expr; curr != NULL; curr = curr->next) {
> if (curr->expr_type == COND_BOOL) {
> - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> new_val = create_str("%s", 1, val1);
> } else {
> const char *op;
> diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
> index 63dffd9b..59083479 100644
> --- a/libsepol/src/kernel_to_conf.c
> +++ b/libsepol/src/kernel_to_conf.c
> @@ -42,7 +42,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
>
> for (curr = expr; curr != NULL; curr = curr->next) {
> if (curr->expr_type == COND_BOOL) {
> - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> new_val = create_str("%s", 1, val1);
> } else {
> const char *op;
> diff --git a/libsepol/src/link.c b/libsepol/src/link.c
> index cbe4cea4..3b7742bc 100644
> --- a/libsepol/src/link.c
> +++ b/libsepol/src/link.c
> @@ -1524,9 +1524,9 @@ static int copy_cond_list(cond_node_t * list, cond_node_t ** dst,
> /* expression nodes don't have a bool value of 0 - don't map them */
> if (cur_expr->expr_type != COND_BOOL)
> continue;
> - assert(module->map[SYM_BOOLS][cur_expr->bool - 1] != 0);
> - cur_expr->bool =
> - module->map[SYM_BOOLS][cur_expr->bool - 1];
> + assert(module->map[SYM_BOOLS][cur_expr->boolean - 1] != 0);
> + cur_expr->boolean =
> + module->map[SYM_BOOLS][cur_expr->boolean - 1];
> }
> new_node->nbools = cur->nbools;
> /* FIXME should COND_MAX_BOOLS be used here? */
> diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
> index b900290a..4e15f8e4 100644
> --- a/libsepol/src/module_to_cil.c
> +++ b/libsepol/src/module_to_cil.c
> @@ -1272,7 +1272,7 @@ static int cond_expr_to_cil(int indent, struct policydb *pdb, struct cond_expr *
>
> for (curr = cond_expr; curr != NULL; curr = curr->next) {
> if (curr->expr_type == COND_BOOL) {
> - val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> + val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> // length of boolean + 2 parens + null terminator
> len = strlen(val1) + 2 + 1;
> new_val = malloc(len);
> diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c
> index 521ea4ff..d1bc7f03 100644
> --- a/libsepol/src/policydb_validate.c
> +++ b/libsepol/src/policydb_validate.c
> @@ -957,7 +957,7 @@ static int validate_cond_expr(sepol_handle_t *handle, const struct cond_expr *ex
> for (; expr; expr = expr->next) {
> switch(expr->expr_type) {
> case COND_BOOL:
> - if (validate_value(expr->bool, boolean))
> + if (validate_value(expr->boolean, boolean))
> goto bad;
> if (depth == (COND_EXPR_MAXDEPTH - 1))
> goto bad;
> diff --git a/libsepol/src/write.c b/libsepol/src/write.c
> index a9fdf93a..024fe628 100644
> --- a/libsepol/src/write.c
> +++ b/libsepol/src/write.c
> @@ -834,7 +834,7 @@ static int cond_write_node(policydb_t * p,
> for (cur_expr = node->expr; cur_expr != NULL; cur_expr = cur_expr->next) {
> items = 0;
> buf[items++] = cpu_to_le32(cur_expr->expr_type);
> - buf[items++] = cpu_to_le32(cur_expr->bool);
> + buf[items++] = cpu_to_le32(cur_expr->boolean);
> items2 = put_entry(buf, sizeof(uint32_t), items, fp);
> if (items2 != items)
> return POLICYDB_ERROR;
> diff --git a/libsepol/tests/debug.c b/libsepol/tests/debug.c
> index 90aa6e0a..8494dd25 100644
> --- a/libsepol/tests/debug.c
> +++ b/libsepol/tests/debug.c
> @@ -41,7 +41,7 @@ void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
> for (cur = exp; cur != NULL; cur = cur->next) {
> switch (cur->expr_type) {
> case COND_BOOL:
> - fprintf(fp, "%s ", p->p_bool_val_to_name[cur->bool - 1]);
> + fprintf(fp, "%s ", p->p_bool_val_to_name[cur->boolean - 1]);
> break;
> case COND_NOT:
> fprintf(fp, "! ");
> diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
> index 694a7346..6ea0e4c2 100644
> --- a/libsepol/tests/test-linker-cond-map.c
> +++ b/libsepol/tests/test-linker-cond-map.c
> @@ -70,7 +70,7 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
>
> CU_ASSERT(expr->expr_type == bools[i].expr_type);
> if (bools[i].bool) {
> - CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->bool - 1], bools[i].bool) == 0);
> + CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
> }
> expr = expr->next;
> }
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 1/6] libsepol: rename struct member
2022-11-17 21:45 ` [RFC PATCH 1/6] libsepol: rename struct member James Carter
@ 2023-03-31 17:36 ` Christian Göttsche
2023-03-31 18:28 ` James Carter
0 siblings, 1 reply; 10+ messages in thread
From: Christian Göttsche @ 2023-03-31 17:36 UTC (permalink / raw)
To: James Carter; +Cc: selinux, Chris PeBenito
On Thu, 17 Nov 2022 at 22:45, James Carter <jwcart2@gmail.com> wrote:
>
> On Mon, Nov 14, 2022 at 3:16 PM Christian Göttsche
> <cgzones@googlemail.com> wrote:
> >
> > Avoid using the identifier `bool` to improve support with future C
> > standards. C23 is about to make `bool` a predefined macro (see N2654).
> >
> > Since the struct cond_expr_t is part of the public API it will break
> > client applications. A quick code search of the Debian code shows only
> > usage in checkpolicy and setools.
> >
>
> Because it will break setools, I think we should hold off on this
> series until after the upcoming release of the SELinux userspace
> (which should happen in early to mid December).
> Jim
Since version 3.5 has been released, could this series please be reconsidered?
>
> > Define a new macro signaling the renaming to simplify support of client
> > applications for new and older versions of libsepol.
> >
> > Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
> > ---
> > libsepol/cil/src/cil_binary.c | 6 +++---
> > libsepol/include/sepol/policydb/conditional.h | 4 +++-
> > libsepol/src/conditional.c | 14 +++++++-------
> > libsepol/src/expand.c | 6 +++---
> > libsepol/src/kernel_to_cil.c | 2 +-
> > libsepol/src/kernel_to_conf.c | 2 +-
> > libsepol/src/link.c | 6 +++---
> > libsepol/src/module_to_cil.c | 2 +-
> > libsepol/src/policydb_validate.c | 2 +-
> > libsepol/src/write.c | 2 +-
> > libsepol/tests/debug.c | 2 +-
> > libsepol/tests/test-linker-cond-map.c | 2 +-
> > 12 files changed, 26 insertions(+), 24 deletions(-)
> >
> > diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> > index 40615db2..ef7f4d70 100644
> > --- a/libsepol/cil/src/cil_binary.c
> > +++ b/libsepol/cil/src/cil_binary.c
> > @@ -2123,7 +2123,7 @@ static int __cil_cond_item_to_sepol_expr(policydb_t *pdb, struct cil_list_item *
> > *head = cil_malloc(sizeof(cond_expr_t));
> > (*head)->next = NULL;
> > (*head)->expr_type = COND_BOOL;
> > - (*head)->bool = sepol_bool->s.value;
> > + (*head)->boolean = sepol_bool->s.value;
> > *tail = *head;
> > } else if (item->flavor == CIL_LIST) {
> > struct cil_list *l = item->data;
> > @@ -2159,7 +2159,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > enum cil_flavor cil_op = (enum cil_flavor)(uintptr_t)item->data;
> >
> > op = cil_malloc(sizeof(*op));
> > - op->bool = 0;
> > + op->boolean = 0;
> > op->next = NULL;
> >
> > switch (cil_op) {
> > @@ -2226,7 +2226,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > goto exit;
> > }
> > op = cil_malloc(sizeof(*op));
> > - op->bool = 0;
> > + op->boolean = 0;
> > op->next = NULL;
> > op->expr_type = COND_OR;
> > t1->next = h2;
> > diff --git a/libsepol/include/sepol/policydb/conditional.h b/libsepol/include/sepol/policydb/conditional.h
> > index 49c0d766..8d4741d3 100644
> > --- a/libsepol/include/sepol/policydb/conditional.h
> > +++ b/libsepol/include/sepol/policydb/conditional.h
> > @@ -54,7 +54,9 @@ typedef struct cond_expr {
> > #define COND_NEQ 7 /* bool != bool */
> > #define COND_LAST COND_NEQ
> > uint32_t expr_type;
> > - uint32_t bool;
> > + /* The member `boolean` was renamed from `bool` in version 3.5 */
> > +#define COND_EXPR_T_RENAME_BOOL_BOOLEAN
> > + uint32_t boolean;
> > struct cond_expr *next;
> > } cond_expr_t;
> >
> > diff --git a/libsepol/src/conditional.c b/libsepol/src/conditional.c
> > index a620451d..24380ea0 100644
> > --- a/libsepol/src/conditional.c
> > +++ b/libsepol/src/conditional.c
> > @@ -125,7 +125,7 @@ int cond_expr_equal(cond_node_t * a, cond_node_t * b)
> > if (cur_a->expr_type != cur_b->expr_type)
> > return 0;
> > if (cur_a->expr_type == COND_BOOL) {
> > - if (cur_a->bool != cur_b->bool)
> > + if (cur_a->boolean != cur_b->boolean)
> > return 0;
> > }
> > cur_a = cur_a->next;
> > @@ -223,7 +223,7 @@ int cond_evaluate_expr(policydb_t * p, cond_expr_t * expr)
> > if (sp == (COND_EXPR_MAXDEPTH - 1))
> > return -1;
> > sp++;
> > - s[sp] = p->bool_val_to_struct[cur->bool - 1]->state;
> > + s[sp] = p->bool_val_to_struct[cur->boolean - 1]->state;
> > break;
> > case COND_NOT:
> > if (sp < 0)
> > @@ -279,7 +279,7 @@ cond_expr_t *cond_copy_expr(cond_expr_t * expr)
> > memset(new_expr, 0, sizeof(cond_expr_t));
> >
> > new_expr->expr_type = cur->expr_type;
> > - new_expr->bool = cur->bool;
> > + new_expr->boolean = cur->boolean;
> >
> > if (!head)
> > head = new_expr;
> > @@ -388,10 +388,10 @@ int cond_normalize_expr(policydb_t * p, cond_node_t * cn)
> > switch (e->expr_type) {
> > case COND_BOOL:
> > /* see if we've already seen this bool */
> > - if (!bool_present(e->bool, cn->bool_ids, cn->nbools)) {
> > + if (!bool_present(e->boolean, cn->bool_ids, cn->nbools)) {
> > /* count em all but only record up to COND_MAX_BOOLS */
> > if (cn->nbools < COND_MAX_BOOLS)
> > - cn->bool_ids[cn->nbools++] = e->bool;
> > + cn->bool_ids[cn->nbools++] = e->boolean;
> > else
> > cn->nbools++;
> > }
> > @@ -737,7 +737,7 @@ static int expr_isvalid(policydb_t * p, cond_expr_t * expr)
> > return 0;
> > }
> >
> > - if (expr->bool > p->p_bools.nprim) {
> > + if (expr->boolean > p->p_bools.nprim) {
> > WARN(NULL, "security: conditional expressions uses unknown bool.");
> > return 0;
> > }
> > @@ -775,7 +775,7 @@ static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
> > memset(expr, 0, sizeof(cond_expr_t));
> >
> > expr->expr_type = le32_to_cpu(buf[0]);
> > - expr->bool = le32_to_cpu(buf[1]);
> > + expr->boolean = le32_to_cpu(buf[1]);
> >
> > if (!expr_isvalid(p, expr)) {
> > free(expr);
> > diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> > index 8d19850e..1337c32f 100644
> > --- a/libsepol/src/expand.c
> > +++ b/libsepol/src/expand.c
> > @@ -2025,8 +2025,8 @@ static int cond_node_map_bools(expand_state_t * state, cond_node_t * cn)
> >
> > cur = cn->expr;
> > while (cur) {
> > - if (cur->bool)
> > - cur->bool = state->boolmap[cur->bool - 1];
> > + if (cur->boolean)
> > + cur->boolean = state->boolmap[cur->boolean - 1];
> > cur = cur->next;
> > }
> >
> > @@ -2899,7 +2899,7 @@ static void discard_tunables(sepol_handle_t *sh, policydb_t *pol)
> > cur_expr = cur_expr->next) {
> > if (cur_expr->expr_type != COND_BOOL)
> > continue;
> > - booldatum = pol->bool_val_to_struct[cur_expr->bool - 1];
> > + booldatum = pol->bool_val_to_struct[cur_expr->boolean - 1];
> > if (booldatum->flags & COND_BOOL_FLAGS_TUNABLE)
> > tmp[tunables++] = booldatum;
> > else
> > diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
> > index ad4121d5..e9cd89c2 100644
> > --- a/libsepol/src/kernel_to_cil.c
> > +++ b/libsepol/src/kernel_to_cil.c
> > @@ -43,7 +43,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> >
> > for (curr = expr; curr != NULL; curr = curr->next) {
> > if (curr->expr_type == COND_BOOL) {
> > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > new_val = create_str("%s", 1, val1);
> > } else {
> > const char *op;
> > diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
> > index 63dffd9b..59083479 100644
> > --- a/libsepol/src/kernel_to_conf.c
> > +++ b/libsepol/src/kernel_to_conf.c
> > @@ -42,7 +42,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> >
> > for (curr = expr; curr != NULL; curr = curr->next) {
> > if (curr->expr_type == COND_BOOL) {
> > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > new_val = create_str("%s", 1, val1);
> > } else {
> > const char *op;
> > diff --git a/libsepol/src/link.c b/libsepol/src/link.c
> > index cbe4cea4..3b7742bc 100644
> > --- a/libsepol/src/link.c
> > +++ b/libsepol/src/link.c
> > @@ -1524,9 +1524,9 @@ static int copy_cond_list(cond_node_t * list, cond_node_t ** dst,
> > /* expression nodes don't have a bool value of 0 - don't map them */
> > if (cur_expr->expr_type != COND_BOOL)
> > continue;
> > - assert(module->map[SYM_BOOLS][cur_expr->bool - 1] != 0);
> > - cur_expr->bool =
> > - module->map[SYM_BOOLS][cur_expr->bool - 1];
> > + assert(module->map[SYM_BOOLS][cur_expr->boolean - 1] != 0);
> > + cur_expr->boolean =
> > + module->map[SYM_BOOLS][cur_expr->boolean - 1];
> > }
> > new_node->nbools = cur->nbools;
> > /* FIXME should COND_MAX_BOOLS be used here? */
> > diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
> > index b900290a..4e15f8e4 100644
> > --- a/libsepol/src/module_to_cil.c
> > +++ b/libsepol/src/module_to_cil.c
> > @@ -1272,7 +1272,7 @@ static int cond_expr_to_cil(int indent, struct policydb *pdb, struct cond_expr *
> >
> > for (curr = cond_expr; curr != NULL; curr = curr->next) {
> > if (curr->expr_type == COND_BOOL) {
> > - val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > + val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > // length of boolean + 2 parens + null terminator
> > len = strlen(val1) + 2 + 1;
> > new_val = malloc(len);
> > diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c
> > index 521ea4ff..d1bc7f03 100644
> > --- a/libsepol/src/policydb_validate.c
> > +++ b/libsepol/src/policydb_validate.c
> > @@ -957,7 +957,7 @@ static int validate_cond_expr(sepol_handle_t *handle, const struct cond_expr *ex
> > for (; expr; expr = expr->next) {
> > switch(expr->expr_type) {
> > case COND_BOOL:
> > - if (validate_value(expr->bool, boolean))
> > + if (validate_value(expr->boolean, boolean))
> > goto bad;
> > if (depth == (COND_EXPR_MAXDEPTH - 1))
> > goto bad;
> > diff --git a/libsepol/src/write.c b/libsepol/src/write.c
> > index a9fdf93a..024fe628 100644
> > --- a/libsepol/src/write.c
> > +++ b/libsepol/src/write.c
> > @@ -834,7 +834,7 @@ static int cond_write_node(policydb_t * p,
> > for (cur_expr = node->expr; cur_expr != NULL; cur_expr = cur_expr->next) {
> > items = 0;
> > buf[items++] = cpu_to_le32(cur_expr->expr_type);
> > - buf[items++] = cpu_to_le32(cur_expr->bool);
> > + buf[items++] = cpu_to_le32(cur_expr->boolean);
> > items2 = put_entry(buf, sizeof(uint32_t), items, fp);
> > if (items2 != items)
> > return POLICYDB_ERROR;
> > diff --git a/libsepol/tests/debug.c b/libsepol/tests/debug.c
> > index 90aa6e0a..8494dd25 100644
> > --- a/libsepol/tests/debug.c
> > +++ b/libsepol/tests/debug.c
> > @@ -41,7 +41,7 @@ void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
> > for (cur = exp; cur != NULL; cur = cur->next) {
> > switch (cur->expr_type) {
> > case COND_BOOL:
> > - fprintf(fp, "%s ", p->p_bool_val_to_name[cur->bool - 1]);
> > + fprintf(fp, "%s ", p->p_bool_val_to_name[cur->boolean - 1]);
> > break;
> > case COND_NOT:
> > fprintf(fp, "! ");
> > diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
> > index 694a7346..6ea0e4c2 100644
> > --- a/libsepol/tests/test-linker-cond-map.c
> > +++ b/libsepol/tests/test-linker-cond-map.c
> > @@ -70,7 +70,7 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
> >
> > CU_ASSERT(expr->expr_type == bools[i].expr_type);
> > if (bools[i].bool) {
> > - CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->bool - 1], bools[i].bool) == 0);
> > + CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
> > }
> > expr = expr->next;
> > }
> > --
> > 2.38.1
> >
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 1/6] libsepol: rename struct member
2023-03-31 17:36 ` Christian Göttsche
@ 2023-03-31 18:28 ` James Carter
2023-03-31 18:39 ` Christian Göttsche
0 siblings, 1 reply; 10+ messages in thread
From: James Carter @ 2023-03-31 18:28 UTC (permalink / raw)
To: Christian Göttsche; +Cc: selinux, Chris PeBenito
On Fri, Mar 31, 2023 at 1:36 PM Christian Göttsche
<cgzones@googlemail.com> wrote:
>
> On Thu, 17 Nov 2022 at 22:45, James Carter <jwcart2@gmail.com> wrote:
> >
> > On Mon, Nov 14, 2022 at 3:16 PM Christian Göttsche
> > <cgzones@googlemail.com> wrote:
> > >
> > > Avoid using the identifier `bool` to improve support with future C
> > > standards. C23 is about to make `bool` a predefined macro (see N2654).
> > >
> > > Since the struct cond_expr_t is part of the public API it will break
> > > client applications. A quick code search of the Debian code shows only
> > > usage in checkpolicy and setools.
> > >
> >
> > Because it will break setools, I think we should hold off on this
> > series until after the upcoming release of the SELinux userspace
> > (which should happen in early to mid December).
> > Jim
>
> Since version 3.5 has been released, could this series please be reconsidered?
>
I am planning on looking at it. I am working on a second version of my
CIL deny rule patch set, but after that I will get to this.
Thanks,
Jim
> >
> > > Define a new macro signaling the renaming to simplify support of client
> > > applications for new and older versions of libsepol.
> > >
> > > Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
> > > ---
> > > libsepol/cil/src/cil_binary.c | 6 +++---
> > > libsepol/include/sepol/policydb/conditional.h | 4 +++-
> > > libsepol/src/conditional.c | 14 +++++++-------
> > > libsepol/src/expand.c | 6 +++---
> > > libsepol/src/kernel_to_cil.c | 2 +-
> > > libsepol/src/kernel_to_conf.c | 2 +-
> > > libsepol/src/link.c | 6 +++---
> > > libsepol/src/module_to_cil.c | 2 +-
> > > libsepol/src/policydb_validate.c | 2 +-
> > > libsepol/src/write.c | 2 +-
> > > libsepol/tests/debug.c | 2 +-
> > > libsepol/tests/test-linker-cond-map.c | 2 +-
> > > 12 files changed, 26 insertions(+), 24 deletions(-)
> > >
> > > diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> > > index 40615db2..ef7f4d70 100644
> > > --- a/libsepol/cil/src/cil_binary.c
> > > +++ b/libsepol/cil/src/cil_binary.c
> > > @@ -2123,7 +2123,7 @@ static int __cil_cond_item_to_sepol_expr(policydb_t *pdb, struct cil_list_item *
> > > *head = cil_malloc(sizeof(cond_expr_t));
> > > (*head)->next = NULL;
> > > (*head)->expr_type = COND_BOOL;
> > > - (*head)->bool = sepol_bool->s.value;
> > > + (*head)->boolean = sepol_bool->s.value;
> > > *tail = *head;
> > > } else if (item->flavor == CIL_LIST) {
> > > struct cil_list *l = item->data;
> > > @@ -2159,7 +2159,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > > enum cil_flavor cil_op = (enum cil_flavor)(uintptr_t)item->data;
> > >
> > > op = cil_malloc(sizeof(*op));
> > > - op->bool = 0;
> > > + op->boolean = 0;
> > > op->next = NULL;
> > >
> > > switch (cil_op) {
> > > @@ -2226,7 +2226,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > > goto exit;
> > > }
> > > op = cil_malloc(sizeof(*op));
> > > - op->bool = 0;
> > > + op->boolean = 0;
> > > op->next = NULL;
> > > op->expr_type = COND_OR;
> > > t1->next = h2;
> > > diff --git a/libsepol/include/sepol/policydb/conditional.h b/libsepol/include/sepol/policydb/conditional.h
> > > index 49c0d766..8d4741d3 100644
> > > --- a/libsepol/include/sepol/policydb/conditional.h
> > > +++ b/libsepol/include/sepol/policydb/conditional.h
> > > @@ -54,7 +54,9 @@ typedef struct cond_expr {
> > > #define COND_NEQ 7 /* bool != bool */
> > > #define COND_LAST COND_NEQ
> > > uint32_t expr_type;
> > > - uint32_t bool;
> > > + /* The member `boolean` was renamed from `bool` in version 3.5 */
> > > +#define COND_EXPR_T_RENAME_BOOL_BOOLEAN
> > > + uint32_t boolean;
> > > struct cond_expr *next;
> > > } cond_expr_t;
> > >
> > > diff --git a/libsepol/src/conditional.c b/libsepol/src/conditional.c
> > > index a620451d..24380ea0 100644
> > > --- a/libsepol/src/conditional.c
> > > +++ b/libsepol/src/conditional.c
> > > @@ -125,7 +125,7 @@ int cond_expr_equal(cond_node_t * a, cond_node_t * b)
> > > if (cur_a->expr_type != cur_b->expr_type)
> > > return 0;
> > > if (cur_a->expr_type == COND_BOOL) {
> > > - if (cur_a->bool != cur_b->bool)
> > > + if (cur_a->boolean != cur_b->boolean)
> > > return 0;
> > > }
> > > cur_a = cur_a->next;
> > > @@ -223,7 +223,7 @@ int cond_evaluate_expr(policydb_t * p, cond_expr_t * expr)
> > > if (sp == (COND_EXPR_MAXDEPTH - 1))
> > > return -1;
> > > sp++;
> > > - s[sp] = p->bool_val_to_struct[cur->bool - 1]->state;
> > > + s[sp] = p->bool_val_to_struct[cur->boolean - 1]->state;
> > > break;
> > > case COND_NOT:
> > > if (sp < 0)
> > > @@ -279,7 +279,7 @@ cond_expr_t *cond_copy_expr(cond_expr_t * expr)
> > > memset(new_expr, 0, sizeof(cond_expr_t));
> > >
> > > new_expr->expr_type = cur->expr_type;
> > > - new_expr->bool = cur->bool;
> > > + new_expr->boolean = cur->boolean;
> > >
> > > if (!head)
> > > head = new_expr;
> > > @@ -388,10 +388,10 @@ int cond_normalize_expr(policydb_t * p, cond_node_t * cn)
> > > switch (e->expr_type) {
> > > case COND_BOOL:
> > > /* see if we've already seen this bool */
> > > - if (!bool_present(e->bool, cn->bool_ids, cn->nbools)) {
> > > + if (!bool_present(e->boolean, cn->bool_ids, cn->nbools)) {
> > > /* count em all but only record up to COND_MAX_BOOLS */
> > > if (cn->nbools < COND_MAX_BOOLS)
> > > - cn->bool_ids[cn->nbools++] = e->bool;
> > > + cn->bool_ids[cn->nbools++] = e->boolean;
> > > else
> > > cn->nbools++;
> > > }
> > > @@ -737,7 +737,7 @@ static int expr_isvalid(policydb_t * p, cond_expr_t * expr)
> > > return 0;
> > > }
> > >
> > > - if (expr->bool > p->p_bools.nprim) {
> > > + if (expr->boolean > p->p_bools.nprim) {
> > > WARN(NULL, "security: conditional expressions uses unknown bool.");
> > > return 0;
> > > }
> > > @@ -775,7 +775,7 @@ static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
> > > memset(expr, 0, sizeof(cond_expr_t));
> > >
> > > expr->expr_type = le32_to_cpu(buf[0]);
> > > - expr->bool = le32_to_cpu(buf[1]);
> > > + expr->boolean = le32_to_cpu(buf[1]);
> > >
> > > if (!expr_isvalid(p, expr)) {
> > > free(expr);
> > > diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> > > index 8d19850e..1337c32f 100644
> > > --- a/libsepol/src/expand.c
> > > +++ b/libsepol/src/expand.c
> > > @@ -2025,8 +2025,8 @@ static int cond_node_map_bools(expand_state_t * state, cond_node_t * cn)
> > >
> > > cur = cn->expr;
> > > while (cur) {
> > > - if (cur->bool)
> > > - cur->bool = state->boolmap[cur->bool - 1];
> > > + if (cur->boolean)
> > > + cur->boolean = state->boolmap[cur->boolean - 1];
> > > cur = cur->next;
> > > }
> > >
> > > @@ -2899,7 +2899,7 @@ static void discard_tunables(sepol_handle_t *sh, policydb_t *pol)
> > > cur_expr = cur_expr->next) {
> > > if (cur_expr->expr_type != COND_BOOL)
> > > continue;
> > > - booldatum = pol->bool_val_to_struct[cur_expr->bool - 1];
> > > + booldatum = pol->bool_val_to_struct[cur_expr->boolean - 1];
> > > if (booldatum->flags & COND_BOOL_FLAGS_TUNABLE)
> > > tmp[tunables++] = booldatum;
> > > else
> > > diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
> > > index ad4121d5..e9cd89c2 100644
> > > --- a/libsepol/src/kernel_to_cil.c
> > > +++ b/libsepol/src/kernel_to_cil.c
> > > @@ -43,7 +43,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> > >
> > > for (curr = expr; curr != NULL; curr = curr->next) {
> > > if (curr->expr_type == COND_BOOL) {
> > > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > new_val = create_str("%s", 1, val1);
> > > } else {
> > > const char *op;
> > > diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
> > > index 63dffd9b..59083479 100644
> > > --- a/libsepol/src/kernel_to_conf.c
> > > +++ b/libsepol/src/kernel_to_conf.c
> > > @@ -42,7 +42,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> > >
> > > for (curr = expr; curr != NULL; curr = curr->next) {
> > > if (curr->expr_type == COND_BOOL) {
> > > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > new_val = create_str("%s", 1, val1);
> > > } else {
> > > const char *op;
> > > diff --git a/libsepol/src/link.c b/libsepol/src/link.c
> > > index cbe4cea4..3b7742bc 100644
> > > --- a/libsepol/src/link.c
> > > +++ b/libsepol/src/link.c
> > > @@ -1524,9 +1524,9 @@ static int copy_cond_list(cond_node_t * list, cond_node_t ** dst,
> > > /* expression nodes don't have a bool value of 0 - don't map them */
> > > if (cur_expr->expr_type != COND_BOOL)
> > > continue;
> > > - assert(module->map[SYM_BOOLS][cur_expr->bool - 1] != 0);
> > > - cur_expr->bool =
> > > - module->map[SYM_BOOLS][cur_expr->bool - 1];
> > > + assert(module->map[SYM_BOOLS][cur_expr->boolean - 1] != 0);
> > > + cur_expr->boolean =
> > > + module->map[SYM_BOOLS][cur_expr->boolean - 1];
> > > }
> > > new_node->nbools = cur->nbools;
> > > /* FIXME should COND_MAX_BOOLS be used here? */
> > > diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
> > > index b900290a..4e15f8e4 100644
> > > --- a/libsepol/src/module_to_cil.c
> > > +++ b/libsepol/src/module_to_cil.c
> > > @@ -1272,7 +1272,7 @@ static int cond_expr_to_cil(int indent, struct policydb *pdb, struct cond_expr *
> > >
> > > for (curr = cond_expr; curr != NULL; curr = curr->next) {
> > > if (curr->expr_type == COND_BOOL) {
> > > - val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > + val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > // length of boolean + 2 parens + null terminator
> > > len = strlen(val1) + 2 + 1;
> > > new_val = malloc(len);
> > > diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c
> > > index 521ea4ff..d1bc7f03 100644
> > > --- a/libsepol/src/policydb_validate.c
> > > +++ b/libsepol/src/policydb_validate.c
> > > @@ -957,7 +957,7 @@ static int validate_cond_expr(sepol_handle_t *handle, const struct cond_expr *ex
> > > for (; expr; expr = expr->next) {
> > > switch(expr->expr_type) {
> > > case COND_BOOL:
> > > - if (validate_value(expr->bool, boolean))
> > > + if (validate_value(expr->boolean, boolean))
> > > goto bad;
> > > if (depth == (COND_EXPR_MAXDEPTH - 1))
> > > goto bad;
> > > diff --git a/libsepol/src/write.c b/libsepol/src/write.c
> > > index a9fdf93a..024fe628 100644
> > > --- a/libsepol/src/write.c
> > > +++ b/libsepol/src/write.c
> > > @@ -834,7 +834,7 @@ static int cond_write_node(policydb_t * p,
> > > for (cur_expr = node->expr; cur_expr != NULL; cur_expr = cur_expr->next) {
> > > items = 0;
> > > buf[items++] = cpu_to_le32(cur_expr->expr_type);
> > > - buf[items++] = cpu_to_le32(cur_expr->bool);
> > > + buf[items++] = cpu_to_le32(cur_expr->boolean);
> > > items2 = put_entry(buf, sizeof(uint32_t), items, fp);
> > > if (items2 != items)
> > > return POLICYDB_ERROR;
> > > diff --git a/libsepol/tests/debug.c b/libsepol/tests/debug.c
> > > index 90aa6e0a..8494dd25 100644
> > > --- a/libsepol/tests/debug.c
> > > +++ b/libsepol/tests/debug.c
> > > @@ -41,7 +41,7 @@ void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
> > > for (cur = exp; cur != NULL; cur = cur->next) {
> > > switch (cur->expr_type) {
> > > case COND_BOOL:
> > > - fprintf(fp, "%s ", p->p_bool_val_to_name[cur->bool - 1]);
> > > + fprintf(fp, "%s ", p->p_bool_val_to_name[cur->boolean - 1]);
> > > break;
> > > case COND_NOT:
> > > fprintf(fp, "! ");
> > > diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
> > > index 694a7346..6ea0e4c2 100644
> > > --- a/libsepol/tests/test-linker-cond-map.c
> > > +++ b/libsepol/tests/test-linker-cond-map.c
> > > @@ -70,7 +70,7 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
> > >
> > > CU_ASSERT(expr->expr_type == bools[i].expr_type);
> > > if (bools[i].bool) {
> > > - CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->bool - 1], bools[i].bool) == 0);
> > > + CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
> > > }
> > > expr = expr->next;
> > > }
> > > --
> > > 2.38.1
> > >
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 1/6] libsepol: rename struct member
2023-03-31 18:28 ` James Carter
@ 2023-03-31 18:39 ` Christian Göttsche
0 siblings, 0 replies; 10+ messages in thread
From: Christian Göttsche @ 2023-03-31 18:39 UTC (permalink / raw)
To: James Carter; +Cc: selinux, Chris PeBenito
On Fri, 31 Mar 2023 at 20:28, James Carter <jwcart2@gmail.com> wrote:
>
> On Fri, Mar 31, 2023 at 1:36 PM Christian Göttsche
> <cgzones@googlemail.com> wrote:
> >
> > On Thu, 17 Nov 2022 at 22:45, James Carter <jwcart2@gmail.com> wrote:
> > >
> > > On Mon, Nov 14, 2022 at 3:16 PM Christian Göttsche
> > > <cgzones@googlemail.com> wrote:
> > > >
> > > > Avoid using the identifier `bool` to improve support with future C
> > > > standards. C23 is about to make `bool` a predefined macro (see N2654).
> > > >
> > > > Since the struct cond_expr_t is part of the public API it will break
> > > > client applications. A quick code search of the Debian code shows only
> > > > usage in checkpolicy and setools.
> > > >
> > >
> > > Because it will break setools, I think we should hold off on this
> > > series until after the upcoming release of the SELinux userspace
> > > (which should happen in early to mid December).
> > > Jim
> >
> > Since version 3.5 has been released, could this series please be reconsidered?
> >
>
> I am planning on looking at it. I am working on a second version of my
> CIL deny rule patch set, but after that I will get to this.
> Thanks,
> Jim
Thanks in advance.
>
> > >
> > > > Define a new macro signaling the renaming to simplify support of client
> > > > applications for new and older versions of libsepol.
> > > >
> > > > Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
> > > > ---
> > > > libsepol/cil/src/cil_binary.c | 6 +++---
> > > > libsepol/include/sepol/policydb/conditional.h | 4 +++-
> > > > libsepol/src/conditional.c | 14 +++++++-------
> > > > libsepol/src/expand.c | 6 +++---
> > > > libsepol/src/kernel_to_cil.c | 2 +-
> > > > libsepol/src/kernel_to_conf.c | 2 +-
> > > > libsepol/src/link.c | 6 +++---
> > > > libsepol/src/module_to_cil.c | 2 +-
> > > > libsepol/src/policydb_validate.c | 2 +-
> > > > libsepol/src/write.c | 2 +-
> > > > libsepol/tests/debug.c | 2 +-
> > > > libsepol/tests/test-linker-cond-map.c | 2 +-
> > > > 12 files changed, 26 insertions(+), 24 deletions(-)
> > > >
> > > > diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> > > > index 40615db2..ef7f4d70 100644
> > > > --- a/libsepol/cil/src/cil_binary.c
> > > > +++ b/libsepol/cil/src/cil_binary.c
> > > > @@ -2123,7 +2123,7 @@ static int __cil_cond_item_to_sepol_expr(policydb_t *pdb, struct cil_list_item *
> > > > *head = cil_malloc(sizeof(cond_expr_t));
> > > > (*head)->next = NULL;
> > > > (*head)->expr_type = COND_BOOL;
> > > > - (*head)->bool = sepol_bool->s.value;
> > > > + (*head)->boolean = sepol_bool->s.value;
> > > > *tail = *head;
> > > > } else if (item->flavor == CIL_LIST) {
> > > > struct cil_list *l = item->data;
> > > > @@ -2159,7 +2159,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > > > enum cil_flavor cil_op = (enum cil_flavor)(uintptr_t)item->data;
> > > >
> > > > op = cil_malloc(sizeof(*op));
> > > > - op->bool = 0;
> > > > + op->boolean = 0;
> > > > op->next = NULL;
> > > >
> > > > switch (cil_op) {
> > > > @@ -2226,7 +2226,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
> > > > goto exit;
> > > > }
> > > > op = cil_malloc(sizeof(*op));
> > > > - op->bool = 0;
> > > > + op->boolean = 0;
> > > > op->next = NULL;
> > > > op->expr_type = COND_OR;
> > > > t1->next = h2;
> > > > diff --git a/libsepol/include/sepol/policydb/conditional.h b/libsepol/include/sepol/policydb/conditional.h
> > > > index 49c0d766..8d4741d3 100644
> > > > --- a/libsepol/include/sepol/policydb/conditional.h
> > > > +++ b/libsepol/include/sepol/policydb/conditional.h
> > > > @@ -54,7 +54,9 @@ typedef struct cond_expr {
> > > > #define COND_NEQ 7 /* bool != bool */
> > > > #define COND_LAST COND_NEQ
> > > > uint32_t expr_type;
> > > > - uint32_t bool;
> > > > + /* The member `boolean` was renamed from `bool` in version 3.5 */
I'll send a new version using 3.6 next week.
> > > > +#define COND_EXPR_T_RENAME_BOOL_BOOLEAN
> > > > + uint32_t boolean;
> > > > struct cond_expr *next;
> > > > } cond_expr_t;
> > > >
> > > > diff --git a/libsepol/src/conditional.c b/libsepol/src/conditional.c
> > > > index a620451d..24380ea0 100644
> > > > --- a/libsepol/src/conditional.c
> > > > +++ b/libsepol/src/conditional.c
> > > > @@ -125,7 +125,7 @@ int cond_expr_equal(cond_node_t * a, cond_node_t * b)
> > > > if (cur_a->expr_type != cur_b->expr_type)
> > > > return 0;
> > > > if (cur_a->expr_type == COND_BOOL) {
> > > > - if (cur_a->bool != cur_b->bool)
> > > > + if (cur_a->boolean != cur_b->boolean)
> > > > return 0;
> > > > }
> > > > cur_a = cur_a->next;
> > > > @@ -223,7 +223,7 @@ int cond_evaluate_expr(policydb_t * p, cond_expr_t * expr)
> > > > if (sp == (COND_EXPR_MAXDEPTH - 1))
> > > > return -1;
> > > > sp++;
> > > > - s[sp] = p->bool_val_to_struct[cur->bool - 1]->state;
> > > > + s[sp] = p->bool_val_to_struct[cur->boolean - 1]->state;
> > > > break;
> > > > case COND_NOT:
> > > > if (sp < 0)
> > > > @@ -279,7 +279,7 @@ cond_expr_t *cond_copy_expr(cond_expr_t * expr)
> > > > memset(new_expr, 0, sizeof(cond_expr_t));
> > > >
> > > > new_expr->expr_type = cur->expr_type;
> > > > - new_expr->bool = cur->bool;
> > > > + new_expr->boolean = cur->boolean;
> > > >
> > > > if (!head)
> > > > head = new_expr;
> > > > @@ -388,10 +388,10 @@ int cond_normalize_expr(policydb_t * p, cond_node_t * cn)
> > > > switch (e->expr_type) {
> > > > case COND_BOOL:
> > > > /* see if we've already seen this bool */
> > > > - if (!bool_present(e->bool, cn->bool_ids, cn->nbools)) {
> > > > + if (!bool_present(e->boolean, cn->bool_ids, cn->nbools)) {
> > > > /* count em all but only record up to COND_MAX_BOOLS */
> > > > if (cn->nbools < COND_MAX_BOOLS)
> > > > - cn->bool_ids[cn->nbools++] = e->bool;
> > > > + cn->bool_ids[cn->nbools++] = e->boolean;
> > > > else
> > > > cn->nbools++;
> > > > }
> > > > @@ -737,7 +737,7 @@ static int expr_isvalid(policydb_t * p, cond_expr_t * expr)
> > > > return 0;
> > > > }
> > > >
> > > > - if (expr->bool > p->p_bools.nprim) {
> > > > + if (expr->boolean > p->p_bools.nprim) {
> > > > WARN(NULL, "security: conditional expressions uses unknown bool.");
> > > > return 0;
> > > > }
> > > > @@ -775,7 +775,7 @@ static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
> > > > memset(expr, 0, sizeof(cond_expr_t));
> > > >
> > > > expr->expr_type = le32_to_cpu(buf[0]);
> > > > - expr->bool = le32_to_cpu(buf[1]);
> > > > + expr->boolean = le32_to_cpu(buf[1]);
> > > >
> > > > if (!expr_isvalid(p, expr)) {
> > > > free(expr);
> > > > diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> > > > index 8d19850e..1337c32f 100644
> > > > --- a/libsepol/src/expand.c
> > > > +++ b/libsepol/src/expand.c
> > > > @@ -2025,8 +2025,8 @@ static int cond_node_map_bools(expand_state_t * state, cond_node_t * cn)
> > > >
> > > > cur = cn->expr;
> > > > while (cur) {
> > > > - if (cur->bool)
> > > > - cur->bool = state->boolmap[cur->bool - 1];
> > > > + if (cur->boolean)
> > > > + cur->boolean = state->boolmap[cur->boolean - 1];
> > > > cur = cur->next;
> > > > }
> > > >
> > > > @@ -2899,7 +2899,7 @@ static void discard_tunables(sepol_handle_t *sh, policydb_t *pol)
> > > > cur_expr = cur_expr->next) {
> > > > if (cur_expr->expr_type != COND_BOOL)
> > > > continue;
> > > > - booldatum = pol->bool_val_to_struct[cur_expr->bool - 1];
> > > > + booldatum = pol->bool_val_to_struct[cur_expr->boolean - 1];
> > > > if (booldatum->flags & COND_BOOL_FLAGS_TUNABLE)
> > > > tmp[tunables++] = booldatum;
> > > > else
> > > > diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
> > > > index ad4121d5..e9cd89c2 100644
> > > > --- a/libsepol/src/kernel_to_cil.c
> > > > +++ b/libsepol/src/kernel_to_cil.c
> > > > @@ -43,7 +43,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> > > >
> > > > for (curr = expr; curr != NULL; curr = curr->next) {
> > > > if (curr->expr_type == COND_BOOL) {
> > > > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > > new_val = create_str("%s", 1, val1);
> > > > } else {
> > > > const char *op;
> > > > diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
> > > > index 63dffd9b..59083479 100644
> > > > --- a/libsepol/src/kernel_to_conf.c
> > > > +++ b/libsepol/src/kernel_to_conf.c
> > > > @@ -42,7 +42,7 @@ static char *cond_expr_to_str(struct policydb *pdb, struct cond_expr *expr)
> > > >
> > > > for (curr = expr; curr != NULL; curr = curr->next) {
> > > > if (curr->expr_type == COND_BOOL) {
> > > > - char *val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > > + char *val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > > new_val = create_str("%s", 1, val1);
> > > > } else {
> > > > const char *op;
> > > > diff --git a/libsepol/src/link.c b/libsepol/src/link.c
> > > > index cbe4cea4..3b7742bc 100644
> > > > --- a/libsepol/src/link.c
> > > > +++ b/libsepol/src/link.c
> > > > @@ -1524,9 +1524,9 @@ static int copy_cond_list(cond_node_t * list, cond_node_t ** dst,
> > > > /* expression nodes don't have a bool value of 0 - don't map them */
> > > > if (cur_expr->expr_type != COND_BOOL)
> > > > continue;
> > > > - assert(module->map[SYM_BOOLS][cur_expr->bool - 1] != 0);
> > > > - cur_expr->bool =
> > > > - module->map[SYM_BOOLS][cur_expr->bool - 1];
> > > > + assert(module->map[SYM_BOOLS][cur_expr->boolean - 1] != 0);
> > > > + cur_expr->boolean =
> > > > + module->map[SYM_BOOLS][cur_expr->boolean - 1];
> > > > }
> > > > new_node->nbools = cur->nbools;
> > > > /* FIXME should COND_MAX_BOOLS be used here? */
> > > > diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
> > > > index b900290a..4e15f8e4 100644
> > > > --- a/libsepol/src/module_to_cil.c
> > > > +++ b/libsepol/src/module_to_cil.c
> > > > @@ -1272,7 +1272,7 @@ static int cond_expr_to_cil(int indent, struct policydb *pdb, struct cond_expr *
> > > >
> > > > for (curr = cond_expr; curr != NULL; curr = curr->next) {
> > > > if (curr->expr_type == COND_BOOL) {
> > > > - val1 = pdb->p_bool_val_to_name[curr->bool - 1];
> > > > + val1 = pdb->p_bool_val_to_name[curr->boolean - 1];
> > > > // length of boolean + 2 parens + null terminator
> > > > len = strlen(val1) + 2 + 1;
> > > > new_val = malloc(len);
> > > > diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c
> > > > index 521ea4ff..d1bc7f03 100644
> > > > --- a/libsepol/src/policydb_validate.c
> > > > +++ b/libsepol/src/policydb_validate.c
> > > > @@ -957,7 +957,7 @@ static int validate_cond_expr(sepol_handle_t *handle, const struct cond_expr *ex
> > > > for (; expr; expr = expr->next) {
> > > > switch(expr->expr_type) {
> > > > case COND_BOOL:
> > > > - if (validate_value(expr->bool, boolean))
> > > > + if (validate_value(expr->boolean, boolean))
> > > > goto bad;
> > > > if (depth == (COND_EXPR_MAXDEPTH - 1))
> > > > goto bad;
> > > > diff --git a/libsepol/src/write.c b/libsepol/src/write.c
> > > > index a9fdf93a..024fe628 100644
> > > > --- a/libsepol/src/write.c
> > > > +++ b/libsepol/src/write.c
> > > > @@ -834,7 +834,7 @@ static int cond_write_node(policydb_t * p,
> > > > for (cur_expr = node->expr; cur_expr != NULL; cur_expr = cur_expr->next) {
> > > > items = 0;
> > > > buf[items++] = cpu_to_le32(cur_expr->expr_type);
> > > > - buf[items++] = cpu_to_le32(cur_expr->bool);
> > > > + buf[items++] = cpu_to_le32(cur_expr->boolean);
> > > > items2 = put_entry(buf, sizeof(uint32_t), items, fp);
> > > > if (items2 != items)
> > > > return POLICYDB_ERROR;
> > > > diff --git a/libsepol/tests/debug.c b/libsepol/tests/debug.c
> > > > index 90aa6e0a..8494dd25 100644
> > > > --- a/libsepol/tests/debug.c
> > > > +++ b/libsepol/tests/debug.c
> > > > @@ -41,7 +41,7 @@ void display_expr(policydb_t * p, cond_expr_t * exp, FILE * fp)
> > > > for (cur = exp; cur != NULL; cur = cur->next) {
> > > > switch (cur->expr_type) {
> > > > case COND_BOOL:
> > > > - fprintf(fp, "%s ", p->p_bool_val_to_name[cur->bool - 1]);
> > > > + fprintf(fp, "%s ", p->p_bool_val_to_name[cur->boolean - 1]);
> > > > break;
> > > > case COND_NOT:
> > > > fprintf(fp, "! ");
> > > > diff --git a/libsepol/tests/test-linker-cond-map.c b/libsepol/tests/test-linker-cond-map.c
> > > > index 694a7346..6ea0e4c2 100644
> > > > --- a/libsepol/tests/test-linker-cond-map.c
> > > > +++ b/libsepol/tests/test-linker-cond-map.c
> > > > @@ -70,7 +70,7 @@ static void test_cond_expr_mapping(policydb_t * p, avrule_decl_t * d, test_cond_
> > > >
> > > > CU_ASSERT(expr->expr_type == bools[i].expr_type);
> > > > if (bools[i].bool) {
> > > > - CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->bool - 1], bools[i].bool) == 0);
> > > > + CU_ASSERT(strcmp(p->sym_val_to_name[SYM_BOOLS][expr->boolean - 1], bools[i].bool) == 0);
> > > > }
> > > > expr = expr->next;
> > > > }
> > > > --
> > > > 2.38.1
> > > >
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-03-31 18:40 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-14 20:10 [RFC PATCH 1/6] libsepol: rename struct member Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 2/6] checkpolicy: update cond_expr_t struct member name Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 3/6] libsepol/tests: rename bool indentifiers Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 4/6] checkpolicy: rename bool identifiers Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 5/6] libsepol: " Christian Göttsche
2022-11-14 20:10 ` [RFC PATCH 6/6] libsemanage/tests: " Christian Göttsche
2022-11-17 21:45 ` [RFC PATCH 1/6] libsepol: rename struct member James Carter
2023-03-31 17:36 ` Christian Göttsche
2023-03-31 18:28 ` James Carter
2023-03-31 18:39 ` Christian Göttsche
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).