mm-video-v4l2: Add conditions to enable integer overflow sanitization
Add condition to enable or disable integer overflow sanitization based
on TARGET_ENABLE_VIDC_INTSAN condition flag.
Change-Id: Ie370e815955c1f370b9cca01d2881f229932afde
diff --git a/conf_files/kona/kona.mk b/conf_files/kona/kona.mk
index 14c7446..9001279 100644
--- a/conf_files/kona/kona.mk
+++ b/conf_files/kona/kona.mk
@@ -10,7 +10,11 @@
$(CONFIG_PATH)/mediacodec-seccomp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \
$(CONFIG_PATH)/system_properties.xml:$(TARGET_COPY_OUT_VENDOR)/etc/system_properties.xml
+# Enable CLANG/LLVM integer-overflow sanitization
+TARGET_ENABLE_VIDC_INTSAN := false
+
# Enable DIAG mode for CLANG/LLVM integer-overflow sanitization
+# TARGET_ENABLE_VIDC_INTSAN must be set to 'true' before enabling DIAG mode
# NOTE: DIAG mode should be used only for debug builds
TARGET_ENABLE_VIDC_INTSAN_DIAG := false
diff --git a/libc2dcolorconvert/Android.mk b/libc2dcolorconvert/Android.mk
index 675ebc7..1e7b1a5 100644
--- a/libc2dcolorconvert/Android.mk
+++ b/libc2dcolorconvert/Android.mk
@@ -2,11 +2,13 @@
include $(CLEAR_VARS)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SRC_FILES := \
C2DColorConverter.cpp
diff --git a/libplatformconfig/Android.mk b/libplatformconfig/Android.mk
index b59682f..bde1add 100644
--- a/libplatformconfig/Android.mk
+++ b/libplatformconfig/Android.mk
@@ -19,11 +19,13 @@
LOCAL_CFLAGS := $(COMMON_CFLAGS) $(libplatformconfig-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SHARED_LIBRARIES += \
libexpat \
diff --git a/libstagefrighthw/Android.mk b/libstagefrighthw/Android.mk
index cce48e8..5c19539 100644
--- a/libstagefrighthw/Android.mk
+++ b/libstagefrighthw/Android.mk
@@ -30,11 +30,13 @@
LOCAL_CFLAGS := $(PV_CFLAGS_MINUS_VISIBILITY)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
ifeq ($(PLATFORM_SDK_VERSION), 18) #JB_MR2
LOCAL_CFLAGS += -DANDROID_JELLYBEAN_MR2=1
diff --git a/mm-core/Android.mk b/mm-core/Android.mk
index 2be2844..f20c0eb 100644
--- a/mm-core/Android.mk
+++ b/mm-core/Android.mk
@@ -72,10 +72,13 @@
LOCAL_HEADER_LIBRARIES := \
libutils_headers
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
-ifeq ($(TARGET_MSM_VIDC_INTSAN_DIAG),true)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
+$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE := libOmxCore
@@ -124,10 +127,13 @@
endif
LOCAL_CFLAGS := $(OMXCORE_CFLAGS)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
-ifeq ($(TARGET_MSM_VIDC_INTSAN_DIAG),true)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
+$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SRC_FILES := src/common/omx_core_cmp.cpp
LOCAL_SRC_FILES += src/common/qc_omx_core.c
diff --git a/mm-video-v4l2/vidc/common/Android.mk b/mm-video-v4l2/vidc/common/Android.mk
index 9896cb1..9625fc0 100644
--- a/mm-video-v4l2/vidc/common/Android.mk
+++ b/mm-video-v4l2/vidc/common/Android.mk
@@ -41,11 +41,13 @@
LOCAL_C_INCLUDES := $(libmm-vidc-inc)
# The type of overflow check must be specified for static libraries
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := signed-integer-overflow unsigned-integer-overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := signed-integer-overflow unsigned-integer-overflow
endif
+endif
LOCAL_PRELINK_MODULE := false
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
diff --git a/mm-video-v4l2/vidc/vdec/Android.mk b/mm-video-v4l2/vidc/vdec/Android.mk
index cab611b..08d3490 100644
--- a/mm-video-v4l2/vidc/vdec/Android.mk
+++ b/mm-video-v4l2/vidc/vdec/Android.mk
@@ -103,11 +103,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-vdec-def) -Werror
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
@@ -148,11 +150,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-vdec-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
diff --git a/mm-video-v4l2/vidc/venc/Android.mk b/mm-video-v4l2/vidc/venc/Android.mk
index 661a576..adf9aed 100644
--- a/mm-video-v4l2/vidc/venc/Android.mk
+++ b/mm-video-v4l2/vidc/venc/Android.mk
@@ -83,11 +83,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-venc-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
@@ -131,11 +133,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-venc-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \