提交 976f42d1 编写于 作者: R Rich Felker

guard against hard links to non-ordinary-files when reading tcb shadow

上级 ca1aa5ba
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <sys/stat.h>
#include "pwf.h" #include "pwf.h"
/* This implementation support Openwall-style TCB passwords in place of /* This implementation support Openwall-style TCB passwords in place of
...@@ -34,8 +35,9 @@ int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct ...@@ -34,8 +35,9 @@ int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct
fd = open(path, O_RDONLY|O_NOFOLLOW|O_NONBLOCK); fd = open(path, O_RDONLY|O_NOFOLLOW|O_NONBLOCK);
if (fd >= 0) { if (fd >= 0) {
f = fdopen(fd, "rb"); struct stat st = { 0 };
if (!f) { errno = EINVAL;
if (fstat(fd, &st) || !S_ISREG(st.st_mode) || !(f = fdopen(fd, "rb"))) {
close(fd); close(fd);
return errno; return errno;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册