[PATCH 2/4] lxc: fuse: Fix /proc/meminfo size calculation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
---
 src/lxc/lxc_fuse.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c
index 86c0d10..ffa6889 100644
--- a/src/lxc/lxc_fuse.c
+++ b/src/lxc/lxc_fuse.c
@@ -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);
-- 
2.5.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]