git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] Prevent git-upload-pack segfault if object cannot be found
@ 2006-02-22 18:17 Andrew Vasquez
  2006-02-22 18:26 ` Junio C Hamano
  2006-02-22 18:44 ` Carl Worth
  0 siblings, 2 replies; 10+ messages in thread
From: Andrew Vasquez @ 2006-02-22 18:17 UTC (permalink / raw)
  To: git


Commit:

	b5b16990f8b074bd0481ced047b8f8bf66eee6dc
	Prevent git-upload-pack segfault if object cannot be found

is causing some really annoying noise being sent to stderr on some of
my older non-packed repositories:

	$ git status
	# On branch refs/heads/b4
	unable to open object pack directory: .git/objects/pack: No such file or directory
	nothing to commit

	$ git-rev-list --pretty=oneline v8.01.04b3..
	unable to open object pack directory: .git/objects/pack: No such file or directory
	a7401b7109fb2cba7de41a0e30dfe6aa41690ea8 No ZIO.
	...


Here's the relevant hunk:

> diff --git a/sha1_file.c b/sha1_file.c
> index 3d11a9b..f08b1d6 100644
> --- a/sha1_file.c
> +++ b/sha1_file.c
> @@ -551,8 +551,10 @@ static void prepare_packed_git_one(char 
>  	sprintf(path, "%s/pack", objdir);
>  	len = strlen(path);
>  	dir = opendir(path);
> -	if (!dir)
> +	if (!dir) {
> +		fprintf(stderr, "unable to open object pack directory: %s: %s\n", path, strerror(errno));
>  		return;
> +	}
>  	path[len++] = '/';
>  	while ((de = readdir(dir)) != NULL) {
>  		int namelen = strlen(de->d_name);


Could we drop this fprintf to stderr?

Thanks,
Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread
* [PATCH] Prevent git-upload-pack segfault if object cannot be found
@ 2006-02-18  0:14 Carl Worth
  2006-02-18  6:50 ` Junio C Hamano
  0 siblings, 1 reply; 10+ messages in thread
From: Carl Worth @ 2006-02-18  0:14 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

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

Signed-off-by: Carl Worth <cworth@cworth.org>

---

It's probably a just-don't-do-that situation, but I did-it by moving a
directory that had already been cached in objects/info/alternates by
clone -l -s. Here's a fix for the segfault that that turned up.

Probably trivial enough to not bother the list with, but I'm still
learning about formatting patches and mails and things, so I'm open to
any feedback if I'm getting anything wrong.

 sha1_file.c   |    4 +++-
 upload-pack.c |    3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/sha1_file.c b/sha1_file.c
index 64cf245..1d799f7 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -551,8 +551,10 @@ static void prepare_packed_git_one(char 
 	sprintf(path, "%s/pack", objdir);
 	len = strlen(path);
 	dir = opendir(path);
-	if (!dir)
+	if (!dir) {
+		fprintf(stderr, "unable to open object pack directory: %s: %s\n", path, strerror(errno));
 		return;
+	}
 	path[len++] = '/';
 	while ((de = readdir(dir)) != NULL) {
 		int namelen = strlen(de->d_name);
diff --git a/upload-pack.c b/upload-pack.c
index d198055..3606529 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -216,6 +216,9 @@ static int send_ref(const char *refname,
 	static char *capabilities = "multi_ack";
 	struct object *o = parse_object(sha1);
 
+	if (!o)
+		die("git-upload-pack: cannot find object %s:", sha1_to_hex(sha1));
+
 	if (capabilities)
 		packet_write(1, "%s %s%c%s\n", sha1_to_hex(sha1), refname,
 			0, capabilities);

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

end of thread, other threads:[~2006-02-23  1:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-22 18:17 [PATCH] Prevent git-upload-pack segfault if object cannot be found Andrew Vasquez
2006-02-22 18:26 ` Junio C Hamano
2006-02-22 18:44 ` Carl Worth
2006-02-22 18:50   ` Junio C Hamano
2006-02-22 19:11   ` Junio C Hamano
2006-02-22 19:16     ` Carl Worth
2006-02-23  0:34     ` Jonas Fonseca
2006-02-23  1:48       ` [PATCH] Give no terminating LF to error() function Junio C Hamano
  -- strict thread matches above, loose matches on Subject: below --
2006-02-18  0:14 [PATCH] Prevent git-upload-pack segfault if object cannot be found Carl Worth
2006-02-18  6:50 ` Junio C Hamano

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).