aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/remove_file.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libbb/remove_file.c b/libbb/remove_file.c
index 52b3211e6..23be40429 100644
--- a/libbb/remove_file.c
+++ b/libbb/remove_file.c
@@ -37,7 +37,7 @@ extern int remove_file(const char *path, int flags)
struct stat path_stat;
int path_exists = 1;
- if (stat(path, &path_stat) < 0) {
+ if (lstat(path, &path_stat) < 0) {
if (errno != ENOENT) {
perror_msg("unable to stat `%s'", path);
return -1;
@@ -110,6 +110,7 @@ extern int remove_file(const char *path, int flags)
return status;
} else {
if ((!(flags & FILEUTILS_FORCE) && access(path, W_OK) < 0 &&
+ !S_ISLNK(path_stat.st_mode) &&
isatty(0)) ||
(flags & FILEUTILS_INTERACTIVE)) {
fprintf(stderr, "%s: remove `%s'? ", applet_name, path);