Commit bce94848 by Philip Kelley Committed by Carlos Martín Nieto

Fix assert when receiving uncommon sideband packet

parent cbd930f3
...@@ -433,6 +433,8 @@ static int write_at(git_indexer *idx, const void *data, git_off_t offset, size_t ...@@ -433,6 +433,8 @@ static int write_at(git_indexer *idx, const void *data, git_off_t offset, size_t
git_map map; git_map map;
int error; int error;
assert(data && size);
/* the offset needs to be at the beginning of the a page boundary */ /* the offset needs to be at the beginning of the a page boundary */
page_start = (offset / page_size) * page_size; page_start = (offset / page_size) * page_size;
page_offset = offset - page_start; page_offset = offset - page_start;
...@@ -451,6 +453,9 @@ static int append_to_pack(git_indexer *idx, const void *data, size_t size) ...@@ -451,6 +453,9 @@ static int append_to_pack(git_indexer *idx, const void *data, size_t size)
{ {
git_off_t current_size = idx->pack->mwf.size; git_off_t current_size = idx->pack->mwf.size;
if (!size)
return 0;
/* add the extra space we need at the end */ /* add the extra space we need at the end */
if (p_ftruncate(idx->pack->mwf.fd, current_size + size) < 0) { if (p_ftruncate(idx->pack->mwf.fd, current_size + size) < 0) {
giterr_set(GITERR_OS, "Failed to increase size of pack file '%s'", idx->pack->pack_name); giterr_set(GITERR_OS, "Failed to increase size of pack file '%s'", idx->pack->pack_name);
......
...@@ -592,6 +592,8 @@ int git_smart__download_pack( ...@@ -592,6 +592,8 @@ int git_smart__download_pack(
} }
} else if (pkt->type == GIT_PKT_DATA) { } else if (pkt->type == GIT_PKT_DATA) {
git_pkt_data *p = (git_pkt_data *) pkt; git_pkt_data *p = (git_pkt_data *) pkt;
if (p->len)
error = writepack->append(writepack, p->data, p->len, stats); error = writepack->append(writepack, p->data, p->len, stats);
} else if (pkt->type == GIT_PKT_FLUSH) { } else if (pkt->type == GIT_PKT_FLUSH) {
/* A flush indicates the end of the packfile */ /* A flush indicates the end of the packfile */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment