diff --git a/private/file_contexts b/private/file_contexts index e61ef2984b1aba42fefa432ff100d4125a554e45..66daf034cfeaa2c14bf665f8024949e1ceea3e4b 100644 --- a/private/file_contexts +++ b/private/file_contexts @@ -191,6 +191,7 @@ /system/bin/dumpstate u:object_r:dumpstate_exec:s0 /system/bin/incident u:object_r:incident_exec:s0 /system/bin/incidentd u:object_r:incidentd_exec:s0 +/system/bin/netutils-wrapper-1\.0 u:object_r:netutils_wrapper_exec:s0 /system/bin/vold u:object_r:vold_exec:s0 /system/bin/netd u:object_r:netd_exec:s0 /system/bin/wificond u:object_r:wificond_exec:s0 diff --git a/private/netutils_wrapper.te b/private/netutils_wrapper.te new file mode 100644 index 0000000000000000000000000000000000000000..f7fe32ae46bd6212ccbeb559e9c5812a9a8369f0 --- /dev/null +++ b/private/netutils_wrapper.te @@ -0,0 +1,28 @@ +typeattribute netutils_wrapper coredomain; + +r_dir_file(netutils_wrapper, system_file); + +# For netutils (ip, iptables, tc) +allow netutils_wrapper self:capability net_raw; + +allow netutils_wrapper system_file:file { execute execute_no_trans }; +allow netutils_wrapper proc_net:file { open read getattr }; +allow netutils_wrapper self:rawip_socket create_socket_perms; +allow netutils_wrapper self:udp_socket create_socket_perms; +allow netutils_wrapper self:capability net_admin; +# ip utils need everything but ioctl +allow netutils_wrapper self:netlink_route_socket ~ioctl; +allow netutils_wrapper self:netlink_xfrm_socket ~ioctl; + +# For netutils (ndc) to be able to talk to netd +allow netutils_wrapper netd_socket:sock_file { open getattr read write append }; +allow netutils_wrapper netd:unix_stream_socket { read getattr connectto }; + +# For /data/misc/net access to ndc and ip +r_dir_file(netutils_wrapper, net_data_file) + +domain_auto_trans({ + domain + -coredomain + -appdomain +}, netutils_wrapper_exec, netutils_wrapper) diff --git a/public/domain.te b/public/domain.te index 24e21e6d99d0e9c48e68dac644d695f1c84b10bc..dfccfdd9cbb99a88254496ec15715afbe23cefed 100644 --- a/public/domain.te +++ b/public/domain.te @@ -691,6 +691,7 @@ full_treble_only(` exec_type -vendor_file_type -crash_dump_exec + -netutils_wrapper_exec }:file { entrypoint execute execute_no_trans }; ') ') diff --git a/public/netutils_wrapper.te b/public/netutils_wrapper.te new file mode 100644 index 0000000000000000000000000000000000000000..c844762c8cae0c244d0ad3f828e6ce34d3b3475f --- /dev/null +++ b/public/netutils_wrapper.te @@ -0,0 +1,4 @@ +type netutils_wrapper, domain; +type netutils_wrapper_exec, exec_type, file_type; + +neverallow domain netutils_wrapper_exec:file execute_no_trans;