Subject: [PATCH] t6112: avoid tilde expansion

From: SZEDER Gábor <[email-masked]>
Date: Sat, 18 Apr 2026 18:32:36 +0200

e987df5fe6 (list-objects-filter: implement composite filters,
2019-06-27) introduced a test to "t6112-rev-list-filters-objects.sh"
that checks the output of a Git command with the following commands:

  grep ~$omitted_1 actual &&
  grep ~$omitted_2 actual &&
  grep ~$omitted_3 actual &&

Since the leading tilde in the pattern is not quoted/escaped, it is
subject to tilde expansion.  So if the system has a user whose
username happens to be equal to the content of one of those
"$omitted_*" variables, then "grep" would look for the user's home
directory.  Luckily, those variables contain object hashes, so this is
not very likely.

Furthermore, Bash versions v5.0 and earlier seem to be buggy and don't
handle this particular tilde expansion very well, and either segfault
right away or, in case of v3.2, get stuck in an endless loop and
segfault upon receiving ctrl-c.

Quote those words starting with a tilde to avoid these issues.

Signed-off-by: SZEDER Gábor <[email-masked]>
---
 t/t6112-rev-list-filters-objects.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/t/t6112-rev-list-filters-objects.sh b/t/t6112-rev-list-filters-objects.sh
index 39211ef989..e0a825bccf 100755
--- a/t/t6112-rev-list-filters-objects.sh
+++ b/t/t6112-rev-list-filters-objects.sh
@@ -623,9 +623,9 @@ test_expect_success 'verify collecting omits in combined: filter' '
 	omitted_2=$(echo a     | git hash-object --stdin) &&
 	omitted_3=$(echo abcde | git hash-object --stdin) &&
 
-	grep ~$omitted_1 actual &&
-	grep ~$omitted_2 actual &&
-	grep ~$omitted_3 actual &&
+	grep "~$omitted_1" actual &&
+	grep "~$omitted_2" actual &&
+	grep "~$omitted_3" actual &&
 	test_line_count = 3 actual
 '
 
-- 
2.54.0.rc2.650.gc37764ecfc