diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/launch.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/launch.c b/src/launch.c index 986c459a..e47eda9a 100644 --- a/src/launch.c +++ b/src/launch.c @@ -297,6 +297,7 @@ guestfs__add_drive_opts (guestfs_h *g, const char *filename, char *name; char *abs_path = NULL; int use_cache_off; + int check_duplicate; if (check_path(g, filename) == -1) return -1; @@ -336,10 +337,16 @@ guestfs__add_drive_opts (guestfs_h *g, const char *filename, } } + /* Make the path canonical, so we can check if the user is trying to + * add the same path twice. Allow /dev/null to be added multiple + * times, in accordance with traditional usage. + */ abs_path = realpath (filename, NULL); + check_duplicate = STRNEQ (abs_path, "/dev/null"); + struct drive **i = &(g->drives); while (*i != NULL) { - if (STREQ((*i)->path, abs_path)) { + if (check_duplicate && STREQ((*i)->path, abs_path)) { error (g, _("drive %s can't be added twice"), abs_path); goto err_out; } |