diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-26 15:45:17 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-26 15:45:17 +0000 |
commit | cf749bc10c9e7b38217e102d0d3e7044e5515b4f (patch) | |
tree | af6c1681e91a3e5c13bf3dce8aa798c07462468a /miscutils | |
parent | c1660fea6da93f4f8aacf0a9a65c2880ac58209a (diff) | |
download | busybox-cf749bc10c9e7b38217e102d0d3e7044e5515b4f.tar.gz |
small fixes:
fix xstrdup to not grossly overallocate memory
use xopen instean of xopen3 in several places
etc.
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/crontab.c | 7 | ||||
-rw-r--r-- | miscutils/rx.c | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/miscutils/crontab.c b/miscutils/crontab.c index 743ac74ae..39d3aae41 100644 --- a/miscutils/crontab.c +++ b/miscutils/crontab.c @@ -156,6 +156,7 @@ int crontab_main(int ac, char **av) break; case EDIT: { +/* FIXME: messy code here! we have file copying helpers for this! */ FILE *fi; int fd; int n; @@ -163,11 +164,12 @@ int crontab_main(int ac, char **av) snprintf(tmp, sizeof(tmp), TMPDIR "/crontab.%d", getpid()); fd = xopen3(tmp, O_RDWR|O_CREAT|O_TRUNC|O_EXCL, 0600); +/* race, use fchown */ chown(tmp, getuid(), getgid()); fi = fopen(pas->pw_name, "r"); if (fi) { while ((n = fread(buf, 1, sizeof(buf), fi)) > 0) - write(fd, buf, n); + full_write(fd, buf, n); } EditFile(caller, tmp); remove(tmp); @@ -178,6 +180,7 @@ int crontab_main(int ac, char **av) /* fall through */ case REPLACE: { +/* same here */ char path[1024]; int fd; int n; @@ -186,7 +189,7 @@ int crontab_main(int ac, char **av) fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600); if (fd >= 0) { while ((n = read(repFd, buf, sizeof(buf))) > 0) { - write(fd, buf, n); + full_write(fd, buf, n); } close(fd); rename(path, pas->pw_name); diff --git a/miscutils/rx.c b/miscutils/rx.c index f723c1676..9b9f6afd4 100644 --- a/miscutils/rx.c +++ b/miscutils/rx.c @@ -263,7 +263,7 @@ int rx_main(int argc, char **argv) fn = argv[1]; ttyfd = xopen(CURRENT_TTY, O_RDWR); - filefd = xopen3(fn, O_RDWR|O_CREAT|O_TRUNC, 0666); + filefd = xopen(fn, O_RDWR|O_CREAT|O_TRUNC); if (tcgetattr(ttyfd, &tty) < 0) bb_perror_msg_and_die("tcgetattr"); |