{"thread":{"id":"27660","subject":"[PATCH] plug a few coverity-spotted leaks","startedAt":"2011-06-20T07:40:06Z","lastAt":"2011-06-20T07:40:06Z","messageCount":1,"participants":["Jim Meyering"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"170284","messageId":"87mxhd6je1.fsf@rho.meyering.net","threadId":"27660","inReplyTo":null,"subject":"[PATCH] plug a few coverity-spotted leaks","fromName":"Jim Meyering","fromEmail":"jim@meyering.net","sentAt":"2011-06-20T07:40:06Z","receivedAt":"2011-06-20T07:40:06Z","isPatch":true,"sender":{"key":"jim@meyering.net","avatar":"https://avatars.githubusercontent.com/u/710630?v=4"},"body":"\nSigned-off-by: Jim Meyering <meyering@redhat.com>\n---\n builtin/cat-file.c     |    2 ++\n builtin/diff.c         |    1 +\n builtin/update-index.c |    4 +++-\n remote-curl.c          |   10 ++++++----\n 4 files changed, 12 insertions(+), 5 deletions(-)\n\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex 94632db..07bd984 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -187,6 +187,8 @@ static int batch_one_object(const char *obj_name, int print_contents)\n \tif (type <= 0) {\n \t\tprintf(\"%s missing\\n\", obj_name);\n \t\tfflush(stdout);\n+\t\tif (print_contents == BATCH)\n+\t\t\tfree(contents);\n \t\treturn 0;\n \t}\n\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 14bd14f..69cd5ee 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -182,6 +182,7 @@ static int builtin_diff_combined(struct rev_info *revs,\n \t\thashcpy((unsigned char *)(parent + i), ent[i].item->sha1);\n \tdiff_tree_combined(parent[0], parent + 1, ents - 1,\n \t\t\t   revs->dense_combined_merges, revs);\n+\tfree(parent);\n \treturn 0;\n }\n\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex f14bc90..a6a23fa 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -100,8 +100,10 @@ static int add_one_path(struct cache_entry *old, const char *path, int len, stru\n \tce->ce_mode = ce_mode_from_stat(old, st->st_mode);\n\n \tif (index_path(ce->sha1, path, st,\n-\t\t       info_only ? 0 : HASH_WRITE_OBJECT))\n+\t\t       info_only ? 0 : HASH_WRITE_OBJECT)) {\n+\t\tfree(ce);\n \t\treturn -1;\n+\t}\n \toption = allow_add ? ADD_CACHE_OK_TO_ADD : 0;\n \toption |= allow_replace ? ADD_CACHE_OK_TO_REPLACE : 0;\n \tif (add_cache_entry(ce, option))\ndiff --git a/remote-curl.c b/remote-curl.c\nindex 17d8a9b..b5be25c 100644\n--- a/remote-curl.c\n+++ b/remote-curl.c\n@@ -811,19 +811,21 @@ static void parse_push(struct strbuf *buf)\n\n \t\tstrbuf_reset(buf);\n \t\tif (strbuf_getline(buf, stdin, '\\n') == EOF)\n-\t\t\treturn;\n+\t\t\tgoto free_specs;\n \t\tif (!*buf->buf)\n \t\t\tbreak;\n \t} while (1);\n\n \tif (push(nr_spec, specs))\n \t\texit(128); /* error already reported */\n-\tfor (i = 0; i < nr_spec; i++)\n-\t\tfree(specs[i]);\n-\tfree(specs);\n\n \tprintf(\"\\n\");\n \tfflush(stdout);\n+\n+ free_specs:\n+\tfor (i = 0; i < nr_spec; i++)\n+\t\tfree(specs[i]);\n+\tfree(specs);\n }\n\n int main(int argc, const char **argv)\n--\n1.7.6.rc2.4.g36bfb.dirty\n"}]}