]> git.proxmox.com Git - libgit2.git/commit
index: fix contradicting comparison
authorPatrick Steinhardt <ps@pks.im>
Tue, 23 Feb 2016 10:23:26 +0000 (11:23 +0100)
committerPatrick Steinhardt <ps@pks.im>
Tue, 23 Feb 2016 11:07:14 +0000 (12:07 +0100)
commit0f1e2d2066115e62fd7396e0f436b4a5dd8384cd
tree1a1bd1bb3a67d671d135d7f3b7a74e73a3ec2e92
parent7808c93797b3fa9f552bd2e24672089b8d27ad2a
index: fix contradicting comparison

The overflow check in `read_reuc` tries to verify if the
`git__strtol32` parses an integer bigger than UINT_MAX. The `tmp`
variable is casted to an unsigned int for this and then checked
for being greater than UINT_MAX, which obviously can never be
true.

Fix this by instead fixing the `mode` field's size in `struct
git_index_reuc_entry` to `uint32_t`. We can now parse the int
with `git__strtol64`, which can never return a value bigger than
`UINT32_MAX`, and additionally checking if the returned value is
smaller than zero.

We do not need to handle overflows explicitly here, as
`git__strtol64` returns an error when the returned value would
overflow.
include/git2/sys/index.h
src/index.c