commit - fe48b8a35b1ce2ff6de2275bc413d8e0e60eaf2f
commit + cd4ec459ec584d645acf6873b22b9f4f9e687cd9
blob - 1d3789e902b9ab1f3b7dd6c0ffece44888797b6b
blob + 789f88be02e9d1b536dea3344011e8058451cc72
--- vias.c
+++ vias.c
{
static int dep = 0;
struct stat sb;
- char dir[PATH_MAX];
+ char path[PATH_MAX];
int fd, pfd;
dep++;
- (void) strlcpy(dir, dirname(file), sizeof(dir));
+ strlcpy(path, file, sizeof(path));
+ (void) strlcpy(path, dirname(path), sizeof(path));
- if (dir[1] == '\0') {
+ if (path[1] == '\0') {
dep--;
if ((pfd = open("/", O_CLOEXEC)) == -1)
return -1;
} else {
- pfd = open_nosym(dir);
+ pfd = open_nosym(path);
dep--;
if (pfd == -1)
return -1;
}
do {
+ strlcpy(path, file, sizeof(path));
if (dep) {
- fd = openat(pfd, basename(file),
+ fd = openat(pfd, basename(path),
O_NOFOLLOW | O_CLOEXEC);
} else {
- fd = openat(pfd, basename(file),
+ fd = openat(pfd, basename(path),
O_RDWR | O_NOFOLLOW | O_CLOEXEC | O_CREAT, 0777);
}
} while (fd == -1 && errno == EINTR);