containerfs: fix memory leak

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2018-06-28 12:23:57 +02:00
parent 554264ce1e
commit 09771b9864
No known key found for this signature in database
GPG Key ID: E4730F97F60286ED

24
main.c
View File

@ -1169,7 +1169,7 @@ lo_do_readdir (fuse_req_t req, fuse_ino_t ino, size_t size,
return;
}
p = buffer;
while (remaining > 0 && offset < d->tbl_size)
for (;remaining > 0 && offset < d->tbl_size; offset++)
{
int ret;
size_t entsize;
@ -1187,19 +1187,13 @@ lo_do_readdir (fuse_req_t req, fuse_ino_t ino, size_t size,
if (node->parent)
node = node->parent;
else
{
offset++;
continue;
}
continue;
}
else
{
node = do_lookup_file (lo, ino, name);
if (node == NULL)
{
offset++;
continue;
}
continue;
}
ret = rpl_stat (req, node, &st);
@ -1219,19 +1213,21 @@ lo_do_readdir (fuse_req_t req, fuse_ino_t ino, size_t size,
e.attr_timeout = ATTR_TIMEOUT;
e.entry_timeout = ENTRY_TIMEOUT;
e.ino = NODE_TO_INODE (node);
if ((strcmp (name, ".") != 0) && (strcmp (name, "..") != 0))
node->lookups++;
memcpy (&e.attr, &st, sizeof (st));
entsize = fuse_add_direntry_plus (req, p, remaining, name, &e, offset + 1);
}
p += entsize;
offset++;
if (entsize <= remaining)
{
if ((strcmp (name, ".") != 0) && (strcmp (name, "..") != 0))
node->lookups++;
}
}
if (entsize > remaining)
break;
p += entsize;
remaining -= entsize;
}
fuse_reply_buf (req, buffer, size - remaining);