MFC r273488:

Fix some bugs in the error handling of getdevice().

PR:	194506
This commit is contained in:
markj 2014-12-03 19:44:22 +00:00
parent ec597a3d4e
commit b431d8bfcf

View File

@ -662,16 +662,16 @@ getdevice(const char *name)
* find the start of the unit.
*/
if (name[0] == '\0')
err(1, "Empty device name");
errx(1, "Empty device name");
cp = strchr(name, '\0');
assert(cp != NULL && cp != name);
cp--;
while (cp != name && isdigit(cp[-1]))
cp--;
if (cp == name)
if (cp == name || !isdigit(*cp))
errx(1, "Invalid device name");
if ((size_t)(cp - name) + 1 > sizeof(patterns[0].pd_name))
errx(1, "Device name i2s too long");
errx(1, "Device name is too long");
memcpy(patterns[0].pd_name, name, cp - name);
patterns[0].pd_unit = strtol(cp, &cp, 10);
assert(*cp == '\0');