From 729909c07fae4201591e51895833112cb88485e1 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Sat, 27 May 2023 17:11:47 -0400 Subject: [PATCH] prereq-build: do not replace binaries with symlinks Some programs, like bash and patch, are checked by prereq stage and have a symlink installed, but then is later built from source. Now that the prereq-build checks are not successful just by finding the file alone, it is possible for a new symlink to overwrite the installed binary. If a normal file is found in staging_dir/host/bin, let the check look for the associated stampfile, and if found, skip creation of a symlink and exit successfully. Suggested-by: Kevin Darbyshire-Bryant Signed-off-by: Michael Pratt --- include/prereq.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/prereq.mk b/include/prereq.mk index c72878ebb0..c888268d85 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -110,6 +110,10 @@ define SetupHostCommand *" -> $$$$$$$$bin"*) \ [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ ;; \ + "-"*) \ + find "$(STAGING_DIR_HOST)/stamp" | grep $(strip $(1)) && \ + [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ + ;; \ esac; \ ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \ exit 1; \