qemu/util
Akihiko Odaki 401766e043 cutils: Fix get_relocated_path on Windows
get_relocated_path() did not have error handling for PathCchSkipRoot()
because a path given to get_relocated_path() was expected to be a valid
path containing a drive letter or UNC server/share path elements on
Windows, but sometimes it turned out otherwise.

The paths passed to get_relocated_path() are defined by macros generated
by Meson. Meson in turn uses a prefix given by the configure script to
generate them. For Windows, the script passes /qemu as a prefix to
Meson by default.

As documented in docs/about/build-platforms.rst, typically MSYS2 is used
for the build system, but it is also possible to use Linux as well. When
MSYS2 is used, its Bash variant recognizes /qemu as a MSYS2 path, and
converts it to a Windows path, adding the MSYS2 prefix including a drive
letter or UNC server/share path elements. Such a conversion does not
happen on a shell on Linux however, and /qemu will be passed as is in
the case.

Implement a proper error handling of PathCchSkipRoot() in
get_relocated_path() so that it can handle a path without a drive letter
or UNC server/share path elements.

Reported-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20231005064726.6945-1-akihiko.odaki@daynix.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2023-10-20 14:46:06 +02:00
..
aio-posix.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
aio-posix.h aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
aio-wait.c aio-wait: avoid AioContext lock in aio_wait_bh_oneshot() 2023-05-10 14:15:13 +02:00
aio-win32.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
aiocb.c
async.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
atomic64.c
base64.c
bitmap.c
bitops.c
block-helpers.c
block-helpers.h
buffer.c
bufferiszero.c util/bufferiszero: Use i386 host/cpuinfo.h 2023-05-23 16:51:13 -07:00
cacheflush.c util/cacheflush: Avoid possible redundant dcache flush on Darwin 2023-06-13 11:28:58 +02:00
compatfd.c
coroutine-sigaltstack.c osdep: set _FORTIFY_SOURCE=2 when optimization is enabled 2023-10-04 09:52:06 -04:00
coroutine-ucontext.c osdep: set _FORTIFY_SOURCE=2 when optimization is enabled 2023-10-04 09:52:06 -04:00
coroutine-windows.c build: move coroutine backend selection to meson 2023-05-18 08:53:52 +02:00
cpuinfo-aarch64.c *: Delete checks for old host definitions 2023-09-19 13:20:54 -04:00
cpuinfo-i386.c host/include/i386: Implement clmul.h 2023-09-15 13:57:00 +00:00
cpuinfo-ppc.c util: spelling fixes 2023-08-31 19:47:43 +02:00
crc32c.c igb: Implement Rx SCTP CSO 2023-05-23 15:20:15 +08:00
crc-ccitt.c
cutils.c cutils: Fix get_relocated_path on Windows 2023-10-20 14:46:06 +02:00
dbus.c
drm.c
envlist.c
error-report.c
error.c
event_notifier-posix.c
event_notifier-win32.c
fdmon-epoll.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
fdmon-io_uring.c aio-posix: zero out io_uring sqe user_data 2023-08-30 07:39:59 -04:00
fdmon-poll.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
fifo8.c
filemonitor-inotify.c
filemonitor-stub.c
getauxval.c
guest-random.c util/guest-random: Clean up global variable shadowing 2023-10-06 13:27:48 +02:00
hbitmap.c
hexdump.c
host-utils.c
id.c
int128.c
interval-tree.c util/interval-tree: Check root for null in interval_tree_iter_first 2023-08-09 09:26:32 -07:00
iov.c util/iov: Avoid dynamic stack allocation 2023-09-07 20:32:11 -05:00
iova-tree.c
keyval.c
lockcnt.c
log.c util/log: re-allow switching away from stderr log file 2023-10-07 19:02:33 +02:00
main-loop.c util: spelling fixes 2023-08-31 19:47:43 +02:00
memalign.c
memfd.c
meson.build util/async-teardown.c: move to softmmu/, only build it when system build is requested 2023-09-01 23:46:20 +02:00
mmap-alloc.c
module.c
notify.c
nvdimm-utils.c
osdep.c
oslib-posix.c util: Delete checks for old host definitions 2023-09-15 05:26:50 -07:00
oslib-win32.c win32: avoid discarding the exception handler 2023-10-03 15:05:20 +04:00
path.c
qdist.c util: spelling fixes 2023-08-31 19:47:43 +02:00
qemu-co-shared-resource.c
qemu-co-timeout.c
qemu-config.c
qemu-coroutine-io.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
qemu-coroutine-lock.c atomics: eliminate mb_read/mb_set 2023-06-06 09:42:14 +02:00
qemu-coroutine-sleep.c
qemu-coroutine.c meson: do not use set10 2023-10-17 15:20:53 +02:00
qemu-option.c
qemu-print.c
qemu-progress.c
qemu-sockets.c util: spelling fixes 2023-08-31 19:47:43 +02:00
qemu-thread-common.h
qemu-thread-posix.c
qemu-thread-win32.c
qemu-timer-common.c
qemu-timer.c
qht.c
qsp.c accel/tcg: include cs_base in our hash calculations 2023-06-01 11:05:05 -04:00
qtree.c
range.c
rcu.c util: spelling fixes 2023-08-31 19:47:43 +02:00
readline.c
selfmap.c util/selfmap: Use dev_t and ino_t in MapInfo 2023-09-01 13:34:03 -07:00
stats64.c
sys_membarrier.c
systemd.c
thread-context.c
thread-pool.c block: remove AIOCBInfo->get_aio_context() 2023-09-20 17:46:01 +02:00
throttle.c throttle: use THROTTLE_MAX/ARRAY_SIZE for hard code 2023-08-29 10:49:24 +02:00
timed-average.c
trace-events console/win32: allocate shareable display surface 2023-06-27 17:08:56 +02:00
trace.h
transactions.c
unicode.c
uri.c
userfaultfd.c
uuid.c util/uuid: add a hash function 2023-10-04 18:15:06 -04:00
vfio-helpers.c util/vfio-helpers: Use g_file_read_link() 2023-05-24 09:21:22 +02:00
vhost-user-server.c util/vhost-user-server: Clean up local variable shadowing 2023-09-29 10:07:16 +02:00
yank.c