This makes silly practical jokes impossible, like for example symlinking /dev/null or dev/random to /etc/nologin.txt Signed-off-by: Sami Kerola <kerolasa@xxxxxx> --- login-utils/nologin.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/login-utils/nologin.c b/login-utils/nologin.c index 3be50ca..0a06ef8 100644 --- a/login-utils/nologin.c +++ b/login-utils/nologin.c @@ -3,6 +3,7 @@ */ #include <stdio.h> +#include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <string.h> @@ -38,6 +39,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out) int main(int argc, char *argv[]) { int c, fd; + struct stat st; static const struct option longopts[] = { { "help", 0, 0, 'h' }, { "version", 0, 0, 'V' }, @@ -63,7 +65,8 @@ int main(int argc, char *argv[]) } fd = open(_PATH_NOLOGIN_TXT, O_RDONLY); - if (fd >= 0) { + c = fstat(fd, &st); + if (fd >= 0 && !c && S_ISREG(st.st_mode)) { char buf[BUFSIZ]; ssize_t rd; -- 2.6.1 -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html