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>
This commit is contained in:
		
				
					committed by
					
						 Denys Vlasenko
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							294d0c85ad
						
					
				
				
					commit
					a84bbc5425
				
			| @@ -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; | ||||
| 		} | ||||
|   | ||||
| @@ -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; | ||||
| } | ||||
|   | ||||
							
								
								
									
										16
									
								
								testsuite/mv/mv-files-to-dir-2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								testsuite/mv/mv-files-to-dir-2
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
		Reference in New Issue
	
	Block a user