# [PATCH] filter-branch: prevent filters from reading from stdin

2 messages from 2007-06-05 to 2007-06-05. Participants: Matthias Lederhofer, Johannes Schindelin.
Thread: https://gitlist.dev/t/8442

## Matthias Lederhofer, 2007-06-05 14:12

Subject: [PATCH] filter-branch: prevent filters from reading from stdin
Message-ID: <20070605141208.GA23605@moooo.ath.cx>
URL: https://gitlist.dev/e/20070605141208.GA23605%40moooo.ath.cx

```
stdin is the list of commits when the env, tree and index
filter are executed.  The filters are not supposed to read
anything from stdin so the best is to give them /dev/null
for reading.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
 git-filter-branch.sh |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index f4cfbea..e220b85 100644
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -352,21 +352,21 @@ while read commit; do
 
 	eval "$(set_ident AUTHOR <../commit)"
 	eval "$(set_ident COMMITTER <../commit)"
-	eval "$filter_env"
+	eval "$filter_env" < /dev/null
 
 	if [ "$filter_tree" ]; then
 		git-checkout-index -f -u -a
 		# files that $commit removed are now still in the working tree;
 		# remove them, else they would be added again
 		git-ls-files -z --others | xargs -0 rm -f
-		eval "$filter_tree"
+		eval "$filter_tree" < /dev/null
 		git-diff-index -r $commit | cut -f 2- | tr '\n' '\0' | \
 			xargs -0 git-update-index --add --replace --remove
 		git-ls-files -z --others | \
 			xargs -0 git-update-index --add --replace --remove
 	fi
 
-	eval "$filter_index"
+	eval "$filter_index" < /dev/null
 
 	parentstr=
 	for parent in $(get_parents $commit); do
-- 
1.5.2.1.120.g3877-dirty

```

## Johannes Schindelin, 2007-06-05 16:10

Subject: Re: [PATCH] filter-branch: prevent filters from reading from stdin
Message-ID: <Pine.LNX.4.64.0706051704170.4046@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0706051704170.4046%40racer.site
In-Reply-To: <20070605141208.GA23605@moooo.ath.cx>

```
Hi,

On Tue, 5 Jun 2007, Matthias Lederhofer wrote:

> stdin is the list of commits when the env, tree and index
> filter are executed.  The filters are not supposed to read
> anything from stdin so the best is to give them /dev/null
> for reading.

ACK. After chatting with Matthias on IRC, I agree that there is more 
damage than benefit from being able to (accidentally) take stdin in these 
filters.

Ciao,
Dscho

```
