mirror of
https://github.com/topjohnwu/selinux.git
synced 2024-12-13 14:25:42 +00:00
Fix semanage_direct_commit() to notice disable_dontaudit
Add code to semanage_direct_commit() to notice that the disable_dontaudit flag has been changed and rebuild the policy if so. Currently, libsemanage doesn't notice that the disable_dontaudit flag is set so it does not rebuild the policy. semodule got around this by calling semanage_set_rebuild() explicitly, but libsemanage should really notice that this has changed and rebuild appropriately.
This commit is contained in:
parent
1f60e9b7a3
commit
f3d9262568
@ -683,7 +683,7 @@ static int semanage_direct_commit(semanage_handle_t * sh)
|
||||
|
||||
/* Declare some variables */
|
||||
int modified = 0, fcontexts_modified, ports_modified,
|
||||
seusers_modified, users_extra_modified;
|
||||
seusers_modified, users_extra_modified, dontaudit_modified;
|
||||
dbase_config_t *users = semanage_user_dbase_local(sh);
|
||||
dbase_config_t *users_base = semanage_user_base_dbase_local(sh);
|
||||
dbase_config_t *pusers_base = semanage_user_base_dbase_policy(sh);
|
||||
@ -702,6 +702,10 @@ static int semanage_direct_commit(semanage_handle_t * sh)
|
||||
|
||||
/* Create or remove the disable_dontaudit flag file. */
|
||||
path = semanage_path(SEMANAGE_TMP, SEMANAGE_DISABLE_DONTAUDIT);
|
||||
if (access(path, F_OK) == 0)
|
||||
dontaudit_modified = !(sepol_get_disable_dontaudit(sh->sepolh) == 1);
|
||||
else
|
||||
dontaudit_modified = (sepol_get_disable_dontaudit(sh->sepolh) == 1);
|
||||
if (sepol_get_disable_dontaudit(sh->sepolh) == 1) {
|
||||
FILE *touch;
|
||||
touch = fopen(path, "w");
|
||||
@ -742,6 +746,7 @@ static int semanage_direct_commit(semanage_handle_t * sh)
|
||||
modified |= bools->dtable->is_modified(bools->dbase);
|
||||
modified |= ifaces->dtable->is_modified(ifaces->dbase);
|
||||
modified |= nodes->dtable->is_modified(nodes->dbase);
|
||||
modified |= dontaudit_modified;
|
||||
|
||||
/* If there were policy changes, or explicitly requested, rebuild the policy */
|
||||
if (sh->do_rebuild || modified) {
|
||||
|
Loading…
Reference in New Issue
Block a user