From: Stefan Hajnoczi Date: Thu, 2 Dec 2010 16:54:13 +0000 (+0000) Subject: block: Fix the use of protocols in backing files X-Git-Tag: v0.14.0-rc0~347 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df2dbb4a508ebea7bcacff3f07caecbae969d528;p=thirdparty%2Fqemu.git block: Fix the use of protocols in backing files Backing filenames may contain a protocol. The code currently doesn't consider this case and produces filenames that embed ":". Don't combine filenames if the backing filename contains a protocol. Based on an earlier patch by Anthony Liguori . Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- diff --git a/block.c b/block.c index 65fce8031a9..b4aaf416401 100644 --- a/block.c +++ b/block.c @@ -611,10 +611,18 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags, BlockDriver *back_drv = NULL; bs->backing_hd = bdrv_new(""); - path_combine(backing_filename, sizeof(backing_filename), - filename, bs->backing_file); - if (bs->backing_format[0] != '\0') + + if (path_has_protocol(bs->backing_file)) { + pstrcpy(backing_filename, sizeof(backing_filename), + bs->backing_file); + } else { + path_combine(backing_filename, sizeof(backing_filename), + filename, bs->backing_file); + } + + if (bs->backing_format[0] != '\0') { back_drv = bdrv_find_format(bs->backing_format); + } /* backing files always opened read-only */ back_flags =