From 411823a3d0614d1268c84bd2add1b65b281ec824 Mon Sep 17 00:00:00 2001 From: Sergey Nikishin Date: Sun, 24 Apr 2011 16:02:57 +0400 Subject: [PATCH 1/2] Fix whole buffer writing in fake wstream --- src/odb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/odb.c b/src/odb.c index 43d0ef9a4..b87f84703 100644 --- a/src/odb.c +++ b/src/odb.c @@ -170,7 +170,7 @@ static int fake_wstream__write(git_odb_stream *_stream, const char *data, size_t { fake_wstream *stream = (fake_wstream *)_stream; - if (stream->written + len >= stream->size) + if (stream->written + len > stream->size) return GIT_ENOMEM; memcpy(stream->buffer + stream->written, data, len); From 1d1735fe03a53482c6545252bd567555d5d9b487 Mon Sep 17 00:00:00 2001 From: Sergey Nikishin Date: Sun, 24 Apr 2011 18:33:50 +0400 Subject: [PATCH 2/2] Add error processing in git_blob_create_frombuffer() --- src/blob.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/blob.c b/src/blob.c index 5e3c22fbf..69a0b954b 100644 --- a/src/blob.c +++ b/src/blob.c @@ -64,7 +64,10 @@ int git_blob_create_frombuffer(git_oid *oid, git_repository *repo, const void *b if ((error = git_odb_open_wstream(&stream, repo->db, len, GIT_OBJ_BLOB)) < GIT_SUCCESS) return error; - stream->write(stream, buffer, len); + if ((error = stream->write(stream, buffer, len)) < GIT_SUCCESS) { + stream->free(stream); + return error; + } error = stream->finalize_write(oid, stream); stream->free(stream);