diff --git a/euiccpixel_app/euiccpixel_app_st54.mk b/euiccpixel_app/euiccpixel_app_st54.mk new file mode 100644 index 0000000..e96d06c --- /dev/null +++ b/euiccpixel_app/euiccpixel_app_st54.mk @@ -0,0 +1,3 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/euiccpixel_app/sepolicy/common +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/euiccpixel_app/sepolicy/st54 +PRODUCT_PACKAGES += EuiccSupportPixel-P23 diff --git a/euiccpixel_app/sepolicy/common/certs/EuiccSupportPixel.x509.pem b/euiccpixel_app/sepolicy/common/certs/EuiccSupportPixel.x509.pem new file mode 100644 index 0000000..be303df --- /dev/null +++ b/euiccpixel_app/sepolicy/common/certs/EuiccSupportPixel.x509.pem @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +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 +0JD1T1qdCm3aUSEmFgEA4rOL/0K3 +-----END CERTIFICATE----- diff --git a/euiccpixel_app/sepolicy/common/euiccpixel_app.te b/euiccpixel_app/sepolicy/common/euiccpixel_app.te new file mode 100644 index 0000000..8093b49 --- /dev/null +++ b/euiccpixel_app/sepolicy/common/euiccpixel_app.te @@ -0,0 +1,27 @@ +# Euiccpixel_app +type euiccpixel_app, domain; +app_domain(euiccpixel_app) + +allow euiccpixel_app activity_service:service_manager find; +allow euiccpixel_app netstats_service:service_manager find; +allow euiccpixel_app content_capture_service:service_manager find; +allow euiccpixel_app activity_task_service:service_manager find; +allow euiccpixel_app gpu_service:service_manager find; +allow euiccpixel_app voiceinteraction_service:service_manager find; +allow euiccpixel_app autofill_service:service_manager find; +allow euiccpixel_app sensitive_content_protection_service:service_manager find; +allow euiccpixel_app hint_service:service_manager find; +allow euiccpixel_app audio_service:service_manager find; +allow euiccpixel_app batterystats_service:service_manager find; +allow euiccpixel_app batteryproperties_service:service_manager find; +allow euiccpixel_app permission_checker_service:service_manager find; +allow euiccpixel_app radio_service:service_manager find; +allow euiccpixel_app nfc_service:service_manager find; + +set_prop(euiccpixel_app, vendor_secure_element_prop) +set_prop(euiccpixel_app, vendor_modem_prop) +get_prop(euiccpixel_app, dck_prop) + +# b/265286368 framework UI rendering properties and file access +dontaudit euiccpixel_app default_prop:file { read }; +dontaudit euiccpixel_app sysfs_gpu_uevent:file { read open getattr }; diff --git a/euiccpixel_app/sepolicy/common/file.te b/euiccpixel_app/sepolicy/common/file.te new file mode 100644 index 0000000..e76ee79 --- /dev/null +++ b/euiccpixel_app/sepolicy/common/file.te @@ -0,0 +1,2 @@ +# type for gpu uevent +type sysfs_gpu_uevent, sysfs_type, fs_type; diff --git a/euiccpixel_app/sepolicy/common/genfs_contexts b/euiccpixel_app/sepolicy/common/genfs_contexts new file mode 100644 index 0000000..fc146df --- /dev/null +++ b/euiccpixel_app/sepolicy/common/genfs_contexts @@ -0,0 +1 @@ +genfscon sysfs /devices/platform/34f00000.gpu0/uevent u:object_r:sysfs_gpu_uevent:s0 diff --git a/euiccpixel_app/sepolicy/common/keys.conf b/euiccpixel_app/sepolicy/common/keys.conf new file mode 100644 index 0000000..7071a2a --- /dev/null +++ b/euiccpixel_app/sepolicy/common/keys.conf @@ -0,0 +1,2 @@ +[@EUICCSUPPORTPIXEL] +ALL : device/google/gs-common/euiccpixel_app/sepolicy/common/certs/EuiccSupportPixel.x509.pem diff --git a/euiccpixel_app/sepolicy/common/mac_permissions.xml b/euiccpixel_app/sepolicy/common/mac_permissions.xml new file mode 100644 index 0000000..0eab982 --- /dev/null +++ b/euiccpixel_app/sepolicy/common/mac_permissions.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/euiccpixel_app/sepolicy/common/seapp_contexts b/euiccpixel_app/sepolicy/common/seapp_contexts new file mode 100644 index 0000000..9501a3a --- /dev/null +++ b/euiccpixel_app/sepolicy/common/seapp_contexts @@ -0,0 +1,2 @@ +# Domain for EuiccSupportPixel +user=_app isPrivApp=true seinfo=EuiccSupportPixel name=com.google.euiccpixel domain=euiccpixel_app type=app_data_file levelFrom=all diff --git a/euiccpixel_app/sepolicy/st54/euiccpixel_app.te b/euiccpixel_app/sepolicy/st54/euiccpixel_app.te new file mode 100644 index 0000000..3d81a57 --- /dev/null +++ b/euiccpixel_app/sepolicy/st54/euiccpixel_app.te @@ -0,0 +1,8 @@ +# euiccpixel requires st54spi for firmware upgrade +userdebug_or_eng(` + net_domain(euiccpixel_app) + + # Access to directly upgrade firmware on st54spi_device used for engineering devices + typeattribute st54spi_device mlstrustedobject; + allow euiccpixel_app st54spi_device:chr_file rw_file_perms; +') diff --git a/gril/aidl/2.0/gril_aidl.mk b/gril/aidl/2.0/gril_aidl.mk index b7d5133..d4fa9e9 100644 --- a/gril/aidl/2.0/gril_aidl.mk +++ b/gril/aidl/2.0/gril_aidl.mk @@ -1,3 +1,4 @@ PRODUCT_PACKAGES += vendor.google.radioext@1.0-service DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/gril/aidl/2.0/compatibility_matrix.xml BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/aidl/2.0/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/common/sepolicy diff --git a/gril/aidl/2.0/sepolicy/grilservice_app.te b/gril/aidl/2.0/sepolicy/grilservice_app.te index 8f49afa..812c8a2 100644 --- a/gril/aidl/2.0/sepolicy/grilservice_app.te +++ b/gril/aidl/2.0/sepolicy/grilservice_app.te @@ -1,4 +1,4 @@ -# allow grilservice_app to find hal_aidl_radio_ext_service -allow grilservice_app hal_aidl_radio_ext_service:service_manager find; +# allow grilservice_app to find hal_radio_ext_service +allow grilservice_app hal_radio_ext_service:service_manager find; binder_call(grilservice_app, hal_aidl_radio_ext) binder_call(grilservice_app, twoshay) diff --git a/gril/aidl/2.0/sepolicy/hal_aidl_radio_ext.te b/gril/aidl/2.0/sepolicy/hal_aidl_radio_ext.te index ad6c86b..68dd397 100644 --- a/gril/aidl/2.0/sepolicy/hal_aidl_radio_ext.te +++ b/gril/aidl/2.0/sepolicy/hal_aidl_radio_ext.te @@ -12,7 +12,7 @@ binder_call(hal_aidl_radio_ext, servicemanager) binder_call(hal_aidl_radio_ext, grilservice_app) binder_call(hal_aidl_radio_ext, hal_bluetooth_btlinux) -add_service(hal_aidl_radio_ext, hal_aidl_radio_ext_service) +add_service(hal_aidl_radio_ext, hal_radio_ext_service) # RW /dev/oem_ipc0 allow hal_aidl_radio_ext radio_device:chr_file rw_file_perms; diff --git a/gril/aidl/2.0/sepolicy/service.te b/gril/aidl/2.0/sepolicy/service.te deleted file mode 100644 index 24aa71e..0000000 --- a/gril/aidl/2.0/sepolicy/service.te +++ /dev/null @@ -1,2 +0,0 @@ -# Radio Ext AIDL service -type hal_aidl_radio_ext_service, hal_service_type, protected_service, service_manager_type; diff --git a/modem/radio_ext/sepolicy/service.te b/gril/common/sepolicy/service.te similarity index 68% rename from modem/radio_ext/sepolicy/service.te rename to gril/common/sepolicy/service.te index 7288ef1..ee6fb77 100644 --- a/modem/radio_ext/sepolicy/service.te +++ b/gril/common/sepolicy/service.te @@ -1,2 +1,3 @@ # Radio Ext AIDL service +# Shared definition so a single type is referenced type hal_radio_ext_service, hal_service_type, protected_service, service_manager_type; diff --git a/gril/aidl/2.0/sepolicy/service_contexts b/gril/common/sepolicy/service_contexts similarity index 64% rename from gril/aidl/2.0/sepolicy/service_contexts rename to gril/common/sepolicy/service_contexts index 7b96182..7e50c2e 100644 --- a/gril/aidl/2.0/sepolicy/service_contexts +++ b/gril/common/sepolicy/service_contexts @@ -1 +1 @@ -vendor.google.radio_ext.IRadioExt/default u:object_r:hal_aidl_radio_ext_service:s0 +vendor.google.radio_ext.IRadioExt/default u:object_r:hal_radio_ext_service:s0 diff --git a/gril/hidl/1.7/gril_hidl.mk b/gril/hidl/1.7/gril_hidl.mk index fcd5ef8..0008a5d 100644 --- a/gril/hidl/1.7/gril_hidl.mk +++ b/gril/hidl/1.7/gril_hidl.mk @@ -1,3 +1,4 @@ PRODUCT_PACKAGES += vendor.google.radioext@1.0-service DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/gril/hidl/1.7/compatibility_matrix.xml BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/hidl/1.7/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/common/sepolicy diff --git a/gril/hidl/1.7/sepolicy/grilservice_app.te b/gril/hidl/1.7/sepolicy/grilservice_app.te index 43da795..3a170b8 100644 --- a/gril/hidl/1.7/sepolicy/grilservice_app.te +++ b/gril/hidl/1.7/sepolicy/grilservice_app.te @@ -1,2 +1,4 @@ +# allow grilservice_app to find hal_radio_ext_service +allow grilservice_app hal_radio_ext_service:service_manager find; # allow grilservice_app to binder call hal_radioext_default binder_call(grilservice_app, hal_radioext_default) diff --git a/gsa/Android.bp b/gsa/Android.bp new file mode 100644 index 0000000..59e0369 --- /dev/null +++ b/gsa/Android.bp @@ -0,0 +1,20 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_gsa", + srcs: ["dump_gsa.cpp"], + init_rc: ["init.gsa.rc"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + "-pedantic", + ], + shared_libs: [ + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/gsa/dump_gsa.cpp b/gsa/dump_gsa.cpp new file mode 100644 index 0000000..6308036 --- /dev/null +++ b/gsa/dump_gsa.cpp @@ -0,0 +1,31 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include + +#define DIM(arr) (sizeof(arr) / sizeof(arr[0])) + +const char* paths[][2] = {{"GSA MAIN LOG", "/dev/gsa-log1"}, + {"GSA INTERMEDIATE LOG", "/dev/gsa-bl1-log2"}}; + +int main() { + for (size_t i = 0; i < DIM(paths); i++) { + if (!access(paths[i][1], R_OK)) { + dumpFileContent(paths[i][0], paths[i][1]); + } + } + return 0; +} diff --git a/gsa/gsa.mk b/gsa/gsa.mk new file mode 100644 index 0000000..1938c66 --- /dev/null +++ b/gsa/gsa.mk @@ -0,0 +1,3 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gsa/sepolicy/gsa + +PRODUCT_PACKAGES += dump_gsa diff --git a/gsa/init.gsa.rc b/gsa/init.gsa.rc new file mode 100644 index 0000000..357144e --- /dev/null +++ b/gsa/init.gsa.rc @@ -0,0 +1,6 @@ +on init + # Change GSA log group for dumpstate + chmod 660 /dev/gsa-log1 + chmod 660 /dev/gsa-bl1-log2 + chown root system /dev/gsa-log1 + chown root system /dev/gsa-bl1-log2 diff --git a/gsa/sepolicy/gsa/dump_gsa.te b/gsa/sepolicy/gsa/dump_gsa.te new file mode 100644 index 0000000..dcc3ef6 --- /dev/null +++ b/gsa/sepolicy/gsa/dump_gsa.te @@ -0,0 +1,6 @@ +# GSA +pixel_bugreport(dump_gsa) + +userdebug_or_eng(` + allow dump_gsa gsa_log_device:chr_file r_file_perms; +') diff --git a/gsa/sepolicy/gsa/file.te b/gsa/sepolicy/gsa/file.te new file mode 100644 index 0000000..46a1732 --- /dev/null +++ b/gsa/sepolicy/gsa/file.te @@ -0,0 +1,2 @@ +# GSA +type gsa_log_device, dev_type; diff --git a/gsa/sepolicy/gsa/file_contexts b/gsa/sepolicy/gsa/file_contexts new file mode 100644 index 0000000..ad3a72d --- /dev/null +++ b/gsa/sepolicy/gsa/file_contexts @@ -0,0 +1,4 @@ +# GSA +/dev/gsa-log1 u:object_r:gsa_log_device:s0 +/dev/gsa-bl1-log2 u:object_r:gsa_log_device:s0 +/vendor/bin/dump/dump_gsa u:object_r:dump_gsa_exec:s0 diff --git a/modem/radio_ext/radio_ext.mk b/modem/radio_ext/radio_ext.mk index 6750fdd..1df3bcc 100644 --- a/modem/radio_ext/radio_ext.mk +++ b/modem/radio_ext/radio_ext.mk @@ -3,3 +3,4 @@ PRODUCT_PACKAGES += vendor.google.radio_ext-service DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/modem/radio_ext/compatibility_matrix.xml BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/modem/radio_ext/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/common/sepolicy