libcgroup compiled with various optimization flags produce strange results
when sprintf's destination and source pointers overlap or are the same.

In addition, use strncpy() instead. This is more or less useless, because
cg_build_path() does not check sizes either, but just for my personal feeling
of correct C code...

Signed-off-by: Jan Safranek <[email protected]>
---

 src/api.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/api.c b/src/api.c
index 5409c9c..dcdd75b 100644
--- a/src/api.c
+++ b/src/api.c
@@ -2848,6 +2848,7 @@ int cgroup_read_stats_begin(const char *controller, const 
char *path,
 {
        int ret = 0;
        char stat_file[FILENAME_MAX];
+       char stat_path[FILENAME_MAX];
        FILE *fp;
 
        if (!cgroup_initialized)
@@ -2856,10 +2857,11 @@ int cgroup_read_stats_begin(const char *controller, 
const char *path,
        if (!cgroup_stat || !handle)
                return ECGINVAL;
 
-       if (!cg_build_path(path, stat_file, controller))
+       if (!cg_build_path(path, stat_path, controller))
                return ECGOTHER;
 
-       sprintf(stat_file, "%s/%s.stat", stat_file, controller);
+       snprintf(stat_file, sizeof(stat_file), "%s/%s.stat", stat_path,
+                       controller);
 
        fp = fopen(stat_file, "re");
        if (!fp) {


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to