commit:     dd3eb87286d811ef24ce6a2cb381da050b326dea
Author:     Russell Coker <russell <AT> coker <DOT> com <DOT> au>
AuthorDate: Sat Jun 14 04:30:33 2025 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Tue Jul 15 07:52:23 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=dd3eb872

Policy for the userspace feedback daemon for handsets, for vibration etc

Signed-off-by: Russell Coker <russell <AT> coker.com.au>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/apps/feedbackd.fc   |  2 ++
 policy/modules/apps/feedbackd.if   | 66 ++++++++++++++++++++++++++++++++++++++
 policy/modules/apps/feedbackd.te   | 12 +++++++
 policy/modules/roles/staff.te      |  4 +++
 policy/modules/roles/sysadm.te     |  4 +++
 policy/modules/roles/unprivuser.te |  4 +++
 6 files changed, 92 insertions(+)

diff --git a/policy/modules/apps/feedbackd.fc b/policy/modules/apps/feedbackd.fc
new file mode 100644
index 000000000..4e1187da6
--- /dev/null
+++ b/policy/modules/apps/feedbackd.fc
@@ -0,0 +1,2 @@
+/usr/libexec/feedbackd         --      
gen_context(system_u:object_r:feedbackd_exec_t,s0)
+/usr/libexec/fbd-ledctrl       --      
gen_context(system_u:object_r:feedbackd_exec_t,s0)

diff --git a/policy/modules/apps/feedbackd.if b/policy/modules/apps/feedbackd.if
new file mode 100644
index 000000000..c15b5854d
--- /dev/null
+++ b/policy/modules/apps/feedbackd.if
@@ -0,0 +1,66 @@
+## <summary>Run feedbackd from systemd</summary>
+
+########################################
+## <summary>
+##     Role access for feedbackd.
+## </summary>
+## <param name="role_prefix">
+##     <summary>
+##     The prefix of the user role (e.g., user
+##     is the prefix for user_r).
+##     </summary>
+## </param>
+## <param name="user_domain">
+##     <summary>
+##     User domain for the role.
+##     </summary>
+## </param>
+## <param name="role">
+##     <summary>
+##     Role allowed access
+##     </summary>
+## </param>
+#
+template(`feedbackd_role',`
+       gen_require(`
+               attribute_role feedbackd_roles;
+               type feedbackd_exec_t;
+       ')
+
+       type $1_feedbackd_t;
+
+
+       roleattribute $3 feedbackd_roles;
+       role $3 types { $1_feedbackd_t };
+
+       allow $1_feedbackd_t self:netlink_kobject_uevent_socket { create 
getattr setopt bind };
+       allow $1_feedbackd_t self:process signal;
+       allow $1_feedbackd_t self:unix_dgram_socket { create write };
+
+       kernel_read_system_state($1_feedbackd_t)
+
+       dev_read_sysfs($1_feedbackd_t)
+
+       files_search_home($1_feedbackd_t)
+       files_search_var_lib($1_feedbackd_t)
+       files_read_usr_files($1_feedbackd_t)
+       files_map_usr_files($1_feedbackd_t)
+
+       files_read_etc_symlinks($1_feedbackd_t)
+
+       miscfiles_read_localization($1_feedbackd_t)
+
+       application_domain($1_feedbackd_t, feedbackd_exec_t)
+       domtrans_pattern($2, feedbackd_exec_t, $1_feedbackd_t)
+
+       application_domain($1_feedbackd_t, feedbackd_exec_t)
+
+       dev_rw_input_dev($1_feedbackd_t)
+
+       systemd_user_app_status($1, $1_feedbackd_t)
+       systemd_user_daemon_domain($1, feedbackd_exec_t, $1_feedbackd_t)
+       optional_policy(`
+               udev_search_runtime($1_feedbackd_t)
+       ')
+')
+

diff --git a/policy/modules/apps/feedbackd.te b/policy/modules/apps/feedbackd.te
new file mode 100644
index 000000000..3ce103ee3
--- /dev/null
+++ b/policy/modules/apps/feedbackd.te
@@ -0,0 +1,12 @@
+policy_module(feedbackd)
+
+########################################
+#
+# Declarations
+#
+
+attribute_role feedbackd_roles;
+
+type feedbackd_exec_t;
+application_executable_file(feedbackd_exec_t)
+

diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te
index 4a4867f75..89042b952 100644
--- a/policy/modules/roles/staff.te
+++ b/policy/modules/roles/staff.te
@@ -110,6 +110,10 @@ ifndef(`distro_redhat',`
                evolution_role(staff, staff_t, staff_application_exec_domain, 
staff_r)
        ')
 
+       optional_policy(`
+               feedbackd_role(staff, staff_t, staff_r)
+       ')
+
        optional_policy(`
                games_role(staff, staff_t, staff_application_exec_domain, 
staff_r)
        ')

diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te
index fb3de81ec..4cab19ea7 100644
--- a/policy/modules/roles/sysadm.te
+++ b/policy/modules/roles/sysadm.te
@@ -1294,6 +1294,10 @@ ifndef(`distro_redhat',`
                evolution_role(sysadm, sysadm_t, 
sysadm_application_exec_domain, sysadm_r)
        ')
 
+       optional_policy(`
+               feedbackd_role(sysadm, sysadm_t, sysadm_r)
+       ')
+
        optional_policy(`
                games_role(sysadm, sysadm_t, sysadm_application_exec_domain, 
sysadm_r)
        ')

diff --git a/policy/modules/roles/unprivuser.te 
b/policy/modules/roles/unprivuser.te
index e5487f2b9..29acb8d29 100644
--- a/policy/modules/roles/unprivuser.te
+++ b/policy/modules/roles/unprivuser.te
@@ -70,6 +70,10 @@ ifndef(`distro_redhat',`
                evolution_role(user, user_t, user_application_exec_domain, 
user_r)
        ')
 
+       optional_policy(`
+               feedbackd_role(user, user_t, user_r)
+       ')
+
        optional_policy(`
                games_role(user, user_t, user_application_exec_domain, user_r)
        ')

Reply via email to