include/fileutils: add is_same_inode() check
Check if a file descriptor and path or stat structure are represent the same file. This function is needed for TACTOU avoidance. Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
parent
0172ebba52
commit
3f684db0d9
|
@ -4,6 +4,7 @@
|
|||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "c.h"
|
||||
|
||||
|
@ -25,6 +26,17 @@ static inline FILE *xfmkstemp(char **tmpname, const char *dir, const char *prefi
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline int is_same_inode(const int fd, const struct stat *st)
|
||||
{
|
||||
struct stat f;
|
||||
|
||||
if (fstat(fd, &f) < 0)
|
||||
return 0;
|
||||
else if (f.st_dev != st->st_dev || f.st_ino != st->st_ino)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern int dup_fd_cloexec(int oldfd, int lowfd);
|
||||
extern int get_fd_tabsize(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue