toolchain upgrade: fix warn for string truncation or overflow 96/221396/2
authorJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 2 Jan 2020 05:10:36 +0000 (14:10 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 2 Jan 2020 05:15:10 +0000 (05:15 +0000)
toolchain upgrade(GCC-9) in Tizen 6.0

Change-Id: Ia59984091cbdcac61b2f68dac7ea0e04454db6c8

src/bin/e_comp_wl_input.c
src/bin/e_comp_wl_rsm.c
src/bin/e_info_client.c
src/bin/e_main.c
src/bin/e_module.c

index f3c4948..86fc79c 100644 (file)
@@ -419,10 +419,10 @@ _e_comp_wl_input_keymap_fd_get(off_t size)
    path = e_util_env_get("XDG_RUNTIME_DIR");
    if (!path) return -1;
 
-   len = strlen(path);
+   len = strlen(path) + 19;
    if (len < blen)
      {
-        strncpy(tmp, path, len + 1);
+        strncpy(tmp, path, PATH_MAX - 20);
         strncat(tmp, "/e-wl-keymap-XXXXXX", 19);
         E_FREE(path);
      }
index 6cc307b..e62301c 100644 (file)
@@ -1147,7 +1147,7 @@ _remote_source_default_path_get(E_Client *ec, Eina_Stringshare** dir, Eina_Strin
 {
    char name[1024];
    char dest_dir[1024];
-   char dest[2048];
+   char dest[PATH_MAX];
    char *run_dir;
    int id = 0;
 
@@ -2808,10 +2808,10 @@ _e_comp_wl_remote_surface_dummy_fd_get(void)
    path = e_util_env_get("XDG_RUNTIME_DIR");
    if (!path) return -1;
 
-   len = strlen(path);
+   len = strlen(path) + 34;
    if (len < blen)
      {
-        strncpy(buf, path, len + 1);
+        strncpy(buf, path, PATH_MAX - 35);
         strncat(buf, "/enlightenment_rsm_dummy_fdXXXXXX", 34);
         E_FREE(path);
      }
index 680370f..9f9e4bd 100644 (file)
@@ -881,7 +881,7 @@ finish:
 static void
 _e_info_client_proc_protocol_trace(int argc, char **argv)
 {
-   char fd_name[PATH_MAX];
+   char fd_name[PATH_MAX + PATH_MAX];
    int pid;
    char cwd[PATH_MAX];
 
@@ -898,11 +898,11 @@ _e_info_client_proc_protocol_trace(int argc, char **argv)
      snprintf(cwd, sizeof(cwd), "/tmp");
 
    if (!strncmp(argv[2], "console", 7))
-     snprintf(fd_name, PATH_MAX, "/proc/%d/fd/1", pid);
+     snprintf(fd_name, sizeof(fd_name), "/proc/%d/fd/1", pid);
    else if (!strncmp(argv[2], "elog", 4))
-     snprintf(fd_name, PATH_MAX, "elog");
+     snprintf(fd_name, sizeof(fd_name), "elog");
    else if (!strncmp(argv[2], "disable", 7))
-     snprintf(fd_name, PATH_MAX, "disable");
+     snprintf(fd_name, sizeof(fd_name), "disable");
    else
      {
         if (argv[2][0] == '/')
@@ -910,9 +910,9 @@ _e_info_client_proc_protocol_trace(int argc, char **argv)
         else
           {
              if (strlen(cwd) > 0)
-               snprintf(fd_name, PATH_MAX, "%s/%s", cwd, argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s/%s", cwd, argv[2]);
              else
-               snprintf(fd_name, PATH_MAX, "%s", argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s", argv[2]);
           }
      }
 
@@ -1417,7 +1417,7 @@ _e_info_client_proc_module_info(int argc, char **argv)
 static void
 _e_info_client_proc_keygrab_status(int argc, char **argv)
 {
-   char fd_name[PATH_MAX];
+   char fd_name[PATH_MAX + PATH_MAX];
    int pid;
    char cwd[PATH_MAX];
 
@@ -1434,17 +1434,17 @@ _e_info_client_proc_keygrab_status(int argc, char **argv)
      snprintf(cwd, sizeof(cwd), "/tmp");
 
    if (!strncmp(argv[2], "console", sizeof("console")))
-     snprintf(fd_name, PATH_MAX, "/proc/%d/fd/1", pid);
+     snprintf(fd_name, sizeof(fd_name), "/proc/%d/fd/1", pid);
    else
      {
         if (argv[2][0] == '/')
-          snprintf(fd_name, PATH_MAX, "%s", argv[2]);
+          snprintf(fd_name, sizeof(fd_name), "%s", argv[2]);
         else
           {
              if (strlen(cwd) > 0)
-               snprintf(fd_name, PATH_MAX, "%s/%s", cwd, argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s/%s", cwd, argv[2]);
              else
-               snprintf(fd_name, PATH_MAX, "%s", argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s", argv[2]);
           }
      }
 
@@ -1455,7 +1455,7 @@ _e_info_client_proc_keygrab_status(int argc, char **argv)
 static char *
 _directory_make(char *type, char *path)
 {
-   char dir[PATH_MAX], curdir[PATH_MAX], stamp[PATH_MAX];
+   char dir[2048], curdir[1024], stamp[256];
    time_t timer;
    struct tm *t, *buf;
    char *fullpath;
@@ -1483,10 +1483,10 @@ _directory_make(char *type, char *path)
      }
 
    if (path && path[0] == '/')
-     snprintf(dir, PATH_MAX, "%s", path);
+     snprintf(dir, sizeof(dir), "%s", path);
    else
      {
-        char *temp = getcwd(curdir, PATH_MAX);
+        char *temp = getcwd(curdir, 1024);
         if (!temp)
           {
              free(buf);
@@ -1495,13 +1495,19 @@ _directory_make(char *type, char *path)
           }
         if (path)
           {
-             if (strlen(curdir) == 1 && curdir[0] == '/')
-               snprintf(dir, PATH_MAX, "/%s", path);
+             int len, cur_len;
+             cur_len = strlen(curdir);
+             len = sizeof(dir) - strlen(path) - cur_len - 2;
+
+             if (cur_len == 1 && curdir[0] == '/')
+               snprintf(dir, sizeof(dir), "/%s", path);
+             else if (len > 0)
+               snprintf(dir, sizeof(dir), "%s/%s", curdir, path);
              else
-               snprintf(dir, PATH_MAX, "%s/%s", curdir, path);
+               return NULL;
           }
         else
-          snprintf(dir, PATH_MAX, "%s", curdir);
+          snprintf(dir, sizeof(dir), "%s", curdir);
      }
 
    if (!(dp = opendir (dir)))
@@ -1515,7 +1521,7 @@ _directory_make(char *type, char *path)
       closedir (dp);
 
    /* make the folder for the result of xwd files */
-   snprintf(stamp, PATH_MAX, "%04d%02d%02d.%02d%02d%02d", t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
+   snprintf(stamp, sizeof(stamp), "%04d%02d%02d.%02d%02d%02d", t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
 
    if (strlen(dir) == 1 && dir[0] == '/')
      snprintf(fullpath, PATH_MAX, "/%s-%s", type, stamp);
@@ -1727,7 +1733,7 @@ _e_info_client_proc_eina_log_levels(int argc, char **argv)
 static void
 _e_info_client_proc_eina_log_path(int argc, char **argv)
 {
-   char fd_name[PATH_MAX];
+   char fd_name[PATH_MAX + PATH_MAX];
    int pid;
    char cwd[PATH_MAX];
 
@@ -1741,17 +1747,17 @@ _e_info_client_proc_eina_log_path(int argc, char **argv)
      snprintf(cwd, sizeof(cwd), "/tmp");
 
    if (!strncmp(argv[2], "console", 7))
-     snprintf(fd_name, PATH_MAX, "/proc/%d/fd/1", pid);
+     snprintf(fd_name, sizeof(fd_name), "/proc/%d/fd/1", pid);
    else
      {
         if (argv[2][0] == '/')
-          snprintf(fd_name, PATH_MAX, "%s", argv[2]);
+          snprintf(fd_name, sizeof(fd_name), "%s", argv[2]);
         else
           {
              if (strlen(cwd) > 0)
-               snprintf(fd_name, PATH_MAX, "%s/%s", cwd, argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s/%s", cwd, argv[2]);
              else
-               snprintf(fd_name, PATH_MAX, "%s", argv[2]);
+               snprintf(fd_name, sizeof(fd_name), "%s", argv[2]);
           }
      }
 
@@ -2460,7 +2466,7 @@ _e_info_client_proc_transform_set(int argc, char **argv)
 static char *
 _buffer_shot_directory_check(char *path)
 {
-   char dir[PATH_MAX], curdir[PATH_MAX];
+   char dir[PATH_MAX], curdir[1024];
    char *fullpath;
    DIR *dp;
 
@@ -2475,7 +2481,7 @@ _buffer_shot_directory_check(char *path)
      snprintf(dir, PATH_MAX, "%s", path);
    else
      {
-        char *temp = getcwd(curdir, PATH_MAX);
+        char *temp = getcwd(curdir, 1024);
         if (!temp)
           {
              free(fullpath);
index a605198..a135712 100644 (file)
@@ -148,7 +148,7 @@ _xdg_data_dirs_augment(void)
 {
    char *s;
    const char *p = e_prefix_get();
-   char newpath[4096], buf[4096];
+   char newpath[PATH_MAX], buf[PATH_MAX + PATH_MAX + 200];
 
    if (!p) return;
 
@@ -850,7 +850,7 @@ _e_main_shutdown(int errcode)
    dir = e_util_env_get("XDG_RUNTIME_DIR");
    if (dir)
      {
-        char buf_env[PATH_MAX];
+        char buf_env[PATH_MAX - 12];
         snprintf(buf_env, sizeof(buf_env), "%s", dir);
         snprintf(buf, sizeof(buf), "%s/.e-deleteme", buf_env);
         if (ecore_file_exists(buf)) ecore_file_recursive_rm(buf_env);
index 3456550..4543667 100644 (file)
@@ -320,7 +320,7 @@ e_module_new(const char *name)
 {
    E_Module *m;
    char buf[PATH_MAX];
-   char body[4096], title[1024];
+   char body[8192], title[1024];
    const char *modpath = NULL;
    char *s;
    Eina_List *l, *ll;