git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-quiltimport: fix security risk because of un-sanitized $level.

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 12, 2008, 20:55 UTC
Message-ID
<7v63vr64rn.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20080312204648.GA28729@artemis.madism.org>
Pierre Habouzit <madcoder@debian.org> writes:
Show 10 quoted lines
> Signed-off-by: Pierre Habouzit <madcoder@debian.org>
> ---
>
>   I assume that nobody will have a series with -p1000 in it :)
>   sorry for this gross mistake in the first place.
>
>   [ for the inattentive readers $level was used without quoting, for
>     good reasons as it's sometime empty and then we don't want to pass
>     an empty argument to git-apply, though someone could use that to run
>     arbitrary commands, not nice ]

A traditional way to deal with that situation in shell scripts is to use this idiom:

	${var_that_may_not_be_set+"$var_that_may_not_be_set"}

You can use :+ in place of + to also reject empty string on modern systems.

#!/bin/sh not_set=t ; unset not_set is_set=t

report () {
	echo "I got $# args"
        i=1
        for it
        do
        	echo "$i: $it"
                i=$(( $i+1 ))
	done
        echo
}

report sending not_set ${not_set:+"$not_set"} string report sending is_set ${is_set:+"$is_set"} string

Previous: Pierre HabouzitNext: Pierre Habouzit
Message 2 of 3 in “git-quiltimport: fix security risk because of un-sanitized $level.”
  1. git-quiltimport: fix security risk because of un-sanitized $level.Pierre Habouzit, Mar 12, 2008
  2. Junio C HamanoMar 12, 2008
  3. Pierre HabouzitMar 12, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.