git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Segfault when cloning http:// without libcurl
@ 2008-05-27  9:24 Thomas Rast
  2008-05-27 14:28 ` [PATCH] clone: make sure we support the transport type Jeff King
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Rast @ 2008-05-27  9:24 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 1902 bytes --]

Hi all

1.5.6.rc0.15.gd513 segfaults when attempting to clone from a http://
repository if compiled without libcurl:

(gdb) run clone http://repo.or.cz/r/git-homepage.git/
[..]
error: git was compiled without libcurl support.

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0x080dd18d in transport_get_remote_refs (transport=0x814dbf0) at transport.c:795
#2  0x0805d24b in cmd_clone (argc=1, argv=0xbfda0ae8, prefix=0x0) at builtin-clone.c:461
#3  0x0804adbf in handle_internal_command (argc=2, argv=0xbfda0ae8) at git.c:249
#4  0x0804afa9 in main (argc=2, argv=0xbfda0ae8) at git.c:444
(gdb) up
#1  0x080dd18d in transport_get_remote_refs (transport=0x814dbf0) at transport.c:795
795                     transport->remote_refs = transport->get_refs_list(transport);

The underlying problem seems to be that at builtin-clone.c:160, no
error checking is done on the output of transport_get():

	transport = transport_get(remote, ref_git_copy);
	for (extra = transport_get_remote_refs(transport); extra;
	     extra = extra->next)
		add_extra_ref(extra->name, extra->old_sha1, 0);

But transport_get() never sets the ->get_refs_list() member if libcurl
wasn't enabled at compile time, cf. transport.c:738:

#ifdef NO_CURL
		error("git was compiled without libcurl support.");
#else
		ret->get_refs_list = get_refs_via_curl;
		ret->fetch = fetch_objs_via_curl;
		ret->push = curl_transport_push;
#endif

Some digging shows that at the time the above #ifdef was inserted
(ccfc02a3), there was no builtin-clone.c, so the error checking
probably got lost in the translation.

I'd attempt to write a patch, but it looks like I would have to read
into a lot of code for a fairly trivial issue, so I hope someone can
help me out with this...

- Thomas

-- 
Thomas Rast
trast@student.ethz.ch



[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 194 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-05-27 18:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-27  9:24 Segfault when cloning http:// without libcurl Thomas Rast
2008-05-27 14:28 ` [PATCH] clone: make sure we support the transport type Jeff King
2008-05-27 16:30   ` Mike Hommey
2008-05-27 17:49     ` Daniel Barkalow
2008-05-27 18:05   ` Daniel Barkalow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).