Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: >> + tag_ref = xstrfmt("refs/tags/%s", >> + ((struct tag *)merge_remote_util(commit)->obj)->tag); > > xstrfmt() allocates a new string... > >> + if (!read_ref(tag_ref, &oid) && >> + !oidcmp(&oid, &merge_remote_util(commit)->obj->oid)) >> + return 0; > > ...which is leaked here... > >> + >> + /* >> + * Otherwise, we are playing an integrator's role, making a >> + * merge with a throw-away tag from a contributor with >> + * something like "git pull $contributor $signed_tag". >> + * We want to forbid such a merge from fast-forwarding >> + * by default; otherwise we would not keep the signature >> + * anywhere. >> + */ >> + return 1; > > ...and here. OK. Thanks.