From: Jeongmo Yang Date: Fri, 17 Feb 2017 06:47:49 +0000 (+0900) Subject: Fix Svace issue X-Git-Tag: submit/tizen/20170307.122057~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5025474c2676d494ff5f78c6b64b13bb0c7ac945;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git Fix Svace issue [Version] 0.10.105 [Profile] Common [Issue Type] Svace [Dependency module] N/A [Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-3.0-mobile_20170210.1] Change-Id: I656841fa236d23c7084450cdbf38ff006c99dd36 Signed-off-by: Jeongmo Yang --- diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 2a8b1a2..61f2384 100644 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -1,6 +1,6 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 0.10.106 +Version: 0.10.107 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder_configure.h b/src/include/mm_camcorder_configure.h index 0d483ba..01c16d8 100644 --- a/src/include/mm_camcorder_configure.h +++ b/src/include/mm_camcorder_configure.h @@ -384,7 +384,7 @@ type_element *_mmcamcorder_get_type_element(MMHandleType handle, int type); int _mmcamcorder_get_available_format(MMHandleType handle, int conf_category, int **format); /* Internal function */ -void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf **configure_info); +int _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf *configure_info); int _mmcamcorder_conf_parse_info(MMHandleType handle, int type, FILE *fd, camera_conf **configure_info); int _mmcamcorder_conf_get_value_type(MMHandleType handle, int type, int category, const char *name, int *value_type); int _mmcamcorder_conf_add_info(MMHandleType handle, int type, conf_detail **info, char **buffer_details, int category, int count_details); diff --git a/src/mm_camcorder_configure.c b/src/mm_camcorder_configure.c index 5114681..93c4534 100644 --- a/src/mm_camcorder_configure.c +++ b/src/mm_camcorder_configure.c @@ -49,13 +49,15 @@ char *get_new_string(char* src_string) return g_strdup(src_string); } -void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configure_info) +int _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf *configure_info) { - int i = 0; + int category_num = 0; int info_table_size = sizeof(conf_info_table); mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); + mmf_return_val_if_fail(hcamcorder && configure_info, MM_ERROR_CAMCORDER_INVALID_ARGUMENT); + /* Videosrc element default value */ static type_element _videosrc_element_default = { "VideosrcElement", @@ -848,11 +850,6 @@ void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configu { "DetectSelectNumber", CONFIGURE_VALUE_INT_RANGE, {NULL} }, }; - if (hcamcorder == NULL) { - _mmcam_dbg_err("handle is NULL"); - return; - } - _mmcam_dbg_log("Entered..."); if (type == CONFIGURE_TYPE_MAIN) { @@ -878,10 +875,7 @@ void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configu hcamcorder->conf_main_category_size[CONFIGURE_CATEGORY_MAIN_IMAGE_ENCODER] = sizeof(conf_main_image_encoder_table) / info_table_size; hcamcorder->conf_main_category_size[CONFIGURE_CATEGORY_MAIN_MUX] = sizeof(conf_main_mux_table) / info_table_size; - (*configure_info)->info = (conf_detail**)g_malloc0(sizeof(conf_detail*) * CONFIGURE_CATEGORY_MAIN_NUM); - - for (i = 0 ; i < CONFIGURE_CATEGORY_MAIN_NUM ; i++) - (*configure_info)->info[i] = NULL; + category_num = CONFIGURE_CATEGORY_MAIN_NUM; } else { hcamcorder->conf_ctrl_info_table[CONFIGURE_CATEGORY_CTRL_CAMERA] = conf_ctrl_camera_table; hcamcorder->conf_ctrl_info_table[CONFIGURE_CATEGORY_CTRL_STROBE] = conf_ctrl_strobe_table; @@ -897,22 +891,25 @@ void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configu hcamcorder->conf_ctrl_category_size[CONFIGURE_CATEGORY_CTRL_CAPTURE] = sizeof(conf_ctrl_capture_table) / info_table_size; hcamcorder->conf_ctrl_category_size[CONFIGURE_CATEGORY_CTRL_DETECT] = sizeof(conf_ctrl_detect_table) / info_table_size; - (*configure_info)->info = (conf_detail**)g_malloc0(sizeof(conf_detail*) * CONFIGURE_CATEGORY_CTRL_NUM); + category_num = CONFIGURE_CATEGORY_CTRL_NUM; + } - for (i = 0 ; i < CONFIGURE_CATEGORY_CTRL_NUM ; i++) - (*configure_info)->info[i] = NULL; + configure_info->info = (conf_detail **)g_malloc0(sizeof(conf_detail *) * category_num); + if (configure_info->info == NULL) { + _mmcam_dbg_err("category info alloc failed : type %d", type); + return MM_ERROR_CAMCORDER_LOW_MEMORY; } _mmcam_dbg_log("Done."); - return; + return MM_ERROR_NONE; } int _mmcamcorder_conf_get_info(MMHandleType handle, int type, const char *ConfFile, camera_conf **configure_info) { int ret = MM_ERROR_NONE; - FILE *fd = NULL; + FILE *fp = NULL; char conf_path[60] = {'\0',}; _mmcam_dbg_log("Opening...[%s]", ConfFile); @@ -922,20 +919,20 @@ int _mmcamcorder_conf_get_info(MMHandleType handle, int type, const char *ConfFi snprintf(conf_path, sizeof(conf_path), "%s/multimedia/%s", SYSCONFDIR, ConfFile); _mmcam_dbg_log("Try open Configure File[%s]", conf_path); - fd = fopen(conf_path, "r"); - if (fd == NULL) { + fp = fopen(conf_path, "r"); + if (fp == NULL) { _mmcam_dbg_warn("File open failed.[%s] retry...", conf_path); snprintf(conf_path, sizeof(conf_path), "%s/multimedia/%s", TZ_SYS_ETC, ConfFile); _mmcam_dbg_log("Try open Configure File[%s]", conf_path); - fd = fopen(conf_path, "r"); - if (fd == NULL) + fp = fopen(conf_path, "r"); + if (fp == NULL) _mmcam_dbg_warn("open failed.[%s] errno [%d]", conf_path, errno); } - if (fd != NULL) { - ret = _mmcamcorder_conf_parse_info(handle, type, fd, configure_info); - fclose(fd); + if (fp != NULL) { + ret = _mmcamcorder_conf_parse_info(handle, type, fp, configure_info); + fclose(fp); } else { if (errno == ENOENT) ret = MM_ERROR_CAMCORDER_NOT_SUPPORTED; @@ -949,13 +946,14 @@ int _mmcamcorder_conf_get_info(MMHandleType handle, int type, const char *ConfFi } -int _mmcamcorder_conf_parse_info(MMHandleType handle, int type, FILE* fd, camera_conf** configure_info) +int _mmcamcorder_conf_parse_info(MMHandleType handle, int type, FILE *fp, camera_conf **configure_info) { const unsigned int BUFFER_NUM_DETAILS = 256; const unsigned int BUFFER_NUM_TOKEN = 20; size_t BUFFER_LENGTH_STRING = 256; const char* delimiters = " |=,\t\n"; + int ret = MM_ERROR_NONE; int category = 0; int count_main_category = 0; int count_details = 0; @@ -971,42 +969,45 @@ int _mmcamcorder_conf_parse_info(MMHandleType handle, int type, FILE* fd, camera char *detail_string = NULL; char *user_ptr = NULL; + camera_conf *new_conf = NULL; + _mmcam_dbg_log(""); - camera_conf* new_conf = (camera_conf *)g_malloc0(sizeof(camera_conf)); + mmf_return_val_if_fail(handle && fp && configure_info, MM_ERROR_INVALID_ARGUMENT); + + *configure_info = NULL; + + new_conf = (camera_conf *)g_malloc0(sizeof(camera_conf)); if (new_conf == NULL) { _mmcam_dbg_err("new_conf alloc failed : %d", sizeof(camera_conf)); - *configure_info = NULL; return MM_ERROR_CAMCORDER_LOW_MEMORY; } buffer_string = (char*)g_malloc0(sizeof(char) * BUFFER_LENGTH_STRING); if (buffer_string == NULL) { _mmcam_dbg_err("buffer_string alloc failed : %d", sizeof(char) * BUFFER_LENGTH_STRING); - *configure_info = NULL; - SAFE_G_FREE(new_conf); + g_free(new_conf); return MM_ERROR_CAMCORDER_LOW_MEMORY; } new_conf->type = type; - *configure_info = new_conf; - - _mmcamcorder_conf_init(handle, type, &new_conf); - if (fd == NULL) { - _mmcam_dbg_err("failed file descriptor fail"); - *configure_info = NULL; - SAFE_G_FREE(buffer_string); - SAFE_G_FREE(new_conf); - return MM_ERROR_CAMCORDER_INVALID_ARGUMENT; + ret = _mmcamcorder_conf_init(handle, type, new_conf); + if (ret != MM_ERROR_NONE) { + _mmcam_dbg_err("conf init failed 0x%x", ret); + g_free(new_conf); + g_free(buffer_string); + return ret; } + *configure_info = new_conf; + read_main = 0; count_main_category = 0; - while (!feof(fd)) { + while (!feof(fp)) { if (read_main == 0) { - length_read = getline(&buffer_string, &BUFFER_LENGTH_STRING, fd); + length_read = getline(&buffer_string, &BUFFER_LENGTH_STRING, fp); /*_mmcam_dbg_log( "Read Line : [%s]", buffer_string );*/ count_token = 0; @@ -1045,8 +1046,8 @@ int _mmcamcorder_conf_parse_info(MMHandleType handle, int type, FILE* fd, camera count_main_category++; count_details = 0; - while (!feof(fd)) { - length_read = getline(&buffer_string, &BUFFER_LENGTH_STRING, fd); + while (!feof(fp)) { + length_read = getline(&buffer_string, &BUFFER_LENGTH_STRING, fp); /*_mmcam_dbg_log("Read Detail Line : [%s], read length : [%d]", buffer_string, length_read);*/ detail_string = get_new_string(buffer_string); @@ -1310,7 +1311,7 @@ int _mmcamcorder_conf_get_value_type(MMHandleType handle, int type, int category } -int _mmcamcorder_conf_add_info(MMHandleType handle, int type, conf_detail** info, char** buffer_details, int category, int count_details) +int _mmcamcorder_conf_add_info(MMHandleType handle, int type, conf_detail **info, char **buffer_details, int category, int count_details) { const int BUFFER_NUM_TOKEN = 256; @@ -1326,16 +1327,23 @@ int _mmcamcorder_conf_add_info(MMHandleType handle, int type, conf_detail** info const char *delimiters_sub = " |\t\n"; const char *delimiters_3rd = "|\n"; - mmf_return_val_if_fail(buffer_details, FALSE); + mmf_return_val_if_fail(info && buffer_details, FALSE); (*info) = (conf_detail*)g_malloc0(sizeof(conf_detail)); if (*info == NULL) { - _mmcam_dbg_err("allocation failed"); + _mmcam_dbg_err("info allo failed"); return FALSE; } (*info)->detail_info = (void**)g_malloc0(sizeof(void*) * count_details); (*info)->count = count_details; + if ((*info)->detail_info == NULL) { + _mmcam_dbg_err("detail_info alloc failed"); + g_free(*info); + *info = NULL; + return FALSE; + } + for (i = 0 ; i < count_details ; i++) { /*_mmcam_dbg_log("Read line\"%s\"", buffer_details[i]);*/ count_token = 0; diff --git a/src/mm_camcorder_internal.c b/src/mm_camcorder_internal.c index ecc1220..a97aa5c 100644 --- a/src/mm_camcorder_internal.c +++ b/src/mm_camcorder_internal.c @@ -2819,8 +2819,12 @@ gboolean _mmcamcorder_pipeline_cb_message(GstBus *bus, GstMessage *message, gpoi pipeline = sc->element[_MMCAMCORDER_MAIN_PIPE].gst; if (message->src == (GstObject*)pipeline) { vnewstate = gst_structure_get_value(gst_message_get_structure(message), "new-state"); - newstate = (GstState)vnewstate->data[0].v_int; - _mmcam_dbg_log("GST_MESSAGE_STATE_CHANGED[%s]", gst_element_state_get_name(newstate)); + if (vnewstate) { + newstate = (GstState)vnewstate->data[0].v_int; + _mmcam_dbg_log("GST_MESSAGE_STATE_CHANGED[%s]", gst_element_state_get_name(newstate)); + } else { + _mmcam_dbg_warn("get new state failed from msg"); + } } } }