diff options
Diffstat (limited to 'libbb/copy_file.c')
-rw-r--r-- | libbb/copy_file.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/libbb/copy_file.c b/libbb/copy_file.c index 7d85920..7005642 100644 --- a/libbb/copy_file.c +++ b/libbb/copy_file.c @@ -217,9 +217,8 @@ int copy_file(const char *source, const char *dest, int flags) add_to_ino_dev_hashtable(&source_stat, dest); } - src_fd = open(source, O_RDONLY); - if (src_fd == -1) { - bb_perror_msg("cannot open '%s'", source); + src_fd = open_or_warn(source, O_RDONLY); + if (src_fd < 0) { return -1; } @@ -237,9 +236,8 @@ int copy_file(const char *source, const char *dest, int flags) return ovr; } /* It shouldn't exist. If it exists, do not open (symlink attack?) */ - dst_fd = open(dest, O_WRONLY|O_CREAT|O_EXCL, source_stat.st_mode); - if (dst_fd == -1) { - bb_perror_msg("cannot open '%s'", dest); + dst_fd = open3_or_warn(dest, O_WRONLY|O_CREAT|O_EXCL, source_stat.st_mode); + if (dst_fd < 0) { close(src_fd); return -1; } |