neocgit

a more 'modern' version of cgit
Log | Files | Refs | Submodules | README | LICENSE | git clone https://git.ne02ptzero.me/git/neocgit

commit 33bc949a1e927e14479568518bd92e70998e25f8
parent 3fbfced7401cfcbb8006a9a6ce4add6b37a41a55
Author: John Keeping <john@keeping.me.uk>
Date:   Sat, 16 Jan 2016 11:03:07 +0000

cache: don't check for match with no key

We call open_slot() from cache_ls() without a key since we simply want
to read the path out of the header.  Should the file happen to contain
an empty key then we end up calling memcmp() with NULL and a non-zero
length.  Fix this by assigning slot->match only if a key is set, which
is always will be in the code paths where we use slot->match.

Coverity-id: 13807
Signed-off-by: John Keeping <john@keeping.me.uk>

Diffstat:
Mcache.c | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cache.c b/cache.c @@ -61,8 +61,9 @@ static int open_slot(struct cache_slot *slot) if (bufz) bufkeylen = bufz - slot->buf; - slot->match = bufkeylen == slot->keylen && - !memcmp(slot->key, slot->buf, bufkeylen + 1); + if (slot->key) + slot->match = bufkeylen == slot->keylen && + !memcmp(slot->key, slot->buf, bufkeylen + 1); return 0; }