mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-05 03:52:10 +00:00
pack-objects: unlock the cache on integer overflow
This commit is contained in:
parent
d97d9559e3
commit
0f07d54b44
@ -832,13 +832,14 @@ static int try_delta(git_packbuilder *pb, struct unpacked *trg,
|
|||||||
trg_object->delta_data = NULL;
|
trg_object->delta_data = NULL;
|
||||||
}
|
}
|
||||||
if (delta_cacheable(pb, src_size, trg_size, delta_size)) {
|
if (delta_cacheable(pb, src_size, trg_size, delta_size)) {
|
||||||
if (git__add_uint64_overflow(&pb->delta_cache_size, pb->delta_cache_size, delta_size))
|
bool overflow = git__add_uint64_overflow(
|
||||||
return -1;
|
&pb->delta_cache_size, pb->delta_cache_size, delta_size);
|
||||||
|
|
||||||
git_packbuilder__cache_unlock(pb);
|
git_packbuilder__cache_unlock(pb);
|
||||||
|
|
||||||
trg_object->delta_data = git__realloc(delta_buf, delta_size);
|
if (overflow ||
|
||||||
GITERR_CHECK_ALLOC(trg_object->delta_data);
|
!(trg_object->delta_data = git__realloc(delta_buf, delta_size)))
|
||||||
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
/* create delta when writing the pack */
|
/* create delta when writing the pack */
|
||||||
git_packbuilder__cache_unlock(pb);
|
git_packbuilder__cache_unlock(pb);
|
||||||
|
Loading…
Reference in New Issue
Block a user