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:
Sami Kerola 2015-10-31 17:26:51 +00:00
parent 0172ebba52
commit 3f684db0d9
No known key found for this signature in database
GPG Key ID: A9553245FDE9B739
1 changed files with 12 additions and 0 deletions

View File

@ -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);