patch prevent defect
authorgiyeol.ok <giyeol.ok@samsung.com>
Wed, 24 Oct 2012 03:52:16 +0000 (12:52 +0900)
committergiyeol.ok <giyeol.ok@samsung.com>
Wed, 24 Oct 2012 03:52:16 +0000 (12:52 +0900)
ss_bs.c
ss_cpu_handler.c
ss_device_change_handler.c
ss_launch.c
ss_lowmem_handler.c
ss_main.c
ss_mmc_handler.c
ss_pmon_handler.c
ss_predefine.c
ss_queue.c
ss_sysnoti.c

diff --git a/ss_bs.c b/ss_bs.c
index 3c8cc0f..fc694a2 100644 (file)
--- a/ss_bs.c
+++ b/ss_bs.c
@@ -56,7 +56,8 @@ static int make_noti_file(const char *path, const char *file)
        if (access(buf, F_OK) == 0)
                return -1;
 
-       fd = open(buf, O_CREAT, S_IRUSR | S_IWUSR);
+       if ((fd = open(buf, O_CREAT, S_IRUSR | S_IWUSR)) < 0)
+               return -1;
        close(fd);
        snprintf(buf, sizeof(buf), "chmod 666 %s/%s", path, file);
        system(buf);
@@ -136,7 +137,7 @@ static Ecore_File_Monitor_Cb __bs_file_cb(void *data, Ecore_File_Monitor *em, Ec
                break;
        }
 
-       return;
+       return NULL;
 }
 
 int ss_bs_init(void)
index c9881ff..296809e 100644 (file)
@@ -149,13 +149,17 @@ static int power_saving_cb(keynode_t *key_nodes, void *data)
 
        power_saving_stat = vconf_keynode_get_bool(key_nodes);
        if (power_saving_stat == 1) {
-               vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_CPU, &power_saving_cpu_stat);
-               if (power_saving_cpu_stat == 1) {
-                       ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
-                       if (ret < 0) {
-                               PRT_TRACE_ERR("Add entry failed");
-                               return -1;
+               if (vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_CPU, &power_saving_cpu_stat) == 0) {
+                       if (power_saving_cpu_stat == 1) {
+                               ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
+                               if (ret < 0) {
+                                       PRT_TRACE_ERR("Add entry failed");
+                                       return -1;
+                               }
                        }
+               } else {
+                       PRT_TRACE_ERR("failed to get vconf key");
+                       return -1;
                }
        } else {
                ret = __remove_entry_from_max_cpu_freq_list(getpid());
@@ -181,29 +185,33 @@ static int power_saving_cpu_cb(keynode_t *key_nodes, void *data)
        int power_saving_stat = -1;
        int power_saving_cpu_stat = -1;
 
-       vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &power_saving_stat);
-       if (power_saving_stat == 1) {
-               power_saving_cpu_stat = vconf_keynode_get_bool(key_nodes);
-               if (power_saving_cpu_stat == 1) {
-                       ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
-                       if (ret < 0) {
-                               PRT_TRACE_ERR("Add entry failed");
-                               return -1;
+       if (vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &power_saving_stat) == 0) {
+               if (power_saving_stat == 1) {
+                       power_saving_cpu_stat = vconf_keynode_get_bool(key_nodes);
+                       if (power_saving_cpu_stat == 1) {
+                               ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
+                               if (ret < 0) {
+                                       PRT_TRACE_ERR("Add entry failed");
+                                       return -1;
+                               }
+                       } else {
+                               ret = __remove_entry_from_max_cpu_freq_list(getpid());
+                               if (ret < 0) {
+                                       PRT_TRACE_ERR("Remove entry failed");
+                                       return -1;
+                               }
+                               if (cur_max_cpu_freq == INT_MAX)
+                                       cur_max_cpu_freq = max_cpu_freq_limit;
                        }
-               } else {
-                       ret = __remove_entry_from_max_cpu_freq_list(getpid());
+                       ret = __write_max_cpu_freq(cur_max_cpu_freq);
                        if (ret < 0) {
-                               PRT_TRACE_ERR("Remove entry failed");
+                               PRT_TRACE_ERR("Write failed");
                                return -1;
                        }
-                       if (cur_max_cpu_freq == INT_MAX)
-                               cur_max_cpu_freq = max_cpu_freq_limit;
-               }
-               ret = __write_max_cpu_freq(cur_max_cpu_freq);
-               if (ret < 0) {
-                       PRT_TRACE_ERR("Write failed");
-                       return -1;
                }
+       } else {
+               PRT_TRACE_ERR("failed to get vconf key");
+               return -1;
        }
 
        return 0;
@@ -243,20 +251,27 @@ static void __set_freq_limit()
        /* check power saving */
        int power_saving_stat = -1;
        int power_saving_cpu_stat = -1;
-       vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &power_saving_stat);
-       if (power_saving_stat == 1)
-               vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_CPU, &power_saving_cpu_stat);
-       if (power_saving_cpu_stat == 1) {
-               ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
-               if (ret < 0) {
-                       PRT_TRACE_ERR("Add entry failed");
-                       return;
-               }
-               ret = __write_max_cpu_freq(cur_max_cpu_freq);
-               if (ret < 0) {
-                       PRT_TRACE_ERR("Write entry failed");
-                       return;
+       if (vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_SYSMODE_STATUS, &power_saving_stat) == 0) {
+               if (power_saving_stat == 1) {
+                       if (vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_CPU, &power_saving_cpu_stat) == 0) {
+                               if (power_saving_cpu_stat == 1) {
+                                       ret = __add_entry_to_max_cpu_freq_list(getpid(), POWER_SAVING_CPUFREQ);
+                                       if (ret < 0) {
+                                               PRT_TRACE_ERR("Add entry failed");
+                                               return;
+                                       }
+                                       ret = __write_max_cpu_freq(cur_max_cpu_freq);
+                                       if (ret < 0) {
+                                               PRT_TRACE_ERR("Write entry failed");
+                                               return;
+                                       }
+                               }
+                       } else {
+                               PRT_TRACE_ERR("failed to get vconf key");
+                       }
                }
+       } else {
+               PRT_TRACE_ERR("failed to get vconf key");
        }
 }
 
index 30a0f2e..7394b73 100755 (executable)
@@ -80,19 +80,23 @@ static int check_lowbat_charge_device(int bInserted)
                        if (val == 0 && bChargeDeviceInserted == 1) {
                                bChargeDeviceInserted = 0;
                                //low bat popup during charging device removing
-                               vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state);
-                               if(bat_state < VCONFKEY_SYSMAN_BAT_NORMAL) {
-                                       bundle *b = NULL;
-                                       b = bundle_create();
-                                       if(bat_state == VCONFKEY_SYSMAN_BAT_POWER_OFF)
-                                               bundle_add(b,"_SYSPOPUP_CONTENT_", "poweroff");
-                                       else
-                                               bundle_add(b, "_SYSPOPUP_CONTENT_", "warning");
-                                       ret = syspopup_launch("lowbat-syspopup", b);
-                                       if (ret < 0) {
-                                               PRT_TRACE_EM("popup lauch failed\n");
+                               if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) == 0) {
+                                       if(bat_state < VCONFKEY_SYSMAN_BAT_NORMAL) {
+                                               bundle *b = NULL;
+                                               b = bundle_create();
+                                               if(bat_state == VCONFKEY_SYSMAN_BAT_REAL_POWER_OFF)
+                                                       bundle_add(b,"_SYSPOPUP_CONTENT_", "poweroff");
+                                               else
+                                                       bundle_add(b, "_SYSPOPUP_CONTENT_", "warning");
+                                               ret = syspopup_launch("lowbat-syspopup", b);
+                                               if (ret < 0) {
+                                                       PRT_TRACE_EM("popup lauch failed\n");
+                                               }
+                                               bundle_free(b);
                                        }
-                                       bundle_free(b);
+                               } else {
+                                       PRT_TRACE_ERR("failed to get vconf key");
+                                       return -1;
                                }
                        }
                        return 0;
index 7c9966b..1474004 100644 (file)
@@ -76,14 +76,15 @@ static int parse_cmd(const char *cmdline, char **argv, int max_args)
        char *buf, *bufp;
        int nargs = 0;
        int escape = 0, squote = 0, dquote = 0;
+       int bufsize = strlen(cmdline)+1;
 
        if (cmdline == NULL || cmdline[0] == '\0')
                return -1;
 
-       bufp = buf = malloc(strlen(cmdline) + 1);
+       bufp = buf = malloc(bufsize);
        if (bufp == NULL || buf == NULL)
                return -1;
-
+       memset(buf, 0, bufsize);
        p = cmdline;
 
        while (*p) {
index 151a849..1d990cc 100644 (file)
@@ -289,7 +289,10 @@ static int lowmem_cb(void *data, Ecore_Fd_Handler * fd_handler)
        }
 
        fd = ecore_main_fd_handler_fd_get(fd_handler);
-
+       if (fd < 0) {
+               PRT_TRACE_ERR("ecore_main_fd_handler_fd_get error , return");
+               return 1;
+       }
        mem_state = lowmem_read(fd);
        print_lowmem_state(mem_state);
        lowmem_process(mem_state, ad);
index 034cc52..4e8373a 100644 (file)
--- a/ss_main.c
+++ b/ss_main.c
@@ -91,7 +91,11 @@ static int system_main(int argc, char **argv)
        struct ss_main_data ad;
 
        init_ad(&ad);
-       ad.noti_fd = heynoti_init();
+       if ((ad.noti_fd = heynoti_init()) < 0) {
+               PRT_TRACE_ERR("Hey Notification Initialize failed");
+               fini(&ad);
+               return 0;
+       }
        heynoti_attach_handler(ad.noti_fd);
        system_server_init(&ad);
 
index e8f8c79..e48abb8 100644 (file)
@@ -60,9 +60,11 @@ int get_mmcblk_num()
                                         dir->d_name);
 
                                fd = open(buf, O_RDONLY);
-                               if (fd == -1)
+                               if (fd == -1) {
                                        PRT_TRACE_ERR("%s open error: %s", buf,
                                                      strerror(errno));
+                                       return -1;
+                               }
                                r = read(fd, buf, 10);
                                if ((r >= 0) && (r < 10))
                                        buf[r] = '\0';
@@ -151,7 +153,7 @@ int ss_mmc_inserted()
        int blk_num, ret, retry = 0;
        char opt[NAME_MAX];
        char *popt = opt;
-
+       int r = 0;
        if (mmc_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
                PRT_DBG("Mmc is already mounted.\n");
                vconf_set_int(VCONFKEY_SYSMAN_MMC_STATUS,
@@ -161,8 +163,13 @@ int ss_mmc_inserted()
                return -1;
        }
 
-       if (access(MMC_MOUNT_POINT, R_OK) != 0)
-               mkdir(MMC_MOUNT_POINT, 0755);
+       if (access(MMC_MOUNT_POINT, R_OK) != 0) {
+               r = mkdir(MMC_MOUNT_POINT, 0755);
+               if(r < 0) {
+                       PRT_TRACE_ERR("Make Directory is failed");
+                       return -1;
+               }
+       }
 
        if ((blk_num = get_mmcblk_num()) == -1) {
                vconf_set_int(VCONFKEY_SYSMAN_MMC_STATUS,
index 4989b7a..392c025 100644 (file)
@@ -58,6 +58,7 @@ static char *pmon_get_permanent_pname(int pid)
 
        if (fstat(fd, &st) < 0) {
                PRT_TRACE_ERR("fstat error");
+               close(fd);
                return NULL;
        }
 
@@ -66,6 +67,7 @@ static char *pmon_get_permanent_pname(int pid)
        cmdline = malloc(st.st_size + 1);
        if (cmdline == NULL) {
                PRT_TRACE_ERR("Not enough memory");
+               close(fd);
                return NULL;
        }
        memset(cmdline, 0, st.st_size + 1);
@@ -83,12 +85,13 @@ static void print_pmon_state(unsigned int dead_pid)
        PRT_TRACE("[Process MON] %d killed", dead_pid);
 }
 
-static int pmon_process(unsigned int pid, void *ad)
+static int pmon_process(int pid, void *ad)
 {
        char *cmdline;
        int new_pid;
        char old_file[PATH_MAX];
        int fd;
+       int r;
 
        if (sysconf_is_vip(pid)) {
                PRT_TRACE_ERR("=======================================");
@@ -107,11 +110,15 @@ static int pmon_process(unsigned int pid, void *ad)
                                /* TODO - set oom */
                                char buf[PATH_MAX];
                                char filepath[PATH_MAX];
-                               size_t cnt;
+                               int cnt;
 
                                if (access(PMON_PERMANENT_DIR, R_OK) < 0) {
                                        PRT_TRACE("no predefined matrix dir = %s, so created", PMON_PERMANENT_DIR);
-                                       mkdir(PMON_PERMANENT_DIR, 0777);
+                                       r = mkdir(PMON_PERMANENT_DIR, 0777);
+                                       if(r < 0) {
+                                               PRT_TRACE("Make Directory is failed");
+                                               return -1;
+                                       }
                                }
 
                                snprintf(filepath, sizeof(filepath), "%s/%d", PMON_PERMANENT_DIR, pid);
@@ -195,6 +202,10 @@ static int pmon_cb(void *data, Ecore_Fd_Handler * fd_handler)
 
        fd = ecore_main_fd_handler_fd_get(fd_handler);
 
+       if (fd < 0) {
+               PRT_TRACE_ERR("ecore_main_fd_handler_fd_get error , return");
+               return 1;
+       }
        if ((read(fd, &dead_pid, sizeof(dead_pid))) < 0) {
                PRT_TRACE_ERR("Reading DEAD_PID failed, Return");
                return 1;
index 4997e45..346cd97 100644 (file)
@@ -402,23 +402,26 @@ int poweroff_def_predefine_action(int argc, char **argv)
        sync();
 
        gettimeofday(&tv_start_poweroff, NULL);
-       ret = tel_register_noti_event(tapi_handle, TAPI_NOTI_MODEM_POWER, powerdown_ap, NULL);
+       if (tapi_handle) {
+               ret = tel_register_noti_event(tapi_handle, TAPI_NOTI_MODEM_POWER, powerdown_ap, NULL);
 
-       if (ret != TAPI_API_SUCCESS) {
-               PRT_TRACE_ERR
-                   ("tel_register_event is not subscribed. error %d\n", ret);
-               powerdown_ap_by_force(NULL);
-               return 0;
-       }
+               if (ret != TAPI_API_SUCCESS) {
+                       PRT_TRACE_ERR
+                           ("tel_register_event is not subscribed. error %d\n", ret);
+                       powerdown_ap_by_force(NULL);
+                       return 0;
+               }
 
-       ret = tel_process_power_command(tapi_handle, TAPI_PHONE_POWER_OFF, powerdown_res_cb, NULL);
-       if (ret != TAPI_API_SUCCESS) {
-               PRT_TRACE_ERR("tel_process_power_command() error %d\n", ret);
+               ret = tel_process_power_command(tapi_handle, TAPI_PHONE_POWER_OFF, powerdown_res_cb, NULL);
+               if (ret != TAPI_API_SUCCESS) {
+                       PRT_TRACE_ERR("tel_process_power_command() error %d\n", ret);
+                       powerdown_ap_by_force(NULL);
+                       return 0;
+               }
+               poweroff_timer_id = ecore_timer_add(15, powerdown_ap_by_force, NULL);
+       } else {
                powerdown_ap_by_force(NULL);
-               return 0;
        }
-
-       poweroff_timer_id = ecore_timer_add(15, powerdown_ap_by_force, NULL);
        return 0;
 }
 
index 76cd4eb..1a16712 100644 (file)
@@ -209,9 +209,13 @@ int ss_run_queue_add(struct ss_action_entry *act_entry, int argc, char **argv)
        rq_entry->state = SS_STATE_INIT;
        rq_entry->action_entry = act_entry;
        rq_entry->forked_pid = 0;
-       rq_entry->argc = argc;
-       for (i = 0; i < argc; i++)
-               rq_entry->argv[i] = argv[i];
+       if ( argc < 0 ) {
+               rq_entry->argc = 0;
+       } else {
+               rq_entry->argc = argc;
+               for (i = 0; i < argc; i++)
+                       rq_entry->argv[i] = argv[i];
+       }
 
        run_queue = eina_list_prepend(run_queue, rq_entry);
 
index 0d404ea..baa5d82 100755 (executable)
@@ -116,6 +116,8 @@ static inline char *recv_str(int fd)
                        }                                               
                        else {      
                                PRT_TRACE_ERR("Read fail for str");
+                               free(str);
+                               str = NULL;
                                return NULL;
                        }                                                           
                } else
@@ -136,6 +138,8 @@ static int read_message(int fd, struct sysnoti *msg)
        msg->path = recv_str(fd);
        msg->argc = recv_int(fd);
 
+       if (msg->argc < 0)
+               return 0;
        for (i = 0; i < msg->argc; i++)
                msg->argv[i] = recv_str(fd);
 
@@ -184,12 +188,13 @@ static int sysnoti_cb(void *data, Ecore_Fd_Handler * fd_handler)
                   (socklen_t *)&client_len);
        if(client_sockfd == -1) {
                PRT_TRACE_ERR("socket accept error");
+               free(msg);
                return 1;
        }
 
        if (read_message(client_sockfd, msg) < 0) {
                PRT_TRACE_ERR("%s : recv error msg", __FUNCTION__);
-               free(msg);
+               free_message(msg);
                write(client_sockfd, &ret, sizeof(int));
                close(client_sockfd);
                return 1;
@@ -236,14 +241,18 @@ static int ss_sysnoti_server_init(void)
 
        if((fsetxattr(fd, "security.SMACK64IPOUT", "@", 2, 0)) < 0 ) {
                PRT_ERR("%s: Socket SMACK labeling failed\n", __FUNCTION__);
-               if(errno != EOPNOTSUPP)
+               if(errno != EOPNOTSUPP) {
+                       close(fd);
                        return -1;
+               }
        }
 
        if((fsetxattr(fd, "security.SMACK64IPIN", "*", 2, 0)) < 0 ) {
                PRT_ERR("%s: Socket SMACK labeling failed\n", __FUNCTION__);
-               if(errno != EOPNOTSUPP)
+               if(errno != EOPNOTSUPP) {
+                       close(fd);
                        return -1;
+               }
        }
 
        bzero(&serveraddr, sizeof(struct sockaddr_un));
@@ -254,14 +263,18 @@ static int ss_sysnoti_server_init(void)
        if (bind(fd, (struct sockaddr *)&serveraddr, sizeof(struct sockaddr)) <
            0) {
                PRT_ERR("%s: socket bind failed\n", __FUNCTION__);
+               close(fd);
                return -1;
        }
 
        if (chmod(SYSNOTI_SOCKET_PATH, (S_IRWXU | S_IRWXG | S_IRWXO)) < 0)      /* 0777 */
                PRT_ERR("failed to change the socket permission");
 
-       listen(fd, 5);
-
+       if (listen(fd, 5) < 0) {
+               PRT_ERR("failed to listen");
+               close(fd);
+               return -1;
+       }
        PRT_INFO("socket create & listen ok\n");
 
        return fd;
@@ -271,6 +284,8 @@ int ss_sysnoti_init(void)
 {
        int fd;
        fd = ss_sysnoti_server_init();
+       if ( fd < 0 )
+               return -1;
        ecore_main_fd_handler_add(fd, ECORE_FD_READ, sysnoti_cb, NULL, NULL,
                                  NULL);
        return fd;