summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.15.2-grep.patch
blob: cc7d6761b3aff50bde15e885a5c112aa7acc904d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
diff -urpN busybox-1.15.2/findutils/grep.c busybox-1.15.2-grep/findutils/grep.c
--- busybox-1.15.2/findutils/grep.c	2009-09-26 15:14:57.000000000 +0200
+++ busybox-1.15.2-grep/findutils/grep.c	2009-12-04 02:46:43.000000000 +0100
@@ -377,6 +377,8 @@ static int grep_file(FILE *file)
 						print_line(line + gl->matched_range.rm_so,
 								end - gl->matched_range.rm_so,
 								linenum, ':');
+						if (old == '\0')
+							break;
 						line[end] = old;
 #if !ENABLE_EXTRA_COMPAT
 						if (regexec(&gl->compiled_regex, line + end,
diff -urpN busybox-1.15.2/testsuite/grep.tests busybox-1.15.2-grep/testsuite/grep.tests
--- busybox-1.15.2/testsuite/grep.tests	2009-09-26 15:14:57.000000000 +0200
+++ busybox-1.15.2-grep/testsuite/grep.tests	2009-12-04 02:46:43.000000000 +0100
@@ -90,4 +90,9 @@ testing "grep -E -o prints all matches" 
 	"00:19:3E:00:AA:5E\n00:1D:60:3D:3A:FB\n00:22:43:49:FB:AA\n" \
 	"" "00:19:3E:00:AA:5E 00:1D:60:3D:3A:FB 00:22:43:49:FB:AA\n"
 
+testing "grep -o does not loop forever" \
+	'grep -o "[^/]*$"' \
+	"test\n" \
+	"" "/var/test\n"
+
 exit $FAILCOUNT