Author: John Keeping <john@keeping.me.uk>
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>
cache.c | 5 +++--
diff --git a/cache.c b/cache.c index df1b4a31b56dfc9520c57706587f0159bc0b72d1..6736a017b2fce59608dac7318cbafac518045c3c 100644 --- a/cache.c +++ b/cache.c @@ -61,8 +61,9 @@ bufz = memchr(slot->buf, 0, slot->bufsize); 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; }