summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--busybox/libbb/copy_file.c10
-rw-r--r--busybox/networking/nc.c7
-rw-r--r--busybox/networking/traceroute.c3
3 files changed, 14 insertions, 6 deletions
diff --git a/busybox/libbb/copy_file.c b/busybox/libbb/copy_file.c
index 68a1ded..4b349b7 100644
--- a/busybox/libbb/copy_file.c
+++ b/busybox/libbb/copy_file.c
@@ -197,12 +197,16 @@ int copy_file(const char *source, const char *dest, int flags)
S_ISSOCK(source_stat.st_mode) || S_ISFIFO(source_stat.st_mode) ||
S_ISLNK(source_stat.st_mode)) {
- if (dest_exists &&
- ((flags & FILEUTILS_FORCE) == 0 || unlink(dest) < 0)) {
+ if (dest_exists) {
+ if((flags & FILEUTILS_FORCE) == 0) {
+ fprintf(stderr, "`%s' exists\n", dest);
+ return -1;
+ }
+ if(unlink(dest) < 0) {
bb_perror_msg("unable to remove `%s'", dest);
return -1;
-
}
+ }
} else {
bb_error_msg("internal error: unrecognized file type");
return -1;
diff --git a/busybox/networking/nc.c b/busybox/networking/nc.c
index ab8ec0c..6ce85fe 100644
--- a/busybox/networking/nc.c
+++ b/busybox/networking/nc.c
@@ -161,8 +161,11 @@ int nc_main(int argc, char **argv)
exit(0);
ofd = STDOUT_FILENO;
} else {
- if (nread == 0)
- shutdown(sfd, 1);
+ if (nread <= 0) {
+ shutdown(sfd, 1 /* send */ );
+ close(STDIN_FILENO);
+ FD_CLR(STDIN_FILENO, &readfds);
+ }
ofd = sfd;
}
diff --git a/busybox/networking/traceroute.c b/busybox/networking/traceroute.c
index 44ffdf0..cf90ec0 100644
--- a/busybox/networking/traceroute.c
+++ b/busybox/networking/traceroute.c
@@ -101,7 +101,8 @@ struct opacket {
#include "busybox.h"
-static u_char packet[512]; /* last inbound (icmp) packet */
+ /* last inbound (icmp) packet */
+static u_char packet[512] __attribute__ ((aligned));
static struct opacket *outpacket; /* last output (udp) packet */
static int s; /* receive (icmp) socket file descriptor */