From: giyeol.ok Date: Wed, 24 Oct 2012 03:52:16 +0000 (+0900) Subject: patch prevent defect X-Git-Tag: submit/tizen_2.2/20130714.154253~7^2~57 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8647d0b3596f849ff76b79267a097579618d92fe;p=framework%2Fsystem%2Fsystem-server.git patch prevent defect --- diff --git a/ss_bs.c b/ss_bs.c index 3c8cc0f..fc694a2 100644 --- 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) diff --git a/ss_cpu_handler.c b/ss_cpu_handler.c index c9881ff..296809e 100644 --- a/ss_cpu_handler.c +++ b/ss_cpu_handler.c @@ -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"); } } diff --git a/ss_device_change_handler.c b/ss_device_change_handler.c index 30a0f2e..7394b73 100755 --- a/ss_device_change_handler.c +++ b/ss_device_change_handler.c @@ -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; diff --git a/ss_launch.c b/ss_launch.c index 7c9966b..1474004 100644 --- a/ss_launch.c +++ b/ss_launch.c @@ -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) { diff --git a/ss_lowmem_handler.c b/ss_lowmem_handler.c index 151a849..1d990cc 100644 --- a/ss_lowmem_handler.c +++ b/ss_lowmem_handler.c @@ -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); diff --git a/ss_main.c b/ss_main.c index 034cc52..4e8373a 100644 --- 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); diff --git a/ss_mmc_handler.c b/ss_mmc_handler.c index e8f8c79..e48abb8 100644 --- a/ss_mmc_handler.c +++ b/ss_mmc_handler.c @@ -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, diff --git a/ss_pmon_handler.c b/ss_pmon_handler.c index 4989b7a..392c025 100644 --- a/ss_pmon_handler.c +++ b/ss_pmon_handler.c @@ -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; diff --git a/ss_predefine.c b/ss_predefine.c index 4997e45..346cd97 100644 --- a/ss_predefine.c +++ b/ss_predefine.c @@ -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; } diff --git a/ss_queue.c b/ss_queue.c index 76cd4eb..1a16712 100644 --- a/ss_queue.c +++ b/ss_queue.c @@ -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); diff --git a/ss_sysnoti.c b/ss_sysnoti.c index 0d404ea..baa5d82 100755 --- a/ss_sysnoti.c +++ b/ss_sysnoti.c @@ -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;