diff options
author | Junio C Hamano <junkio@cox.net> | 2006-12-19 01:38:18 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-12-19 01:38:18 -0800 |
commit | 5fed4668153c9ca6e44ec84a0976089f515705aa (patch) | |
tree | 82f3ce0d2ea76ca31cebd3a5b40d0993e019859a /patch-delta.c | |
parent | 63085fabbdeaad9eb8b29d39d0998c704e6cd232 (diff) | |
parent | 8683a45d66967b0969516a2b72cdbf136c2064a2 (diff) | |
download | git-5fed4668153c9ca6e44ec84a0976089f515705aa.tar.gz |
Merge branch 'jc/test-clone' into jc/clone
* jc/test-clone: (35 commits)
Introduce GIT_TEMPLATE_DIR
Revert "fix testsuite: make sure they use templates freshly built from the source"
fix testsuite: make sure they use templates freshly built from the source
rerere: fix breakage of resolving.
Add config example with respect to branch
Add documentation for show-branch --topics
make git a bit less cryptic on fetch errors
make patch_delta() error cases a bit more verbose
racy-git: documentation updates.
show-ref: fix --exclude-existing
parse-remote::expand_refs_wildcard()
vim syntax: follow recent changes to commit template
show-ref: fix --verify --hash=length
show-ref: fix --quiet --verify
avoid accessing _all_ loose refs in git-show-ref --verify
git-fetch: Avoid reading packed refs over and over again
Teach show-branch how to show ref-log data.
markup fix in svnimport documentation.
Documentation: new option -P for git-svnimport
Fix mis-mark-up in git-merge-file.txt documentation
...
Diffstat (limited to 'patch-delta.c')
-rw-r--r-- | patch-delta.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/patch-delta.c b/patch-delta.c index e3a1d425ee..ed9db81fa8 100644 --- a/patch-delta.c +++ b/patch-delta.c @@ -9,8 +9,7 @@ * published by the Free Software Foundation. */ -#include <stdlib.h> -#include <string.h> +#include "git-compat-util.h" #include "delta.h" void *patch_delta(const void *src_buf, unsigned long src_size, @@ -34,9 +33,7 @@ void *patch_delta(const void *src_buf, unsigned long src_size, /* now the result size */ size = get_delta_hdr_size(&data, top); - dst_buf = malloc(size + 1); - if (!dst_buf) - return NULL; + dst_buf = xmalloc(size + 1); dst_buf[size] = 0; out = dst_buf; @@ -55,13 +52,13 @@ void *patch_delta(const void *src_buf, unsigned long src_size, if (cp_off + cp_size < cp_size || cp_off + cp_size > src_size || cp_size > size) - goto bad; + break; memcpy(out, (char *) src_buf + cp_off, cp_size); out += cp_size; size -= cp_size; } else if (cmd) { if (cmd > size) - goto bad; + break; memcpy(out, data, cmd); out += cmd; data += cmd; @@ -72,12 +69,14 @@ void *patch_delta(const void *src_buf, unsigned long src_size, * extensions. In the mean time we must fail when * encountering them (might be data corruption). */ + error("unexpected delta opcode 0"); goto bad; } } /* sanity check */ if (data != top || size != 0) { + error("delta replay has gone wild"); bad: free(dst_buf); return NULL; |