提交 8418245a 编写于 作者: C Cole Robinson

lxc: fuse: Fix /proc/meminfo size calculation

We virtualize bits of /proc/meminfo by replacing host values with
values specific to the container.

However for calculating the final size of the returned data, we are
using the size of the original file and not the altered copy, which
could give garbelled output.
上级 f65dcfcd
......@@ -131,7 +131,6 @@ static int lxcProcHostRead(char *path, char *buf, size_t size, off_t offset)
static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
char *buf, size_t size, off_t offset)
{
int copied = 0;
int res;
FILE *fd = NULL;
char *line = NULL;
......@@ -159,7 +158,7 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
}
res = -1;
while (copied < size && getline(&line, &n, fd) > 0) {
while (getline(&line, &n, fd) > 0) {
char *ptr = strchr(line, ':');
if (!ptr)
continue;
......@@ -219,13 +218,11 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
res = -errno;
goto cleanup;
}
copied += strlen(line);
if (copied > size)
copied = size;
}
res = copied;
memcpy(buf, virBufferCurrentContent(new_meminfo), copied);
res = strlen(virBufferCurrentContent(new_meminfo));
if (res > size)
res = size;
memcpy(buf, virBufferCurrentContent(new_meminfo), res);
cleanup:
VIR_FREE(line);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册