diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk index 82b17beab3..049e7ff5d2 100644 --- a/core/config_sanitizers.mk +++ b/core/config_sanitizers.mk @@ -65,6 +65,18 @@ ifneq ($(filter memtag_heap, $(my_global_sanitize)),) endif endif +# Disable global HWASan in excluded paths +ifneq ($(filter hwaddress, $(my_global_sanitize)),) + combined_exclude_paths := $(HWASAN_EXCLUDE_PATHS) \ + $(PRODUCT_HWASAN_EXCLUDE_PATHS) + + ifneq ($(strip $(foreach dir,$(subst $(comma),$(space),$(combined_exclude_paths)),\ + $(filter $(dir)%,$(LOCAL_PATH)))),) + my_global_sanitize := $(filter-out hwaddress,$(my_global_sanitize)) + my_global_sanitize_diag := $(filter-out hwaddress,$(my_global_sanitize_diag)) + endif +endif + ifneq ($(my_global_sanitize),) my_sanitize := $(my_global_sanitize) $(my_sanitize) endif diff --git a/core/product.mk b/core/product.mk index 54e3695d09..c268f4d6d7 100644 --- a/core/product.mk +++ b/core/product.mk @@ -261,6 +261,9 @@ _product_list_vars += PRODUCT_CFI_EXCLUDE_PATHS # Whether any paths should have HWASan enabled for components _product_list_vars += PRODUCT_HWASAN_INCLUDE_PATHS +# Whether any paths are excluded from sanitization when SANITIZE_TARGET=hwaddress +_product_list_vars += PRODUCT_HWASAN_EXCLUDE_PATHS + # Whether any paths should have Memtag_heap enabled for components _product_list_vars += PRODUCT_MEMTAG_HEAP_ASYNC_INCLUDE_PATHS _product_list_vars += PRODUCT_MEMTAG_HEAP_ASYNC_DEFAULT_INCLUDE_PATHS diff --git a/core/soong_config.mk b/core/soong_config.mk index a4dbffad8b..73f4f827f6 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -115,6 +115,7 @@ $(call add_json_list, CFIExcludePaths, $(CFI_EXCLUDE_PATHS) $( $(call add_json_list, CFIIncludePaths, $(CFI_INCLUDE_PATHS) $(PRODUCT_CFI_INCLUDE_PATHS)) $(call add_json_list, IntegerOverflowExcludePaths, $(INTEGER_OVERFLOW_EXCLUDE_PATHS) $(PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS)) $(call add_json_list, HWASanIncludePaths, $(HWASAN_INCLUDE_PATHS) $(PRODUCT_HWASAN_INCLUDE_PATHS)) +$(call add_json_list, HWASanExcludePaths, $(HWASAN_EXCLUDE_PATHS) $(PRODUCT_HWASAN_EXCLUDE_PATHS)) $(call add_json_list, MemtagHeapExcludePaths, $(MEMTAG_HEAP_EXCLUDE_PATHS) $(PRODUCT_MEMTAG_HEAP_EXCLUDE_PATHS)) $(call add_json_list, MemtagHeapAsyncIncludePaths, $(MEMTAG_HEAP_ASYNC_INCLUDE_PATHS) $(PRODUCT_MEMTAG_HEAP_ASYNC_INCLUDE_PATHS) $(if $(filter true,$(PRODUCT_MEMTAG_HEAP_SKIP_DEFAULT_PATHS)),,$(PRODUCT_MEMTAG_HEAP_ASYNC_DEFAULT_INCLUDE_PATHS)))