From 36ffa5f9f2d8e8ced14085c5a25a4a17ba14600e Mon Sep 17 00:00:00 2001 From: Michael Mikonos <127171689+mknos@users.noreply.github.com> Date: Tue, 19 Nov 2024 21:43:32 +0800 Subject: [PATCH] grep: fix logic for empty patterns (#826) * Checking length of $pattern is unreliable because it is valid for a pattern to have zero-length (meaning match-all) * I found this when testing the -f option but the logic applies to other usages of grep %md5sum a.c c9fd7ff4cb5b01981a2a362f82f44c89 a.c %perl grep -F '' a.c | md5sum c9fd7ff4cb5b01981a2a362f82f44c89 - %printf "\n" > pat0 && perl grep -f pat0 a.c | md5sum c9fd7ff4cb5b01981a2a362f82f44c89 - %perl grep -e '' a.c | md5sum c9fd7ff4cb5b01981a2a362f82f44c89 - --- bin/grep | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/grep b/bin/grep index a230932c..30b6ef59 100755 --- a/bin/grep +++ b/bin/grep @@ -269,7 +269,7 @@ sub parse_args { if ($opt_f && scalar(@patterns) == 0) { # empty -f file allowed exit EX_NOMATCH; } - unless (length $pattern) { + unless (@patterns) { $pattern = shift @ARGV; usage() unless defined $pattern; push @patterns, $pattern;