X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Funix_apply.c;h=8d549f60005d6f5cc2e62cf080f97ed5dcbd2cf7;hp=0a2a04f46f3b94e20136e5ad3a4729b7992d908a;hb=668c363a59c521f48eecbc4dd549c07a3e36179e;hpb=a267f3e6b9df128bd4bdf5d39b951868dd4528ab diff --git a/src/unix_apply.c b/src/unix_apply.c index 0a2a04f4..8d549f60 100644 --- a/src/unix_apply.c +++ b/src/unix_apply.c @@ -29,9 +29,9 @@ #include "wimlib/apply.h" #include "wimlib/error.h" -#include "wimlib/lookup_table.h" #include "wimlib/resource.h" #include "wimlib/timestamp.h" +#include "wimlib/unix_data.h" #include #include @@ -44,6 +44,10 @@ # include #endif +#ifndef O_NOFOLLOW +# define O_NOFOLLOW 0 +#endif + static int unix_start_extract(const char *target, struct apply_ctx *ctx) { @@ -56,7 +60,7 @@ unix_start_extract(const char *target, struct apply_ctx *ctx) static int unix_create_file(const char *path, struct apply_ctx *ctx, u64 *cookie_ret) { - int fd = open(path, O_TRUNC | O_CREAT | O_WRONLY, 0644); + int fd = open(path, O_TRUNC | O_CREAT | O_WRONLY | O_NOFOLLOW, 0644); if (fd < 0) return WIMLIB_ERR_OPEN; close(fd); @@ -118,7 +122,7 @@ unix_extract_unnamed_stream(file_spec_t file, int raw_fd; int ret; - raw_fd = open(path, O_WRONLY | O_TRUNC); + raw_fd = open(path, O_WRONLY | O_TRUNC | O_NOFOLLOW); if (raw_fd < 0) return WIMLIB_ERR_OPEN; filedes_init(&fd, raw_fd);