diff options
| author | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-11-26 15:45:17 +0000 |
|---|---|---|
| committer | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-11-26 15:45:17 +0000 |
| commit | dd16e0325070225462e98088574fd17defad0ae0 (patch) | |
| tree | af6c1681e91a3e5c13bf3dce8aa798c07462468a /miscutils | |
| parent | 48a92503e79c2345601821c4599ee25d1db35d66 (diff) | |
| download | busybox-w32-dd16e0325070225462e98088574fd17defad0ae0.tar.gz busybox-w32-dd16e0325070225462e98088574fd17defad0ae0.tar.bz2 busybox-w32-dd16e0325070225462e98088574fd17defad0ae0.zip | |
small fixes:
fix xstrdup to not grossly overallocate memory
use xopen instean of xopen3 in several places
etc.
git-svn-id: svn://busybox.net/trunk/busybox@16673 69ca8d6d-28ef-0310-b511-8ec308f3f277
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) | |||
| 156 | break; | 156 | break; |
| 157 | case EDIT: | 157 | case EDIT: |
| 158 | { | 158 | { |
| 159 | /* FIXME: messy code here! we have file copying helpers for this! */ | ||
| 159 | FILE *fi; | 160 | FILE *fi; |
| 160 | int fd; | 161 | int fd; |
| 161 | int n; | 162 | int n; |
| @@ -163,11 +164,12 @@ int crontab_main(int ac, char **av) | |||
| 163 | 164 | ||
| 164 | snprintf(tmp, sizeof(tmp), TMPDIR "/crontab.%d", getpid()); | 165 | snprintf(tmp, sizeof(tmp), TMPDIR "/crontab.%d", getpid()); |
| 165 | fd = xopen3(tmp, O_RDWR|O_CREAT|O_TRUNC|O_EXCL, 0600); | 166 | fd = xopen3(tmp, O_RDWR|O_CREAT|O_TRUNC|O_EXCL, 0600); |
| 167 | /* race, use fchown */ | ||
| 166 | chown(tmp, getuid(), getgid()); | 168 | chown(tmp, getuid(), getgid()); |
| 167 | fi = fopen(pas->pw_name, "r"); | 169 | fi = fopen(pas->pw_name, "r"); |
| 168 | if (fi) { | 170 | if (fi) { |
| 169 | while ((n = fread(buf, 1, sizeof(buf), fi)) > 0) | 171 | while ((n = fread(buf, 1, sizeof(buf), fi)) > 0) |
| 170 | write(fd, buf, n); | 172 | full_write(fd, buf, n); |
| 171 | } | 173 | } |
| 172 | EditFile(caller, tmp); | 174 | EditFile(caller, tmp); |
| 173 | remove(tmp); | 175 | remove(tmp); |
| @@ -178,6 +180,7 @@ int crontab_main(int ac, char **av) | |||
| 178 | /* fall through */ | 180 | /* fall through */ |
| 179 | case REPLACE: | 181 | case REPLACE: |
| 180 | { | 182 | { |
| 183 | /* same here */ | ||
| 181 | char path[1024]; | 184 | char path[1024]; |
| 182 | int fd; | 185 | int fd; |
| 183 | int n; | 186 | int n; |
| @@ -186,7 +189,7 @@ int crontab_main(int ac, char **av) | |||
| 186 | fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600); | 189 | fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600); |
| 187 | if (fd >= 0) { | 190 | if (fd >= 0) { |
| 188 | while ((n = read(repFd, buf, sizeof(buf))) > 0) { | 191 | while ((n = read(repFd, buf, sizeof(buf))) > 0) { |
| 189 | write(fd, buf, n); | 192 | full_write(fd, buf, n); |
| 190 | } | 193 | } |
| 191 | close(fd); | 194 | close(fd); |
| 192 | rename(path, pas->pw_name); | 195 | 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) | |||
| 263 | 263 | ||
| 264 | fn = argv[1]; | 264 | fn = argv[1]; |
| 265 | ttyfd = xopen(CURRENT_TTY, O_RDWR); | 265 | ttyfd = xopen(CURRENT_TTY, O_RDWR); |
| 266 | filefd = xopen3(fn, O_RDWR|O_CREAT|O_TRUNC, 0666); | 266 | filefd = xopen(fn, O_RDWR|O_CREAT|O_TRUNC); |
| 267 | 267 | ||
| 268 | if (tcgetattr(ttyfd, &tty) < 0) | 268 | if (tcgetattr(ttyfd, &tty) < 0) |
| 269 | bb_perror_msg_and_die("tcgetattr"); | 269 | bb_perror_msg_and_die("tcgetattr"); |
