diff options
author | Ron Yorston | 2021-06-24 15:08:15 +0100 |
---|---|---|
committer | Denys Vlasenko | 2021-06-25 00:23:29 +0200 |
commit | a84bbc54257e68ef149cbaff8835c9cb3605c9ac (patch) | |
tree | 9cb21b15f9abfc47f7f1db32985fbb79d78d6bf2 /coreutils | |
parent | 294d0c85adcbcf48da1fc0f48dae3aed59c07436 (diff) | |
download | busybox-a84bbc54257e68ef149cbaff8835c9cb3605c9ac.zip busybox-a84bbc54257e68ef149cbaff8835c9cb3605c9ac.tar.gz |
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 b7f0e29..50ca1cc 100644 --- a/coreutils/cp.c +++ b/coreutils/cp.c @@ -252,7 +252,7 @@ int cp_main(int argc, char **argv) } } } - /* else: last is DIR from "t -DIR" */ + /* else: last is DIR from "-t DIR" */ while (1) { #if ENABLE_FEATURE_CP_LONG_OPTIONS @@ -274,7 +274,7 @@ int cp_main(int argc, char **argv) if (copy_file(*argv, dest, flags) < 0) { status = EXIT_FAILURE; } - if (*++argv == last) { + if (!*++argv || *argv == last) { /* possibly leaking dest... */ break; } diff --git a/coreutils/mv.c b/coreutils/mv.c index eae2e99..fd24226 100644 --- a/coreutils/mv.c +++ b/coreutils/mv.c @@ -108,7 +108,7 @@ int mv_main(int argc, char **argv) /* else: fall through into "do { move SRC to DIR/SRC } while" loop */ } } - /* else: last is DIR from "t -DIR" */ + /* else: last is DIR from "-t DIR" */ do { dest = concat_path_file(last, bb_get_last_path_component_strip(*argv)); @@ -185,7 +185,7 @@ int mv_main(int argc, char **argv) if (dest != last) { free((void *) dest); } - } while (*++argv != last); + } while (*++argv && *argv != last); return status; } |