bin/pull: Fix @ override syntax when pulling multiple refs

Coverity spotted an infloop here since we were incrementing `i++`
instead of `j++`.  But adding a test revealed other bugs - we need
to keep the arrays in sync.

Coverity CID: 1452204

Closes: #1041
Approved by: pwithnall
This commit is contained in:
Colin Walters 2017-07-31 12:22:16 -04:00 committed by Atomic Bot
parent 8eec337fee
commit 48f8f32921
2 changed files with 13 additions and 5 deletions

View File

@ -209,11 +209,13 @@ ostree_builtin_pull (int argc, char **argv, GCancellable *cancellable, GError **
goto out;
if (!override_commit_ids)
override_commit_ids = g_ptr_array_new_with_free_func (g_free);
{
override_commit_ids = g_ptr_array_new_with_free_func (g_free);
/* Backfill */
for (j = 2; j < i; i++)
g_ptr_array_add (override_commit_ids, g_strdup (""));
/* Backfill */
for (j = 2; j < i; j++)
g_ptr_array_add (override_commit_ids, g_strdup (""));
}
g_ptr_array_add (override_commit_ids, g_strdup (override_commit_id));
g_ptr_array_add (refs_to_fetch, g_strndup (argv[i], at - argv[i]));
@ -221,6 +223,8 @@ ostree_builtin_pull (int argc, char **argv, GCancellable *cancellable, GError **
else
{
g_ptr_array_add (refs_to_fetch, g_strdup (argv[i]));
if (override_commit_ids)
g_ptr_array_add (override_commit_ids, g_strdup (""));
}
}

View File

@ -35,7 +35,7 @@ function verify_initial_contents() {
assert_file_has_content baz/cow '^moo$'
}
echo "1..27"
echo "1..28"
# Try both syntaxes
repo_init --no-gpg-verify
@ -364,6 +364,10 @@ assert_not_has_file baz/saucer
echo "ok static delta 2"
cd ${test_tmpdir}
${CMD_PREFIX} ostree --repo=repo pull origin main main@${rev} main@${rev} main main@${rev} main
echo "ok pull specific commit array"
cd ${test_tmpdir}
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false --set=unconfigured-state="Access to ExampleOS requires ONE BILLION DOLLARS." origin-subscription file://$(pwd)/ostree-srv/gnomerepo
if ${CMD_PREFIX} ostree --repo=repo pull origin-subscription main 2>err.txt; then