When the '-t DIR' option is used the loop over the remaining
arguments should terminate when a NULL pointer is reached.

Signed-off-by: Ron Yorston <[email protected]>
---
 coreutils/mv.c                 |  4 ++--
 testsuite/mv/mv-files-to-dir-2 | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)
 create mode 100644 testsuite/mv/mv-files-to-dir-2

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)
                        /* 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;
 }
diff --git a/testsuite/mv/mv-files-to-dir-2 b/testsuite/mv/mv-files-to-dir-2
new file mode 100644
index 000000000..e189ebb6f
--- /dev/null
+++ b/testsuite/mv/mv-files-to-dir-2
@@ -0,0 +1,16 @@
+echo file number one > file1
+echo file number two > file2
+ln -s file2 link1
+mkdir dir1
+TZ=UTC0 touch -d '2000-01-30 05:24:08' dir1/file3
+mkdir there
+busybox mv -t there file1 file2 link1 dir1
+test -f there/file1
+test -f there/file2
+test -f there/dir1/file3
+test -L there/link1
+test xfile2 = x`readlink there/link1`
+test ! -e file1
+test ! -e file2
+test ! -e link1
+test ! -e dir1/file3
-- 
2.31.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to