diff --git a/builtin/apply.c b/builtin/apply.c index 9f8f5bac072661adf9b911b091ab4202796e9a9e..be2b4ce2fd91640379b0a65d0aa90238d7edfd64 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -1075,7 +1075,7 @@ static int gitdiff_index(const char *line, struct patch *patch) line = ptr + 2; ptr = strchr(line, ' '); - eol = strchr(line, '\n'); + eol = strchrnul(line, '\n'); if (!ptr || eol < ptr) ptr = eol; diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 92561bffc1ea4ba11d3fd45aa3e216edda3461f7..f93ac454b4133f5c1e7cb1675a618b4c0b3174cd 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1122,7 +1122,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) int advertise_refs = 0; int stateless_rpc = 0; int i; - char *dir = NULL; + const char *dir = NULL; struct command *commands; struct sha1_array shallow = SHA1_ARRAY_INIT; struct sha1_array ref = SHA1_ARRAY_INIT; @@ -1157,7 +1157,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) } if (dir) usage(receive_pack_usage); - dir = xstrdup(arg); + dir = arg; } if (!dir) usage(receive_pack_usage); diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 8102aaa9248d55055761f9899903cac2a2c7cc1e..d85e08cc9cc22ee307470dbeb12fdd8d1eea655b 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -151,6 +151,7 @@ static void show_rev(int type, const unsigned char *sha1, const char *name) error("refname '%s' is ambiguous", name); break; } + free(full); } else { show_with_type(type, name); } diff --git a/builtin/show-branch.c b/builtin/show-branch.c index 5fd4e4e48839a9dc2998d3fba0e48008b902b12a..298c95e3f8b03e7f89d7767407ca8cee3eecc591 100644 --- a/builtin/show-branch.c +++ b/builtin/show-branch.c @@ -777,6 +777,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) sprintf(nth_desc, "%s@{%d}", *av, base+i); append_ref(nth_desc, sha1, 1); } + free(ref); } else if (all_heads + all_remotes) snarf_refs(all_heads, all_remotes); diff --git a/config.c b/config.c index 9767c4bad0d0ae4af58a5f1e7f14d124d1174e10..058505cb8d8d8bb531527b620125b0204732458a 100644 --- a/config.c +++ b/config.c @@ -817,14 +817,12 @@ static int git_default_core_config(const char *var, const char *value) return git_config_string(&editor_program, var, value); if (!strcmp(var, "core.commentchar")) { - const char *comment; - int ret = git_config_string(&comment, var, value); - if (ret) - return ret; - else if (!strcasecmp(comment, "auto")) + if (!value) + return config_error_nonbool(var); + else if (!strcasecmp(value, "auto")) auto_comment_line_char = 1; - else if (comment[0] && !comment[1]) { - comment_line_char = comment[0]; + else if (value[0] && !value[1]) { + comment_line_char = value[0]; auto_comment_line_char = 0; } else return error("core.commentChar should only be one character"); diff --git a/sha1_name.c b/sha1_name.c index 6ccd3a53f8fc6130000c4bf3ba4cd646f512de53..63ee66fedd617e2cacfae7a763f43ee600d15273 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -540,8 +540,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) char *tmp = xstrndup(str + at + 2, reflog_len); at_time = approxidate_careful(tmp, &errors); free(tmp); - if (errors) + if (errors) { + free(real_ref); return -1; + } } if (read_ref_at(real_ref, at_time, nth, sha1, NULL, &co_time, &co_tz, &co_cnt)) { diff --git a/transport.c b/transport.c index 80ed1262c29e8e3ec1443e06383c4ee9b7d14173..662421bb5e076177f0fc320330287d3da50303a5 100644 --- a/transport.c +++ b/transport.c @@ -1357,11 +1357,11 @@ static int refs_from_alternate_cb(struct alternate_object_database *e, while (other[len-1] == '/') other[--len] = '\0'; if (len < 8 || memcmp(other + len - 8, "/objects", 8)) - return 0; + goto out; /* Is this a git repository with refs? */ memcpy(other + len - 8, "/refs", 6); if (!is_directory(other)) - return 0; + goto out; other[len - 8] = '\0'; remote = remote_get(other); transport = transport_get(remote, other); @@ -1370,6 +1370,7 @@ static int refs_from_alternate_cb(struct alternate_object_database *e, extra = extra->next) cb->fn(extra, cb->data); transport_disconnect(transport); +out: free(other); return 0; }