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 7d85920d9..700564212 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) | |||
217 | add_to_ino_dev_hashtable(&source_stat, dest); | 217 | add_to_ino_dev_hashtable(&source_stat, dest); |
218 | } | 218 | } |
219 | 219 | ||
220 | src_fd = open(source, O_RDONLY); | 220 | src_fd = open_or_warn(source, O_RDONLY); |
221 | if (src_fd == -1) { | 221 | if (src_fd < 0) { |
222 | bb_perror_msg("cannot open '%s'", source); | ||
223 | return -1; | 222 | return -1; |
224 | } | 223 | } |
225 | 224 | ||
@@ -237,9 +236,8 @@ int copy_file(const char *source, const char *dest, int flags) | |||
237 | return ovr; | 236 | return ovr; |
238 | } | 237 | } |
239 | /* It shouldn't exist. If it exists, do not open (symlink attack?) */ | 238 | /* It shouldn't exist. If it exists, do not open (symlink attack?) */ |
240 | dst_fd = open(dest, O_WRONLY|O_CREAT|O_EXCL, source_stat.st_mode); | 239 | dst_fd = open3_or_warn(dest, O_WRONLY|O_CREAT|O_EXCL, source_stat.st_mode); |
241 | if (dst_fd == -1) { | 240 | if (dst_fd < 0) { |
242 | bb_perror_msg("cannot open '%s'", dest); | ||
243 | close(src_fd); | 241 | close(src_fd); |
244 | return -1; | 242 | return -1; |
245 | } | 243 | } |