summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Martin Stjernholm <mast@google.com> 2020-09-25 17:13:38 +0100
committer Martin Stjernholm <mast@google.com> 2020-09-25 17:17:50 +0100
commit2cfce9380e5b8a6874d74abd3074ef0676ffcf1c (patch)
tree9a21da931b31727ae74095c4426945ddd6ce1ba4
parent1fdef5f75a07a37c3dc68d0c716f7113a8ebc164 (diff)
Do not chmod the symlink target when a prebuilt binary is symlinked.
It may be in a source tree that isn't writable. Instead check that the target is executable. Test: m Test: chmod a-x system/sepolicy/tools/insertkeys.py && \ rm -rf out/host out/soong/host && \ m insertkeys.py Check that it fails with the expected error message. Fixes: 169375644 Change-Id: I402d029dba45783127586ad9749c90012afe891d
-rw-r--r--core/soong_cc_prebuilt.mk7
-rw-r--r--core/soong_rust_prebuilt.mk7
2 files changed, 10 insertions, 4 deletions
diff --git a/core/soong_cc_prebuilt.mk b/core/soong_cc_prebuilt.mk
index a0315a5429..f98253d806 100644
--- a/core/soong_cc_prebuilt.mk
+++ b/core/soong_cc_prebuilt.mk
@@ -149,11 +149,14 @@ endif
$(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE)
ifeq ($(LOCAL_IS_HOST_MODULE) $(if $(filter EXECUTABLES SHARED_LIBRARIES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),true,),true true)
$(copy-or-link-prebuilt-to-target)
+ ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
+ [ -x $@ ] || $(call echo-error,$@,Target of symlink is not executable)
+ endif
else
$(transform-prebuilt-to-target)
-endif
-ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
+ ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
$(hide) chmod +x $@
+ endif
endif
ifndef LOCAL_IS_HOST_MODULE
diff --git a/core/soong_rust_prebuilt.mk b/core/soong_rust_prebuilt.mk
index b54f300ff9..2f4c6e7622 100644
--- a/core/soong_rust_prebuilt.mk
+++ b/core/soong_rust_prebuilt.mk
@@ -59,11 +59,14 @@ endif
$(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE)
ifeq ($(LOCAL_IS_HOST_MODULE) $(if $(filter EXECUTABLES SHARED_LIBRARIES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),true,),true true)
$(copy-or-link-prebuilt-to-target)
+ ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
+ [ -x $@ ] || $(call echo-error,$@,Target of symlink is not executable)
+ endif
else
$(transform-prebuilt-to-target)
-endif
-ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
+ ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
$(hide) chmod +x $@
+ endif
endif
ifndef LOCAL_IS_HOST_MODULE