Skip to content

Commit

Permalink
rev-parse: fix potential bus error with --parseopt option spec handling
Browse files Browse the repository at this point in the history
A non-empty line containing no spaces should be treated by --parseopt as
an option group header, but was causing a bus error. Also added a test
script for rev-parse --parseopt.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jay Soffian authored and Junio C Hamano committed Feb 26, 2008
1 parent 1468bd4 commit e103343
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
2 changes: 1 addition & 1 deletion builtin-rev-parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
s = strchr(sb.buf, ' ');
if (!s || *sb.buf == ' ') {
o->type = OPTION_GROUP;
o->help = xstrdup(skipspaces(s));
o->help = xstrdup(skipspaces(sb.buf));
continue;
}

Expand Down
43 changes: 43 additions & 0 deletions t/t1502-rev-parse-parseopt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/sh

test_description='test git rev-parse --parseopt'
. ./test-lib.sh

cat > expect.err <<EOF
usage: some-command [options] <args>...
some-command does foo and bar!
-h, --help show the help
--foo some nifty option --foo
--bar ... some cool option --bar with an argument
An option group Header
-C [...] option C with an optional argument
Extras
--extra1 line above used to cause a segfault but no longer does
EOF

test_expect_success 'test --parseopt help output' '
git rev-parse --parseopt -- -h 2> output.err <<EOF
some-command [options] <args>...
some-command does foo and bar!
--
h,help show the help
foo some nifty option --foo
bar= some cool option --bar with an argument
An option group Header
C? option C with an optional argument
Extras
extra1 line above used to cause a segfault but no longer does
EOF
git diff expect.err output.err
'

test_done

0 comments on commit e103343

Please sign in to comment.