Guess the position of the drive number in the device name better so
that `fsck -p' doesn't check multiple slices on the same drive concurrently. Don't invoke undefined behaviour when searching for the drive number in strange device names. PR: 6129 Reviewed by: phk Submitted by: Yuichi MATSUTAKA <matutaka@osa.att.ne.jp>, but rewritten by me.
This commit is contained in:
parent
7b0e2080ab
commit
33e6082253
@ -206,12 +206,13 @@ finddisk(name)
|
||||
register char *p;
|
||||
size_t len;
|
||||
|
||||
for (len = strlen(name), p = name + len - 1; p >= name; --p)
|
||||
if (isdigit(*p)) {
|
||||
len = p - name + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
p = strrchr(name, '/');
|
||||
p = p == NULL ? name : p + 1;
|
||||
while (*p != '\0' && !isdigit((u_char)*p))
|
||||
p++;
|
||||
while (isdigit((u_char)*p))
|
||||
p++;
|
||||
len = (size_t)(p - name);
|
||||
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
|
||||
if (strncmp(dk->name, name, len) == 0 &&
|
||||
dk->name[len] == 0)
|
||||
|
@ -206,12 +206,13 @@ finddisk(name)
|
||||
register char *p;
|
||||
size_t len;
|
||||
|
||||
for (len = strlen(name), p = name + len - 1; p >= name; --p)
|
||||
if (isdigit(*p)) {
|
||||
len = p - name + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
p = strrchr(name, '/');
|
||||
p = p == NULL ? name : p + 1;
|
||||
while (*p != '\0' && !isdigit((u_char)*p))
|
||||
p++;
|
||||
while (isdigit((u_char)*p))
|
||||
p++;
|
||||
len = (size_t)(p - name);
|
||||
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
|
||||
if (strncmp(dk->name, name, len) == 0 &&
|
||||
dk->name[len] == 0)
|
||||
|
@ -206,12 +206,13 @@ finddisk(name)
|
||||
register char *p;
|
||||
size_t len;
|
||||
|
||||
for (len = strlen(name), p = name + len - 1; p >= name; --p)
|
||||
if (isdigit(*p)) {
|
||||
len = p - name + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
p = strrchr(name, '/');
|
||||
p = p == NULL ? name : p + 1;
|
||||
while (*p != '\0' && !isdigit((u_char)*p))
|
||||
p++;
|
||||
while (isdigit((u_char)*p))
|
||||
p++;
|
||||
len = (size_t)(p - name);
|
||||
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
|
||||
if (strncmp(dk->name, name, len) == 0 &&
|
||||
dk->name[len] == 0)
|
||||
|
@ -206,12 +206,13 @@ finddisk(name)
|
||||
register char *p;
|
||||
size_t len;
|
||||
|
||||
for (len = strlen(name), p = name + len - 1; p >= name; --p)
|
||||
if (isdigit(*p)) {
|
||||
len = p - name + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
p = strrchr(name, '/');
|
||||
p = p == NULL ? name : p + 1;
|
||||
while (*p != '\0' && !isdigit((u_char)*p))
|
||||
p++;
|
||||
while (isdigit((u_char)*p))
|
||||
p++;
|
||||
len = (size_t)(p - name);
|
||||
for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
|
||||
if (strncmp(dk->name, name, len) == 0 &&
|
||||
dk->name[len] == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user