diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-03-06 22:57:07 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-06 22:06:46 -0800 |
commit | 8315588b59bea45c4b82451cc3ac337fa5c68526 (patch) | |
tree | 163dfd0bb02f78bfd40063ad7d9890c043eb3845 /builtin-bundle.c | |
parent | 8839ac9442c9ded41bfa369a142fd2e659a44377 (diff) | |
download | git-8315588b59bea45c4b82451cc3ac337fa5c68526.tar.gz |
bundle: fix wrong check of read_header()'s return value & add tests
If read_header() fails, it returns <0, not 0. Further, an open(/dev/null)
was not checked for errors.
Also, this adds two tests to make sure that the bundle file looks
correct, by checking if it has the header has the expected form, and that
the pack contains the right amount of objects.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-bundle.c')
-rw-r--r-- | builtin-bundle.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin-bundle.c b/builtin-bundle.c index d0c361763c..3b3bc2582d 100644 --- a/builtin-bundle.c +++ b/builtin-bundle.c @@ -404,6 +404,8 @@ static int unbundle(struct bundle_header *header, int bundle_fd, if (verify_bundle(header, 0)) return -1; dev_null = open("/dev/null", O_WRONLY); + if (dev_null < 0) + return error("Could not open /dev/null"); pid = fork_with_pipe(argv_index_pack, &bundle_fd, &dev_null); if (pid < 0) return error("Could not spawn index-pack"); @@ -440,7 +442,7 @@ int cmd_bundle(int argc, const char **argv, const char *prefix) memset(&header, 0, sizeof(header)); if (strcmp(cmd, "create") && - !(bundle_fd = read_header(bundle_file, &header))) + (bundle_fd = read_header(bundle_file, &header)) < 0) return 1; if (!strcmp(cmd, "verify")) { |