X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Funix_apply.c;h=d1888446b452626ab2b42f50da65346d0bd3a78d;hb=067245fb775d108fd06b0628935ece5dd94b58ce;hp=21a804a59424bbfa82b8274b0ed4b9a690596b11;hpb=5d3d469e410dc5f4a28814ad231336fc174cba56;p=wimlib diff --git a/src/unix_apply.c b/src/unix_apply.c index 21a804a5..d1888446 100644 --- a/src/unix_apply.c +++ b/src/unix_apply.c @@ -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); @@ -111,14 +115,14 @@ unix_create_symlink(const tchar *oldpath, const tchar *newpath, static int unix_extract_unnamed_stream(file_spec_t file, struct wim_lookup_table_entry *lte, - struct apply_ctx *ctx) + struct apply_ctx *ctx, struct wim_dentry *_ignore) { const char *path = file.path; struct filedes fd; 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);