git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] add receive.denyNonFastforwards config variable

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Sep 21, 2006, 00:07 UTC
Message-ID
<Pine.LNX.4.63.0609210206320.19042@wbgn013.biozentrum.uni-wuerzburg.de>
In-Reply-To
<20060920234548.GA20461@coredump.intra.peff.net>
On Wed, 20 Sep 2006, Jeff King wrote:
Show 20 quoted lines
> On Thu, Sep 21, 2006 at 01:07:54AM +0200, Johannes Schindelin wrote:
> 
> > +	if (deny_non_fast_forwards && !is_null_sha1(old_sha1)) {
> > +		struct commit *old_commit, *new_commit;
> > +		struct commit_list *bases;
> > +
> > +		old_commit = (struct commit *)parse_object(old_sha1);
> > +		new_commit = (struct commit *)parse_object(new_sha1);
> > +		for (bases = get_merge_bases(old_commit, new_commit, 1);
> > +				bases; bases = bases->next)
> > +			if (!hashcmp(old_sha1, bases->item->object.sha1))
> > +				break;
> > +		if (!bases)
> > +			return error("denying non-fast forward;"
> > +					" you should pull first");
> > +	}
> 
> Memory leak on 'bases'. It shouldn't matter much because the program is
> short-lived, but I couldn't remember if we have a policy on such things
> with increasing lib-ification.
True. How about this:
-- snip --
---
 receive-pack.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/receive-pack.c b/receive-pack.c
index a6ec9f9..d84fc2c 100644
--- a/receive-pack.c
+++ b/receive-pack.c
@@ -131,17 +131,19 @@ static int update(struct command *cmd)
 	}
 	if (deny_non_fast_forwards && !is_null_sha1(old_sha1)) {
 		struct commit *old_commit, *new_commit;
-		struct commit_list *bases;
+		struct commit_list *bases, *backup;
 
 		old_commit = (struct commit *)parse_object(old_sha1);
 		new_commit = (struct commit *)parse_object(new_sha1);
-		for (bases = get_merge_bases(old_commit, new_commit, 1);
+		backup = get_merge_bases(old_commit, new_commit, 1);
+		for (bases = backup;
 				bases; bases = bases->next)
 			if (!hashcmp(old_sha1, bases->item->object.sha1))
 				break;
 		if (!bases)
 			return error("denying non-fast forward;"
 					" you should pull first");
+		free_commit_list(backup);
 	}
 	safe_create_leading_directories(lock_name);
 
-- 
1.4.2.1.g6ad2-dirty
Previous: Jeff KingNext: Junio C Hamano
Message 17 of 18 in “add receive.denyNonFastforwards config variable”
  1. add receive.denyNonFastforwards config variableJohannes Schindelin, Sep 20, 2006
  2. Junio C HamanoSep 20, 2006
  3. Shawn PearceSep 20, 2006
  4. add receive.denyNonFastforwards config variableJohannes Schindelin, Sep 20, 2006
  5. Junio C HamanoSep 20, 2006
  6. Johannes SchindelinSep 21, 2006
  7. Junio C HamanoSep 21, 2006
  8. Johannes SchindelinSep 21, 2006
  9. Junio C HamanoSep 20, 2006
  10. Johannes SchindelinSep 21, 2006
  11. Junio C HamanoSep 21, 2006
  12. Jeff KingSep 21, 2006
  13. Junio C HamanoSep 21, 2006
  14. Johannes SchindelinSep 21, 2006
  15. Junio C HamanoSep 21, 2006
  16. Jeff KingSep 20, 2006
  17. Johannes SchindelinSep 21, 2006
  18. Junio C HamanoSep 21, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.