jackdanielz pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b10a1b11f12bed1a846682d1817a2b5511ff15e0
commit b10a1b11f12bed1a846682d1817a2b5511ff15e0 Author: Daniel Zaoui <[email protected]> Date: Tue May 27 08:18:33 2014 +0300 Eolian: fix coverity issues. CID 1216274 CID 1216275 CID 1216276 CID 1216277 CID 1216278 CID 1216279 CID 1216280 --- src/bin/eolian/common_funcs.c | 2 +- src/bin/eolian/eo1_generator.c | 1 + src/bin/eolian/impl_generator.c | 6 ++---- src/bin/eolian/legacy_generator.c | 2 +- src/bin/eolian/main.c | 24 +++++++++++++++++------- src/lib/eolian/eolian_database.c | 2 +- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/bin/eolian/common_funcs.c b/src/bin/eolian/common_funcs.c index 99d6a8b..da6123c 100644 --- a/src/bin/eolian/common_funcs.c +++ b/src/bin/eolian/common_funcs.c @@ -28,7 +28,7 @@ _class_func_names_fill(const Eolian_Class class, const char *over_classname, con { current_class = class; if (!class) - strcpy(current_classname, over_classname); + strncpy(current_classname, over_classname, sizeof(current_classname) - 1); else _class_name_concatenate(class, current_classname); diff --git a/src/bin/eolian/eo1_generator.c b/src/bin/eolian/eo1_generator.c index f8924df..c798ce6 100644 --- a/src/bin/eolian/eo1_generator.c +++ b/src/bin/eolian/eo1_generator.c @@ -588,6 +588,7 @@ eo_source_end_generate(const Eolian_Class class, Eina_Strbuf *buf) if (!str_classtype) { ERR ("Unknown class type for class %s !", classname); + free(classname); return EINA_FALSE; } diff --git a/src/bin/eolian/impl_generator.c b/src/bin/eolian/impl_generator.c index f33854f..ad11388 100644 --- a/src/bin/eolian/impl_generator.c +++ b/src/bin/eolian/impl_generator.c @@ -62,9 +62,8 @@ _function_exists(const char* func_name, Eina_Strbuf *buffer) return EINA_TRUE; } } - default: - ptr++; /* so strstr doesn't fall again on func_name */ } + ptr++; /* so strstr doesn't fall again on func_name */ } return EINA_FALSE; } @@ -87,9 +86,8 @@ _type_exists(const char* type_name, Eina_Strbuf *buffer) return EINA_TRUE; } } - default: - ptr++; /* so strstr doesn't fall again on type_name */ } + ptr++; /* so strstr doesn't fall again on type_name */ } return EINA_FALSE; } diff --git a/src/bin/eolian/legacy_generator.c b/src/bin/eolian/legacy_generator.c index 912b883..410b1dd 100644 --- a/src/bin/eolian/legacy_generator.c +++ b/src/bin/eolian/legacy_generator.c @@ -310,7 +310,7 @@ _eapi_func_generate(const Eolian_Class class, Eolian_Function funcid, Eolian_Fun if (rettype && (!ret_is_void)) { char tmp_ret_str[0xFF]; - sprintf (tmp_ret_str, "%s%s", ret_const?"const ":"", rettype?rettype:"void"); + sprintf (tmp_ret_str, "%s%s", ret_const?"const ":"", rettype); const char *dflt_ret_val = eolian_function_return_dflt_value_get(funcid, ftype); Eina_Bool had_star = !!strchr(rettype, '*'); diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c index bab4577..74a2915 100644 --- a/src/bin/eolian/main.c +++ b/src/bin/eolian/main.c @@ -131,18 +131,29 @@ _generate_impl_c_file(char *filename, const Eolian_Class class) { fseek(fd, 0, SEEK_END); file_size = ftell(fd); + if (file_size <= 0) + { + ERR("Couldnt determine length for file %s", filename); + goto end; + } fseek(fd, 0, SEEK_SET); char *content = malloc(file_size + 1); - fread(content, file_size, 1, fd); - content[file_size] = '\0'; - fclose(fd); - if (!content) { - ERR("Couldnt read file %s", filename); + ERR("Couldnt allocate memory for file %s", filename); + goto end; + } + if (0 == fread(content, file_size, 1, fd)) + { + ERR("Couldnt read the %ld bytes of file %s", file_size, filename); + free(content); goto end; } + content[file_size] = '\0'; + fclose(fd); + fd = NULL; + buffer = eina_strbuf_manage_new(content); } else @@ -164,10 +175,9 @@ _generate_impl_c_file(char *filename, const Eolian_Class class) const char *text = eina_strbuf_string_get(buffer); if (text) fputs(text, fd); - fclose(fd); - ret = EINA_TRUE; end: + if (fd) fclose(fd); eina_strbuf_free(buffer); return ret; } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index ff74e29..4390c9a 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -223,7 +223,7 @@ eolian_type_find_by_alias(const char *alias) Eina_Stringshare *shr = eina_stringshare_add(alias); Type_Desc *cl = eina_hash_find(_types, shr); eina_stringshare_del(shr); - return cl->type; + return cl?cl->type:NULL; } Eolian_Class --
