block: protect path_has_protocol from filenames with colons
path_has_protocol will erroneously return "true" if the colon is part of a filename. These names are common with stable device names produced by udev. We cannot fully protect against this in case the filename does not have a path component (e.g. if the current directory is /dev/disk/by-path), but in the common case there will be a slash before and path_has_protocol can easily detect that and return false. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
f53f4da9c6
commit
947995c09e
7
block.c
7
block.c
@ -198,14 +198,19 @@ static void bdrv_io_limits_intercept(BlockDriverState *bs,
|
||||
/* check if the path starts with "<protocol>:" */
|
||||
static int path_has_protocol(const char *path)
|
||||
{
|
||||
const char *p;
|
||||
|
||||
#ifdef _WIN32
|
||||
if (is_windows_drive(path) ||
|
||||
is_windows_drive_prefix(path)) {
|
||||
return 0;
|
||||
}
|
||||
p = path + strcspn(path, ":/\\");
|
||||
#else
|
||||
p = path + strcspn(path, ":/");
|
||||
#endif
|
||||
|
||||
return strchr(path, ':') != NULL;
|
||||
return *p == ':';
|
||||
}
|
||||
|
||||
int path_is_absolute(const char *path)
|
||||
|
Loading…
Reference in New Issue
Block a user