Applied patch from Matthias Schiffer which allows bootlogd to read from
a wider range of consoles. The console name is already passed in from the kernel command line using "console=". We no longer filter out names as strictly but do now check to confirm the "console=" device points to a valid TTY.
This commit is contained in:
parent
bb6d5dfcd6
commit
8a085ea9b7
@ -1,3 +1,9 @@
|
|||||||
|
|
||||||
|
* Applied patch from Matthias Schiffer which allows bootlogd to read from
|
||||||
|
a wider range of consoles. The console name is already passed in from the
|
||||||
|
kernel command line using "console=". We no longer filter out names as strictly
|
||||||
|
but do now check to confirm the "console=" device points to a valid TTY.
|
||||||
|
|
||||||
sysvinit (2.99) released; urgency=low
|
sysvinit (2.99) released; urgency=low
|
||||||
|
|
||||||
* Fixed typos and missing underlines in shutdown manual page.
|
* Fixed typos and missing underlines in shutdown manual page.
|
||||||
|
@ -212,6 +212,22 @@ int findpty(int *master, int *slave, char *name)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int istty(const char *dev)
|
||||||
|
{
|
||||||
|
int fd, ret;
|
||||||
|
|
||||||
|
fd = open(dev, O_RDONLY|O_NONBLOCK);
|
||||||
|
if (fd < 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ret = isatty(fd);
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See if a console taken from the kernel command line maps
|
* See if a console taken from the kernel command line maps
|
||||||
* to a character device we know about, and if we can open it.
|
* to a character device we know about, and if we can open it.
|
||||||
@ -228,7 +244,7 @@ int isconsole(char *s, char *res, int rlen)
|
|||||||
l = strlen(c->cmdline);
|
l = strlen(c->cmdline);
|
||||||
if (sl <= l) continue;
|
if (sl <= l) continue;
|
||||||
p = s + l;
|
p = s + l;
|
||||||
if (strncmp(s, c->cmdline, l) != 0 || !isdigit(*p))
|
if (strncmp(s, c->cmdline, l) != 0)
|
||||||
continue;
|
continue;
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
snprintf(res, rlen, i ? c->dev1 : c->dev2, p);
|
snprintf(res, rlen, i ? c->dev1 : c->dev2, p);
|
||||||
@ -239,6 +255,13 @@ int isconsole(char *s, char *res, int rlen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fallback: accept any TTY device */
|
||||||
|
snprintf(res, rlen, "/dev/%s", s);
|
||||||
|
if ((q = strchr(res, ',')) != NULL) *q = 0;
|
||||||
|
if (istty(res))
|
||||||
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user