summaryrefslogtreecommitdiff
path: root/libbb/copy_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/copy_file.c')
-rw-r--r--libbb/copy_file.c10
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 }