diff --git a/nbd-client.c b/nbd-client.c index c5d2b32b..7cb46eb2 100644 --- a/nbd-client.c +++ b/nbd-client.c @@ -228,8 +228,10 @@ static void netlink_disconnect(char *nbddev) { int index = -1; if (nbddev) { - if (sscanf(nbddev, "nbd%d", &index) != 1) + if (sscanf(nbddev, "/dev/nbd%d", &index) != 1 && + sscanf(nbddev, "nbd%d", &index) != 1) { err("Invalid nbd device target\n"); + } } if (index < 0) err("Invalid nbd device target\n"); @@ -316,10 +318,9 @@ static int netlink_check_conn(char* devname, int do_print) { int connected = -1; /* -1 = unknown, 0 = connected, 1 = disconnected */ /* Parse device index from name */ - if (sscanf(devname, "/dev/nbd%d", &index) != 1) { - if (sscanf(devname, "nbd%d", &index) != 1) { - return 2; /* Invalid device name */ - } + if (sscanf(devname, "/dev/nbd%d", &index) != 1 && + sscanf(devname, "nbd%d", &index) != 1) { + return 2; /* Invalid device name */ } /* Setup netlink socket */ @@ -1539,8 +1540,10 @@ int main(int argc, char *argv[]) { if (netlink) { int index = -1; if (cur_client->dev) { - if (sscanf(cur_client->dev, "nbd%d", &index) != 1) + if (sscanf(cur_client->dev, "/dev/nbd%d", &index) != 1 && + sscanf(cur_client->dev, "nbd%d", &index) != 1) { err("Invalid nbd device target\n"); + } } netlink_configure(index, sockfds, flags, identifier);