git/builtin
Michael Haggerty 697a41519b parse_arg(): really test that argument is properly terminated
The old parse_arg(), when fed an argument

    "refs/heads/a"master

parsed 'refs/heads/a' off of the front of the argument and considered
itself successful.  It was only when parse_next_arg() tried to parse
the *next* argument that a problem was noticed.  But in fact, the
definition of the input format requires arguments to be terminated by
SP or NUL, so *this* argument is already erroneous and parse_arg()
should diagnose the problem.

So teach parse_arg() to verify that C-quoted arguments are terminated
correctly.  If not, emit a more specific error message.

There is no corresponding error case of a non-C-quoted argument that
is not terminated correctly, because the end of a non-quoted argument
is *by definition* a space or NUL, so there is no way to insert other
junk between the "end" of the argument and the argument terminator.

Adjust the tests to expect the new error message.  Add a docstring to
the function, incorporating the comments that were formerly within the
function plus some added information.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-04-07 12:09:11 -07:00
..
add.c Merge branch 'fr/add-interactive-argv-array' 2014-03-28 13:51:05 -07:00
annotate.c
apply.c Merge branch 'nd/no-more-fnmatch' 2014-03-14 14:25:31 -07:00
archive.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
bisect--helper.c
blame.c Merge branch 'dk/blame-janitorial' 2014-02-27 14:01:46 -08:00
branch.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
bundle.c
cat-file.c Merge branch 'jk/warn-on-object-refname-ambiguity' 2014-03-25 11:07:36 -07:00
check-attr.c Merge branch 'jc/check-attr-honor-working-tree' 2014-03-14 14:06:00 -07:00
check-ignore.c
check-mailmap.c
check-ref-format.c
checkout-index.c Merge branch 'nd/lift-path-max' 2013-10-30 12:10:56 -07:00
checkout.c Merge branch 'bp/commit-p-editor' 2014-03-28 13:51:11 -07:00
clean.c Merge branch 'jk/clean-d-pathspec' 2014-03-18 13:47:57 -07:00
clone.c commit: fix patch hunk editing with "commit -p -m" 2014-03-18 11:25:12 -07:00
column.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
commit-tree.c commit-tree: add and document --no-gpg-sign 2014-02-24 14:51:35 -08:00
commit.c Merge branch 'bp/commit-p-editor' 2014-03-28 13:51:11 -07:00
config.c config: teach "git config --file -" to read from the standard input 2014-02-18 16:12:14 -08:00
count-objects.c
credential.c
describe.c Merge branch 'nd/no-more-fnmatch' 2014-03-14 14:25:31 -07:00
diff-files.c
diff-index.c
diff-tree.c
diff.c Merge branch 'tg/diff-no-index-refactor' 2013-12-27 14:58:17 -08:00
fast-export.c Merge branch 'cc/starts-n-ends-with' 2013-12-17 12:02:44 -08:00
fetch-pack.c Merge branch 'nd/shallow-clone' 2014-01-17 12:21:20 -08:00
fetch.c Merge branch 'ep/varscope' 2014-02-27 14:01:30 -08:00
fmt-merge-msg.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
for-each-ref.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
fsck.c Merge branch 'mh/replace-refs-variable-rename' 2014-03-14 14:27:06 -07:00
gc.c Merge branch 'bp/commit-p-editor' 2014-03-28 13:51:11 -07:00
get-tar-commit-id.c stop installing git-tar-tree link 2013-12-03 12:35:22 -08:00
grep.c pathspec: convert some match_pathspec_depth() to dir_path_match() 2014-02-24 14:37:09 -08:00
hash-object.c
help.c builtin/help.c: speed up is_git_command() by checking for builtin commands first 2014-01-06 11:26:31 -08:00
index-pack.c Merge branch 'nd/index-pack-error-message' 2014-03-25 11:08:19 -07:00
init-db.c Merge branch 'mh/safe-create-leading-directories' 2014-01-27 10:45:33 -08:00
log.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
ls-files.c pathspec: pass directory indicator to match_pathspec_item() 2014-02-24 14:37:19 -08:00
ls-remote.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
ls-tree.c pathspec: rename match_pathspec_depth() to match_pathspec() 2014-02-24 14:37:14 -08:00
mailinfo.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
mailsplit.c
merge-base.c Merge branch 'bm/merge-base-octopus-dedup' into maint 2014-02-13 13:38:59 -08:00
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
merge-tree.c
merge.c Merge branch 'bp/commit-p-editor' 2014-03-28 13:51:11 -07:00
mktag.c
mktree.c builtin/mktree.c: use ALLOC_GROW() in append_to_tree() 2014-03-03 14:54:45 -08:00
mv.c Merge branch 'jk/mv-submodules-fix' 2014-03-25 11:02:02 -07:00
name-rev.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
notes.c Merge branch 'jh/note-trees-record-blobs' 2014-03-14 14:25:39 -07:00
pack-objects.c Merge branch 'jk/pack-bitmap-progress' 2014-03-28 13:50:56 -07:00
pack-redundant.c
pack-refs.c
patch-id.c
prune-packed.c i18n: mark all progress lines for translation 2014-02-24 09:08:37 -08:00
prune.c Merge branch 'mh/replace-refs-variable-rename' 2014-03-14 14:27:06 -07:00
push.c Merge branch 'cc/starts-n-ends-with-endgame' 2014-03-07 15:18:28 -08:00
read-tree.c C: have space around && and || operators 2013-10-16 10:26:39 -07:00
receive-pack.c shallow: automatically clean up shallow tempfiles 2014-02-27 12:07:13 -08:00
reflog.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
remote-ext.c
remote-fd.c
remote.c Merge branch 'cc/starts-n-ends-with' 2013-12-17 12:02:44 -08:00
repack.c Merge branch 'jk/repack-pack-keep-objects' 2014-03-18 13:50:29 -07:00
replace.c Merge branch 'mh/replace-refs-variable-rename' 2014-03-14 14:27:06 -07:00
rerere.c
reset.c Merge branch 'nd/reset-setup-worktree' 2014-03-14 14:25:03 -07:00
rev-list.c Merge branch 'jk/pack-bitmap' 2014-02-27 14:01:48 -08:00
rev-parse.c rev-parse --parseopt: option argument name hints 2014-03-23 17:28:03 -07:00
revert.c cherry-pick, revert: add the --gpg-sign option 2014-01-27 15:15:52 -08:00
rm.c Merge branch 'nd/submodule-pathspec-ending-with-slash' 2014-02-27 14:01:15 -08:00
send-pack.c Merge branch 'nd/shallow-clone' 2014-01-17 12:21:20 -08:00
shortlog.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
show-branch.c use wildmatch() directly without fnmatch() wrapper 2014-02-20 14:15:46 -08:00
show-ref.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
stripspace.c
symbolic-ref.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
tag.c Merge branch 'nd/tag-version-sort' 2014-03-21 12:47:39 -07:00
unpack-file.c
unpack-objects.c Merge branch 'mh/replace-refs-variable-rename' 2014-03-14 14:27:06 -07:00
update-index.c Merge branch 'nd/submodule-pathspec-ending-with-slash' 2014-02-27 14:01:15 -08:00
update-ref.c parse_arg(): really test that argument is properly terminated 2014-04-07 12:09:11 -07:00
update-server-info.c
upload-archive.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
var.c
verify-pack.c
verify-tag.c
write-tree.c