diff options
| author | Ron Yorston <rmy@pobox.com> | 2021-06-24 15:08:15 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-06-25 00:23:29 +0200 |
| commit | a84bbc54257e68ef149cbaff8835c9cb3605c9ac (patch) | |
| tree | 9cb21b15f9abfc47f7f1db32985fbb79d78d6bf2 /coreutils | |
| parent | 294d0c85adcbcf48da1fc0f48dae3aed59c07436 (diff) | |
| download | busybox-w32-a84bbc54257e68ef149cbaff8835c9cb3605c9ac.tar.gz busybox-w32-a84bbc54257e68ef149cbaff8835c9cb3605c9ac.tar.bz2 busybox-w32-a84bbc54257e68ef149cbaff8835c9cb3605c9ac.zip | |
cp,mv: fix -t DIR option
When the '-t DIR' option is used the loop over the remaining
arguments should terminate when a NULL pointer is reached.
function old new delta
mv_main 585 590 +5
cp_main 492 496 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 9/0) Total: 9 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils')
| -rw-r--r-- | coreutils/cp.c | 4 | ||||
| -rw-r--r-- | coreutils/mv.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/coreutils/cp.c b/coreutils/cp.c index b7f0e290f..50ca1ccea 100644 --- a/coreutils/cp.c +++ b/coreutils/cp.c | |||
| @@ -252,7 +252,7 @@ int cp_main(int argc, char **argv) | |||
| 252 | } | 252 | } |
| 253 | } | 253 | } |
| 254 | } | 254 | } |
| 255 | /* else: last is DIR from "t -DIR" */ | 255 | /* else: last is DIR from "-t DIR" */ |
| 256 | 256 | ||
| 257 | while (1) { | 257 | while (1) { |
| 258 | #if ENABLE_FEATURE_CP_LONG_OPTIONS | 258 | #if ENABLE_FEATURE_CP_LONG_OPTIONS |
| @@ -274,7 +274,7 @@ int cp_main(int argc, char **argv) | |||
| 274 | if (copy_file(*argv, dest, flags) < 0) { | 274 | if (copy_file(*argv, dest, flags) < 0) { |
| 275 | status = EXIT_FAILURE; | 275 | status = EXIT_FAILURE; |
| 276 | } | 276 | } |
| 277 | if (*++argv == last) { | 277 | if (!*++argv || *argv == last) { |
| 278 | /* possibly leaking dest... */ | 278 | /* possibly leaking dest... */ |
| 279 | break; | 279 | break; |
| 280 | } | 280 | } |
diff --git a/coreutils/mv.c b/coreutils/mv.c index eae2e99bb..fd2422683 100644 --- a/coreutils/mv.c +++ b/coreutils/mv.c | |||
| @@ -108,7 +108,7 @@ int mv_main(int argc, char **argv) | |||
| 108 | /* else: fall through into "do { move SRC to DIR/SRC } while" loop */ | 108 | /* else: fall through into "do { move SRC to DIR/SRC } while" loop */ |
| 109 | } | 109 | } |
| 110 | } | 110 | } |
| 111 | /* else: last is DIR from "t -DIR" */ | 111 | /* else: last is DIR from "-t DIR" */ |
| 112 | 112 | ||
| 113 | do { | 113 | do { |
| 114 | dest = concat_path_file(last, bb_get_last_path_component_strip(*argv)); | 114 | dest = concat_path_file(last, bb_get_last_path_component_strip(*argv)); |
| @@ -185,7 +185,7 @@ int mv_main(int argc, char **argv) | |||
| 185 | if (dest != last) { | 185 | if (dest != last) { |
| 186 | free((void *) dest); | 186 | free((void *) dest); |
| 187 | } | 187 | } |
| 188 | } while (*++argv != last); | 188 | } while (*++argv && *argv != last); |
| 189 | 189 | ||
| 190 | return status; | 190 | return status; |
| 191 | } | 191 | } |
