commit cd4ec459ec584d645acf6873b22b9f4f9e687cd9 from: Martijn van Duren date: Fri Dec 18 20:52:16 2020 UTC Fix recent {dir,base}name change from const char * to char * commit - fe48b8a35b1ce2ff6de2275bc413d8e0e60eaf2f commit + cd4ec459ec584d645acf6873b22b9f4f9e687cd9 blob - 1d3789e902b9ab1f3b7dd6c0ffece44888797b6b blob + 789f88be02e9d1b536dea3344011e8058451cc72 --- vias.c +++ vias.c @@ -108,29 +108,31 @@ open_nosym(const char *file) { 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);