From f9beb7fe4a1743a225f147d3febd34b6f87bd061 Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Thu, 8 Aug 2019 14:29:09 -0400 Subject: [PATCH] configure: disallow spaces and colons in source path and build path The configure script breaks when the qemu source directory is in a path containing white spaces, in particular the list of targets is not correctly generated when calling "./configure --help" because of how the default_target_list variable is built. In addition to that, *building* qemu from a directory with spaces breaks some assumptions in the Makefiles, even if the original source path does not contain spaces like in the case of an out-of-tree build, or when symlinks are involved. To avoid these issues, refuse to run the configure script and the Makefile if there are spaces or colons in the source path or the build path, taking as inspiration what the kbuild system in linux does. Buglink: https://bugs.launchpad.net/qemu/+bug/1817345 Backports commit 4ace32e22713ffd79deb221ae0134652c7c15428 from qemu --- qemu/Makefile | 4 ++++ qemu/configure | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/qemu/Makefile b/qemu/Makefile index c286e520..5dcaa9bc 100644 --- a/qemu/Makefile +++ b/qemu/Makefile @@ -1,5 +1,9 @@ # Makefile for QEMU - modified for Unicorn engine. +ifneq ($(words $(subst :, ,$(CURDIR))), 1) + $(error main directory cannot contain spaces nor colons) +endif + # Always point to the root of the build tree (needs GNU make). BUILD_DIR=$(CURDIR) diff --git a/qemu/configure b/qemu/configure index 0e8b74df..ebf6c1cf 100755 --- a/qemu/configure +++ b/qemu/configure @@ -133,8 +133,15 @@ path_of() { return 1 } +# make source path absolute +source_path=$(cd "$(dirname -- "$0")"; pwd) + +if printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]"; +then + error_exit "main directory cannot contain spaces nor colons" +fi + # default parameters -source_path=$(dirname "$0") cpu="" static="no" cross_prefix=""