Check valid range 88/125788/2 accepted/tizen/unified/20170419.165410 submit/tizen/20170419.094909
authorKichan Kwon <k_c.kwon@samsung.com>
Wed, 19 Apr 2017 01:15:31 +0000 (10:15 +0900)
committerKichan Kwon <k_c.kwon@samsung.com>
Wed, 19 Apr 2017 01:25:20 +0000 (10:25 +0900)
- Use snprintf instead of sprintf
- Check positive pid and pgid

Change-Id: I147fb011bbfe3350c1aa57070d61d3de3771d99f
Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
src/memory/memcontrol.c
src/memory/vmpressure-lowmem-handler.c

index f972af7..44750ed 100644 (file)
@@ -192,14 +192,14 @@ int memcg_set_eventfd(const char *memcg, const char *event, char *value)
                return RESOURCED_ERROR_FAIL;
 
        /* open a node of memory cgroup */
-       sprintf(buf, "%s/%s", memcg, MEMCG_EVENTFD_CONTROL);
+       snprintf(buf, PATH_MAX, "%s/%s", memcg, MEMCG_EVENTFD_CONTROL);
        cgfd = open(buf, O_WRONLY);
        if (cgfd < 0) {
                _E("open event_control failed");
                return RESOURCED_ERROR_FAIL;
        }
 
-       sprintf(buf, "%s/%s", memcg, event);
+       snprintf(buf, PATH_MAX, "%s/%s", memcg, event);
        mcgfd = open(buf, O_RDONLY);
        if (mcgfd < 0) {
                _E("open memory control failed");
@@ -208,7 +208,7 @@ int memcg_set_eventfd(const char *memcg, const char *event, char *value)
 
        _D("%s %s %s registerd", memcg, event, value);
        /* write string like "<event_fd> <opened fd> <value>" to cgroup.event_control */
-       sz = sprintf(buf, "%d %d %s", evfd, mcgfd, value);
+       sz = snprintf(buf, PATH_MAX, "%d %d %s", evfd, mcgfd, value);
        sz += 1;
        res = write(cgfd, buf, sz);
        if (res != sz) {
@@ -216,4 +216,4 @@ int memcg_set_eventfd(const char *memcg, const char *event, char *value)
                return RESOURCED_ERROR_FAIL;
        }
        return evfd;
-}
\ No newline at end of file
+}
index a932364..2e04fda 100644 (file)
@@ -695,8 +695,11 @@ static int lowmem_get_pids_proc(GArray *pids)
                        continue;
 
                pid = (pid_t)atoi(dentry->d_name);
+               if (pid < 0)
+                       continue;
+
                pgid = getpgid(pid);
-               if (!pgid)
+               if (pgid < 0)
                        continue;
 
                if (proc_get_oom_score_adj(pid, &oom) < 0) {