List for cgit developers and users
 help / color / mirror / Atom feed
* [PATCH] tests: Make sure that git does not access $HOME
@ 2013-04-08 20:20 Jason
  2013-04-08 20:22 ` Jason
  2013-04-08 20:32 ` john
  0 siblings, 2 replies; 5+ messages in thread
From: Jason @ 2013-04-08 20:20 UTC (permalink / raw)


From: "Jason A. Donenfeld" <Jason at zx2c4.com>

With the latest changes to prevent git from accessing configuration
files that it should not, it's important to be sure that we won't
have further breakage in the future.

Use strace to implement a test to make sure cgit does not access()
anything built from $HOME.

Signed-off-by: Jason A. Donenfeld <Jason at zx2c4.com>
---
 tests/t0109-gitconfig.sh | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100755 tests/t0109-gitconfig.sh

diff --git a/tests/t0109-gitconfig.sh b/tests/t0109-gitconfig.sh
new file mode 100755
index 0000000..b68866f
--- /dev/null
+++ b/tests/t0109-gitconfig.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+test_description='Ensure that git does not access $HOME'
+. ./setup.sh
+
+test -n "$(which strace 2>/dev/null)" || {
+	skip_all='Skipping access validation tests: strace not found'
+	test_done
+	exit
+}
+
+test_expect_success 'no access to $HOME' '
+	non_existant_path="/path/to/some/place/that/does/not/possibly/exist/$(date +%N)"
+	strace -E HOME="$non_existant_path" -E CGIT_CONFIG="$PWD/cgitrc" \
+	-E QUERY_STRING="url=foo/commit" -e access -f cgit 2>&1 >/dev/null | \
+	test_must_fail grep "$non_existant_path"
+'
+
+test_done
-- 
1.8.1.5





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] tests: Make sure that git does not access $HOME
  2013-04-08 20:20 [PATCH] tests: Make sure that git does not access $HOME Jason
@ 2013-04-08 20:22 ` Jason
  2013-04-08 20:32 ` john
  1 sibling, 0 replies; 5+ messages in thread
From: Jason @ 2013-04-08 20:22 UTC (permalink / raw)


Stemming from John's concern, we now have a test case in the tests
branch to ensure we don't have further gitconfig breakage down the
line.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] tests: Make sure that git does not access $HOME
  2013-04-08 20:20 [PATCH] tests: Make sure that git does not access $HOME Jason
  2013-04-08 20:22 ` Jason
@ 2013-04-08 20:32 ` john
  2013-04-08 20:35   ` Jason
  1 sibling, 1 reply; 5+ messages in thread
From: john @ 2013-04-08 20:32 UTC (permalink / raw)


On Mon, Apr 08, 2013 at 10:20:12PM +0200, Jason A. Donenfeld wrote:
> From: "Jason A. Donenfeld" <Jason at zx2c4.com>
> 
> With the latest changes to prevent git from accessing configuration
> files that it should not, it's important to be sure that we won't
> have further breakage in the future.
> 
> Use strace to implement a test to make sure cgit does not access()
> anything built from $HOME.
> 
> Signed-off-by: Jason A. Donenfeld <Jason at zx2c4.com>
> ---
>  tests/t0109-gitconfig.sh | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
>  create mode 100755 tests/t0109-gitconfig.sh
> 
> diff --git a/tests/t0109-gitconfig.sh b/tests/t0109-gitconfig.sh
> new file mode 100755
> index 0000000..b68866f
> --- /dev/null
> +++ b/tests/t0109-gitconfig.sh
> @@ -0,0 +1,19 @@
> +#!/bin/sh
> +
> +test_description='Ensure that git does not access $HOME'
> +. ./setup.sh
> +
> +test -n "$(which strace 2>/dev/null)" || {
> +	skip_all='Skipping access validation tests: strace not found'
> +	test_done
> +	exit
> +}
> +
> +test_expect_success 'no access to $HOME' '
> +	non_existant_path="/path/to/some/place/that/does/not/possibly/exist/$(date +%N)"
> +	strace -E HOME="$non_existant_path" -E CGIT_CONFIG="$PWD/cgitrc" \
> +	-E QUERY_STRING="url=foo/commit" -e access -f cgit 2>&1 >/dev/null | \

Can we avoid a pipe here and use a temporary file instead?  In fact,
using "-o filename" to strace seems like the best way to make sure we
get exactly the right output.

It would also be a bit more readable like this:

	strace -E HOME="$non_existant_path" \
		-E CGIT_CONFIG="$PWD/cgitrc" \
		-E QUERY_STRING="url=foo/commit" \
		-e access \
		-o strace.out \
		-f cgit &&

> +	test_must_fail grep "$non_existant_path"
> +'
> +
> +test_done
> -- 
> 1.8.1.5




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] tests: Make sure that git does not access $HOME
  2013-04-08 20:32 ` john
@ 2013-04-08 20:35   ` Jason
  2013-04-08 20:38     ` john
  0 siblings, 1 reply; 5+ messages in thread
From: Jason @ 2013-04-08 20:35 UTC (permalink / raw)


On Mon, Apr 8, 2013 at 10:32 PM, John Keeping <john at keeping.me.uk> wrote:
> Can we avoid a pipe here and use a temporary file instead?

Sure, no problem. Why do you prefer a temporary file over a pipe?




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] tests: Make sure that git does not access $HOME
  2013-04-08 20:35   ` Jason
@ 2013-04-08 20:38     ` john
  0 siblings, 0 replies; 5+ messages in thread
From: john @ 2013-04-08 20:38 UTC (permalink / raw)


On Mon, Apr 08, 2013 at 10:35:09PM +0200, Jason A. Donenfeld wrote:
> On Mon, Apr 8, 2013 at 10:32 PM, John Keeping <john at keeping.me.uk> wrote:
> > Can we avoid a pipe here and use a temporary file instead?
> 
> Sure, no problem. Why do you prefer a temporary file over a pipe?

The pipe hides the exit status of whatever is on its LHS, so if
cgit/strace crashes or exits with an error, piping the output completely
loses that, which is particularly bad if we're then grep'ing for a
negative.




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-08 20:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-08 20:20 [PATCH] tests: Make sure that git does not access $HOME Jason
2013-04-08 20:22 ` Jason
2013-04-08 20:32 ` john
2013-04-08 20:35   ` Jason
2013-04-08 20:38     ` john

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).