summaryrefslogtreecommitdiff
path: root/http-walker.c
diff options
context:
space:
mode:
authorTay Ray Chuan <rctay89@gmail.com>2009-06-06 08:43:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-06-06 17:30:16 (GMT)
commit16493eb0d0da26f80286b39c7b6900e261744afa (patch)
tree0bb792b08d7d27741aa2c2f4d5dc5fc97117ce26 /http-walker.c
parentb74fce16fa51362d4a3875d46e488006c3ad5371 (diff)
downloadgit-16493eb0d0da26f80286b39c7b6900e261744afa.zip
git-16493eb0d0da26f80286b39c7b6900e261744afa.tar.gz
git-16493eb0d0da26f80286b39c7b6900e261744afa.tar.bz2
http*: cleanup slot->local after fclose
Set slot->local to NULL after doing a fclose() on the file it points to. This prevents the passing of a FILE* pointer to a fclose()'d file to ftell() in http.c::run_active_slot(). This issue was raised by Clemens Buchacher on 30th May 2009: http://www.spinics.net/lists/git/msg104623.html Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http-walker.c')
-rw-r--r--http-walker.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/http-walker.c b/http-walker.c
index c5a3ea3..ec1c97f 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -418,15 +418,18 @@ static int fetch_index(struct walker *walker, struct alt_base *repo, unsigned ch
run_active_slot(slot);
if (results.curl_result != CURLE_OK) {
fclose(indexfile);
+ slot->local = NULL;
return error("Unable to get pack index %s\n%s", url,
curl_errorstr);
}
} else {
fclose(indexfile);
+ slot->local = NULL;
return error("Unable to start request");
}
fclose(indexfile);
+ slot->local = NULL;
return move_temp_to_file(tmpfile, filename);
}
@@ -776,16 +779,19 @@ static int fetch_pack(struct walker *walker, struct alt_base *repo, unsigned cha
run_active_slot(slot);
if (results.curl_result != CURLE_OK) {
fclose(packfile);
+ slot->local = NULL;
return error("Unable to get pack file %s\n%s", url,
curl_errorstr);
}
} else {
fclose(packfile);
+ slot->local = NULL;
return error("Unable to start request");
}
target->pack_size = ftell(packfile);
fclose(packfile);
+ slot->local = NULL;
ret = move_temp_to_file(tmpfile, filename);
if (ret)