| # asan_extract |
| # |
| # This command set moves the artifact corresponding to the current slot |
| # from /data/ota to /data/dalvik-cache. |
| |
| with_asan(` |
| type asan_extract, domain, coredomain; |
| type asan_extract_exec, exec_type, file_type; |
| |
| # Allow asan_extract to execute itself using #!/system/bin/sh |
| allow asan_extract shell_exec:file rx_file_perms; |
| |
| # We execute log, rm, gzip and tar. |
| allow asan_extract toolbox_exec:file rx_file_perms; |
| allow asan_extract system_file:file execute_no_trans; |
| |
| # asan_extract deletes old /data/lib. |
| allow asan_extract system_file:dir { open read remove_name rmdir write }; |
| allow asan_extract system_file:file unlink; |
| |
| # asan_extract untars ASAN libraries into /data. |
| allow asan_extract system_data_file:dir create_dir_perms ; |
| allow asan_extract system_data_file:{ file lnk_file } create_file_perms ; |
| |
| # Relabel the libraries with restorecon. |
| allow asan_extract file_contexts_file:file r_file_perms; |
| allow asan_extract system_data_file:{ dir file } relabelfrom; |
| allow asan_extract system_file:dir { relabelto setattr }; |
| allow asan_extract system_file:file relabelto; |
| |
| # Restorecon will actually already try to run with sanitized libraries (libpackagelistparser). |
| allow asan_extract system_data_file:file execute; |
| |
| # We use asan.restore_reboot to signal a reboot is required. |
| set_prop(asan_extract, asan_reboot_prop) |
| ') |