diff --git a/doc/fortunes.fun b/doc/fortunes.fun index b54e6ab44b..0f97ec8d35 100644 --- a/doc/fortunes.fun +++ b/doc/fortunes.fun @@ -145,7 +145,7 @@ Too old to crash Finnished a beer ESIL ruined my life ESIL: The Aftersleep -Please insert coin +Insert coin to continue.. See you in shell Mess with the best, Die like the rest Sarah Connor? diff --git a/shlr/java/class.c b/shlr/java/class.c index e99f41947c..9d13bfac45 100644 --- a/shlr/java/class.c +++ b/shlr/java/class.c @@ -1,4 +1,4 @@ -/* Apache 2.0 - Copyright 2007-2014 - pancake and dso +/* Apache 2.0 - Copyright 2007-2015 - pancake and dso class.c rewrite: Adam Pridgen */ #include @@ -24,8 +24,8 @@ #define MAX_CPITEMS 8192 R_API char * U(r_bin_java_unmangle_method)(const char *flags, const char *name, const char *params, const char *r_value); -R_API int r_bin_java_is_fm_type_private( RBinJavaField *fm_type); -R_API int r_bin_java_is_fm_type_protected( RBinJavaField *fm_type); +R_API int r_bin_java_is_fm_type_private(RBinJavaField *fm_type); +R_API int r_bin_java_is_fm_type_protected(RBinJavaField *fm_type); R_API ut32 U(r_bin_java_swap_uint)(ut32 x); @@ -76,9 +76,9 @@ R_API RBinJavaCPTypeObj* r_bin_java_read_next_constant_pool_item(RBinJavaObj *bi R_API RBinJavaAttrMetas* r_bin_java_get_attr_type_by_name(const char *name); R_API RBinJavaCPTypeObj* r_bin_java_get_java_null_cp(); R_API ut64 r_bin_java_read_class_file2(RBinJavaObj *bin, const ut64 offset, const ut8 *buf, ut64 len); -R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos ); -R_API RBinJavaField* r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len ); -R_API RBinJavaField* r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len ); +R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos); +R_API RBinJavaField* r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len); +R_API RBinJavaField* r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len); R_API void r_bin_java_print_utf8_cp_summary(RBinJavaCPTypeObj* obj); R_API void r_bin_java_print_name_and_type_cp_summary(RBinJavaCPTypeObj* obj); R_API void r_bin_java_print_double_cp_summary(RBinJavaCPTypeObj* obj); @@ -187,7 +187,7 @@ R_API void r_bin_java_print_local_variable_table_attr_summary(RBinJavaAttrInfo * R_API void r_bin_java_print_source_code_file_attr_summary(RBinJavaAttrInfo *attr); R_API void r_bin_java_print_synthetic_attr_summary(RBinJavaAttrInfo *attr); R_API void r_bin_java_print_attr_summary(RBinJavaAttrInfo *attr); -R_API RBinJavaAttrInfo* r_bin_java_read_next_attr_from_buffer(ut8 *buffer, st64 sz, ut64 buf_offset); +R_API RBinJavaAttrInfo* r_bin_java_read_next_attr_from_buffer(ut8 *buffer, st64 sz, st64 buf_offset); R_API RBinJavaAttrInfo* r_bin_java_unknown_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset); R_API RBinJavaAttrInfo* r_bin_java_annotation_default_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset); R_API RBinJavaAttrInfo* r_bin_java_enclosing_methods_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset); @@ -257,17 +257,17 @@ R_API RList * r_bin_java_find_cp_const_by_val_double (RBinJavaObj *bin_obj, cons R_API RList * r_bin_java_find_cp_const_by_val_int (RBinJavaObj *bin_obj, const ut8 *bytes, ut32 len); R_API RList * r_bin_java_find_cp_const_by_val_long (RBinJavaObj *bin_obj, const ut8 *bytes, ut32 len); R_API RList * r_bin_java_find_cp_const_by_val_utf8 (RBinJavaObj *bin_obj, const ut8 *bytes, ut32 len); -R_API ut8 * r_bin_java_cp_append_classref_and_name (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len ); -R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, const char *cname, const ut32 c_len, const char *fname, const ut32 f_len, const char *tname, const ut32 t_len ); -R_API ut8 * r_bin_java_cp_get_classref (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len, const ut16 name_idx ); -R_API ut8 * U(r_bin_java_cp_get_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx ); -R_API ut8 * U(r_bin_java_cp_get_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx ); -R_API ut8 * r_bin_java_cp_get_fm_ref (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 class_idx, ut16 name_and_type_idx ); -R_API ut8 * r_bin_java_cp_get_2_ut16 (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 ut16_one, ut16 ut16_two ); -R_API ut8 * r_bin_java_cp_get_name_type (RBinJavaObj *bin, ut32 *out_sz, ut16 name_idx, ut16 type_idx ); +R_API ut8 * r_bin_java_cp_append_classref_and_name (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len); +R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, const char *cname, const ut32 c_len, const char *fname, const ut32 f_len, const char *tname, const ut32 t_len); +R_API ut8 * r_bin_java_cp_get_classref (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len, const ut16 name_idx); +R_API ut8 * U(r_bin_java_cp_get_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx); +R_API ut8 * U(r_bin_java_cp_get_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx); +R_API ut8 * r_bin_java_cp_get_fm_ref (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 class_idx, ut16 name_and_type_idx); +R_API ut8 * r_bin_java_cp_get_2_ut16 (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 ut16_one, ut16 ut16_two); +R_API ut8 * r_bin_java_cp_get_name_type (RBinJavaObj *bin, ut32 *out_sz, ut16 name_idx, ut16 type_idx); -R_API char * convert_string (const char * bytes, ut32 len ) { +R_API char * convert_string (const char * bytes, ut32 len) { ut32 idx = 0, pos = 0; ut32 str_sz = 4*len+1; char *cpy_buffer = len > 0 ? malloc (str_sz): NULL; @@ -701,10 +701,10 @@ R_API DsoJsonObj * r_bin_java_get_import_json_definitions(RBinJavaObj *bin) { if (!bin || !(the_list = r_bin_java_get_lib_names (bin))) return json_list; - r_list_foreach ( the_list, iter, new_str) { + r_list_foreach (the_list, iter, new_str) { char *tmp = new_str; //eprintf ("Processing string: %s\n", new_str); - while ( *tmp ) { + while (*tmp) { if (*tmp == '/') *tmp = '.'; tmp ++; @@ -782,10 +782,10 @@ R_API DsoJsonObj * r_bin_java_get_interface_json_definitions(RBinJavaObj *bin) { if (!bin || !(the_list = r_bin_java_get_interface_names (bin))) return json_list; - r_list_foreach ( the_list, iter, new_str) { + r_list_foreach (the_list, iter, new_str) { char *tmp = new_str; //eprintf ("Processing string: %s\n", new_str); - while ( *tmp ) { + while (*tmp) { if (*tmp == '/') *tmp = '.'; tmp ++; } @@ -802,7 +802,7 @@ R_API DsoJsonObj * r_bin_java_get_method_json_definitions(RBinJavaObj *bin) { RListIter *iter = NULL; DsoJsonObj *json_list = dso_json_list_new (); if (!bin) return json_list; - r_list_foreach ( bin->methods_list, iter, fm_type) { + r_list_foreach (bin->methods_list, iter, fm_type) { DsoJsonObj *method_proto = r_bin_java_get_method_json_definition (bin, fm_type); //eprintf ("Method json: %s\n", method_proto); dso_json_list_append (json_list, method_proto); @@ -815,7 +815,7 @@ R_API DsoJsonObj * r_bin_java_get_field_json_definitions(RBinJavaObj *bin) { RListIter *iter = NULL; DsoJsonObj *json_list = dso_json_list_new (); if (!bin) return json_list; - r_list_foreach ( bin->fields_list, iter, fm_type) { + r_list_foreach (bin->fields_list, iter, fm_type) { DsoJsonObj *field_proto = r_bin_java_get_field_json_definition (bin, fm_type); //eprintf ("Field json: %s\n", field_proto); dso_json_list_append (json_list, field_proto); @@ -939,7 +939,7 @@ R_API int r_bin_java_extract_reference_name (const char * input_str, char ** ref new_str = *ref_str; memcpy (new_str, input_str+1, str_len); new_str[str_len] = 0; - while ( *new_str ) { + while (*new_str) { if (*new_str == '/') *new_str = '.'; new_str ++; } @@ -956,7 +956,7 @@ R_API void UNUSED_FUNCTION(r_bin_java_print_prototypes) (RBinJavaObj *bin) { r_list_free (the_list); } -R_API char * get_type_value_str ( const char *arg_str, ut8 array_cnt) { +R_API char * get_type_value_str (const char *arg_str, ut8 array_cnt) { ut32 str_len = array_cnt ? (array_cnt+1) * 2 + strlen (arg_str): strlen (arg_str) ; char *str = malloc (str_len + 1); ut32 bytes_written = snprintf (str, str_len+1, "%s", arg_str); @@ -982,7 +982,7 @@ R_API int extract_type_value (const char *arg_str, char **output) { switch (*arg_str) { case 'V': len = 1; - str = get_type_value_str ( "void", array_cnt); + str = get_type_value_str ("void", array_cnt); break; case 'J': len = 1; @@ -1077,7 +1077,7 @@ R_API int r_bin_java_is_fm_type_protected (RBinJavaField *fm_type) { return 0; } -R_API RList * r_bin_java_get_args( RBinJavaField *fm_type) { +R_API RList * r_bin_java_get_args(RBinJavaField *fm_type) { RList * the_list = r_bin_java_extract_type_values (fm_type->descriptor), * arg_list = r_list_new (); ut8 in_args = 0; @@ -1096,7 +1096,7 @@ R_API RList * r_bin_java_get_args( RBinJavaField *fm_type) { return arg_list; } -R_API RList * r_bin_java_get_ret( RBinJavaField *fm_type) { +R_API RList * r_bin_java_get_ret(RBinJavaField *fm_type) { RList * the_list = r_bin_java_extract_type_values (fm_type->descriptor), * ret_list = r_list_new (); ut8 in_ret = 0; @@ -1104,7 +1104,7 @@ R_API RList * r_bin_java_get_ret( RBinJavaField *fm_type) { char *str; r_list_foreach (the_list, desc_iter, str) { if (str && *str != ')') in_ret = 0; - if ( in_ret) { + if (in_ret) { r_list_append (ret_list, strdup(str)); } } @@ -1216,7 +1216,7 @@ R_API int sdb_iterate_build_list(void *user, const char *k, const char *v) { IFDBG eprintf("Found %s == %"PFMT64x" bin_objs db\n", k, (ut64)value); if (value !=0 && value != (size_t)-1) { bin_obj = (RBinJavaObj *) value; - r_list_append ( bin_objs_list, bin_obj); + r_list_append (bin_objs_list, bin_obj); } return R_TRUE; } @@ -1229,7 +1229,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_get_java_null_cp() { R_BIN_JAVA_NULL_TYPE.metas = R_NEW0(RBinJavaMetaInfo); if (R_BIN_JAVA_NULL_TYPE.metas == NULL) return NULL; - memset ( R_BIN_JAVA_NULL_TYPE.metas, 0, sizeof (RBinJavaMetaInfo)); + memset (R_BIN_JAVA_NULL_TYPE.metas, 0, sizeof (RBinJavaMetaInfo)); R_BIN_JAVA_NULL_TYPE.metas->type_info = &R_BIN_JAVA_CP_METAS[0]; R_BIN_JAVA_NULL_TYPE.metas->ord = 0; R_BIN_JAVA_NULL_TYPE.file_offset = 0; @@ -1239,7 +1239,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_get_java_null_cp() { R_API RBinJavaElementValueMetas* r_bin_java_get_ev_meta_from_tag(ut8 tag) { ut16 i = 0; RBinJavaElementValueMetas *res = &R_BIN_JAVA_ELEMENT_VALUE_METAS[13]; - for (i = 0; i < R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ; i++ ) { + for (i = 0; i < R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ; i++) { if (tag == R_BIN_JAVA_ELEMENT_VALUE_METAS[i].tag) { res = &R_BIN_JAVA_ELEMENT_VALUE_METAS[i]; break; @@ -1413,7 +1413,7 @@ R_API RBinJavaField* r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 of return method; } -R_API RBinJavaField* r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len ) { +R_API RBinJavaField* r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 offset, const ut8 * buffer, const ut64 len) { RBinJavaAttrInfo* attr; ut32 i, idx; ut8 buf[8]; @@ -1548,7 +1548,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_read_next_constant_pool_item(RBinJavaObj *bi ut32 str_len = 0; RBinJavaCPTypeObj *java_obj = NULL; tag = buf[offset]; - if ( tag > R_BIN_JAVA_CP_METAS_SZ) { + if (tag > R_BIN_JAVA_CP_METAS_SZ) { eprintf ("Invalid tag '%d' at offset 0x%08"PFMT64x"\n", tag, (ut64)offset); java_obj = r_bin_java_unknown_cp_new (bin, &tag, 1); if (java_obj != NULL && java_obj->metas != NULL) { @@ -1558,7 +1558,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_read_next_constant_pool_item(RBinJavaObj *bi return java_obj; } java_constant_info = &R_BIN_JAVA_CP_METAS[tag]; - if (java_constant_info->tag == 0 || java_constant_info->tag == 2 ) { + if (java_constant_info->tag == 0 || java_constant_info->tag == 2) { return java_obj; } buf_sz += java_constant_info->len; @@ -1675,6 +1675,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_get_item_from_bin_cp_list(RBinJavaObj *bin, } R_API char* r_bin_java_get_item_name_from_bin_cp_list(RBinJavaObj *bin, RBinJavaCPTypeObj *obj) { + char *res = NULL; /* Given a constant poool object Class, FieldRef, MethodRef, or InterfaceMethodRef return the actual descriptor string. @@ -1682,9 +1683,11 @@ R_API char* r_bin_java_get_item_name_from_bin_cp_list(RBinJavaObj *bin, RBinJava @param obj object to look up the name for @rvalue char* (user frees) or NULL */ - if (bin == NULL) - return NULL; - return r_bin_java_get_item_name_from_cp_item_list (bin->cp_list, obj, MAX_CPITEMS); + if (bin && obj) { + res = r_bin_java_get_item_name_from_cp_item_list ( + bin->cp_list, obj, MAX_CPITEMS); + } + return res; } R_API char* r_bin_java_get_item_desc_from_bin_cp_list (RBinJavaObj *bin, RBinJavaCPTypeObj *obj) { @@ -1717,7 +1720,7 @@ R_API char* r_bin_java_get_utf8_from_cp_item_list(RList *cp_list, ut64 idx) { value = convert_string ((const char *)item->info.cp_utf8.bytes, item->info.cp_utf8.length); } if (value == NULL) { - r_list_foreach (cp_list, iter, item ) { + r_list_foreach (cp_list, iter, item) { if (item && (item->tag == R_BIN_JAVA_CP_UTF8) && item->metas->ord == idx) { value = convert_string ((const char *)item->info.cp_utf8.bytes, item->info.cp_utf8.length); break; @@ -1743,7 +1746,7 @@ R_API ut32 r_bin_java_get_utf8_len_from_cp_item_list(RList *cp_list, ut64 idx) { value = item->info.cp_utf8.length; } if (value == -1) { - r_list_foreach (cp_list, iter, item ) { + r_list_foreach (cp_list, iter, item) { if (item && (item->tag == R_BIN_JAVA_CP_UTF8) && item->metas->ord == idx) { value = item->info.cp_utf8.length; break; @@ -1773,22 +1776,31 @@ R_API char* r_bin_java_get_item_name_from_cp_item_list (RList *cp_list, RBinJava @param obj object to look up the name for @rvalue ut8* (user frees) or NULL */ - if(obj == NULL || cp_list == NULL || depth <0) + if (obj == NULL || cp_list == NULL || depth <0) { return NULL; - switch(obj->tag) { - case R_BIN_JAVA_CP_NAMEANDTYPE: - return r_bin_java_get_utf8_from_cp_item_list (cp_list, obj->info.cp_name_and_type.name_idx); - case R_BIN_JAVA_CP_CLASS: - return r_bin_java_get_utf8_from_cp_item_list (cp_list, obj->info.cp_class.name_idx); - // XXX - Probably not good form, but they are the same memory structure - case R_BIN_JAVA_CP_FIELDREF: - case R_BIN_JAVA_CP_INTERFACEMETHOD_REF: - case R_BIN_JAVA_CP_METHODREF: - obj = r_bin_java_get_item_from_cp_item_list (cp_list, obj->info.cp_method.name_and_type_idx); - return r_bin_java_get_item_name_from_cp_item_list (cp_list, obj, depth-1); - default: - return NULL; } + switch (obj->tag) { + case R_BIN_JAVA_CP_NAMEANDTYPE: + return r_bin_java_get_utf8_from_cp_item_list ( + cp_list, obj->info.cp_name_and_type.name_idx); + case R_BIN_JAVA_CP_CLASS: + return r_bin_java_get_utf8_from_cp_item_list ( + cp_list, obj->info.cp_class.name_idx); + // XXX - Probably not good form, but they are the same memory structure + case R_BIN_JAVA_CP_FIELDREF: + case R_BIN_JAVA_CP_INTERFACEMETHOD_REF: + case R_BIN_JAVA_CP_METHODREF: + obj = r_bin_java_get_item_from_cp_item_list ( + cp_list, obj->info.cp_method.name_and_type_idx); + return r_bin_java_get_item_name_from_cp_item_list ( + cp_list, obj, depth-1); + default: + return NULL; + case 0: + eprintf ("Invalid 0 tag in the constant pool\n"); + return NULL; + } + return NULL; } R_API char* r_bin_java_get_name_from_cp_item_list (RList *cp_list, ut64 idx) { @@ -1799,10 +1811,13 @@ R_API char* r_bin_java_get_name_from_cp_item_list (RList *cp_list, ut64 idx) { @param obj object to look up the name for @rvalue ut8* (user frees) or NULL */ - RBinJavaCPTypeObj *obj = r_bin_java_get_item_from_cp_item_list (cp_list, idx); - if (cp_list == NULL) - return NULL; - return r_bin_java_get_item_name_from_cp_item_list (cp_list, obj, MAX_CPITEMS); + RBinJavaCPTypeObj *obj = r_bin_java_get_item_from_cp_item_list ( + cp_list, idx); + if (obj && cp_list) { + return r_bin_java_get_item_name_from_cp_item_list ( + cp_list, obj, MAX_CPITEMS); + } + return NULL; } R_API char* r_bin_java_get_item_desc_from_cp_item_list (RList *cp_list, RBinJavaCPTypeObj *obj, int depth) { @@ -1811,20 +1826,24 @@ R_API char* r_bin_java_get_item_desc_from_cp_item_list (RList *cp_list, RBinJava return the actual descriptor string. @rvalue ut8* (user frees) or NULL */ - if(obj == NULL || cp_list == NULL || depth<0) + if (!obj || !cp_list || depth<0) + return NULL; + switch (obj->tag) { + case R_BIN_JAVA_CP_NAMEANDTYPE: + return r_bin_java_get_utf8_from_cp_item_list (cp_list, + obj->info.cp_name_and_type.descriptor_idx); + // XXX - Probably not good form, but they are the same memory structure + case R_BIN_JAVA_CP_FIELDREF: + case R_BIN_JAVA_CP_INTERFACEMETHOD_REF: + case R_BIN_JAVA_CP_METHODREF: + obj = r_bin_java_get_item_from_cp_item_list (cp_list, + obj->info.cp_method.name_and_type_idx); + return r_bin_java_get_item_desc_from_cp_item_list ( + cp_list, obj, depth-1); + default: return NULL; - switch(obj->tag) { - case R_BIN_JAVA_CP_NAMEANDTYPE: - return r_bin_java_get_utf8_from_cp_item_list (cp_list, obj->info.cp_name_and_type.descriptor_idx); - // XXX - Probably not good form, but they are the same memory structure - case R_BIN_JAVA_CP_FIELDREF: - case R_BIN_JAVA_CP_INTERFACEMETHOD_REF: - case R_BIN_JAVA_CP_METHODREF: - obj = r_bin_java_get_item_from_cp_item_list (cp_list, obj->info.cp_method.name_and_type_idx); - return r_bin_java_get_item_desc_from_cp_item_list (cp_list, obj, depth-1); - default: - return NULL; } + return NULL; } R_API char* r_bin_java_get_desc_from_cp_item_list (RList *cp_list, ut64 idx) { @@ -1847,8 +1866,8 @@ R_API RBinJavaAttrInfo* r_bin_java_get_method_code_attribute(const RBinJavaField RBinJavaAttrInfo *res = NULL, *attr = NULL; RListIter *iter; if (method) { - r_list_foreach (method->attributes, iter, attr ) { - if (attr && (attr->type == R_BIN_JAVA_ATTR_TYPE_CODE_ATTR) ) { + r_list_foreach (method->attributes, iter, attr) { + if (attr && (attr->type == R_BIN_JAVA_ATTR_TYPE_CODE_ATTR)) { res = attr; break; } @@ -1857,7 +1876,7 @@ R_API RBinJavaAttrInfo* r_bin_java_get_method_code_attribute(const RBinJavaField return res; } -R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos ) { +R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos) { /* Search through the Attribute list for the given type starting at position pos. rvalue: NULL or the first occurrence of attr_type after pos @@ -1868,7 +1887,7 @@ R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_B if (field) { r_list_foreach (field->attributes, iter, item) { // Note the increment happens after the comparison - if ( (i++) >= pos) { + if ((i++) >= pos) { if (item && (item->type == attr_type)) { attr = item; break; @@ -1924,10 +1943,11 @@ R_API RBinJavaAttrInfo* r_bin_java_default_attr_new(ut8* buffer, ut64 sz, ut64 b } R_API RBinJavaAttrMetas* r_bin_java_get_attr_type_by_name(const char *name) { + // TODO: use sdb/hashtable here RBinJavaAttrMetas* res = &RBIN_JAVA_ATTRS_METAS[R_BIN_JAVA_ATTR_TYPE_UNKNOWN_ATTR]; - ut32 i = 0; + int i = 0; for (i = 0; i < RBIN_JAVA_ATTRS_METAS_SZ; i++) { - if (strcmp ( (const char *) name, RBIN_JAVA_ATTRS_METAS[i].name) == 0) { + if (!strcmp ((const char *) name, RBIN_JAVA_ATTRS_METAS[i].name)) { res = &RBIN_JAVA_ATTRS_METAS[i]; break; } @@ -1948,7 +1968,7 @@ R_API RBinJavaAttrInfo* r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o } // ut16 attr_idx, ut32 length of attr. sz = R_BIN_JAVA_UINT (a_buf, 2) + attr_idx_len; //r_bin_java_read_int (bin, buf_offset+2) + attr_idx_len; - if (sz + offset > len ){ + if (sz + offset > len) { eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile in Attribute len " "(0x%x) + offset (0x%"PFMT64x") exceeds length of buffer (0x%"PFMT64x").\n", sz, offset, len); return attr; @@ -1958,7 +1978,7 @@ R_API RBinJavaAttrInfo* r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o // are not included in the attribute length //, // sz, buf_offset, buf_offset+sz); - buffer = r_bin_java_get_attr_buf (bin, sz, offset, buf, len ); + buffer = r_bin_java_get_attr_buf (bin, sz, offset, buf, len); attr = r_bin_java_read_next_attr_from_buffer (buffer, sz, offset); free (buffer); @@ -1970,32 +1990,35 @@ R_API RBinJavaAttrInfo* r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o return attr; } -R_API RBinJavaAttrInfo* r_bin_java_read_next_attr_from_buffer (ut8 *buffer, st64 sz, ut64 buf_offset) { +R_API RBinJavaAttrInfo* r_bin_java_read_next_attr_from_buffer (ut8 *buffer, st64 sz, st64 buf_offset) { RBinJavaAttrInfo *attr = NULL; + char* name = NULL; ut64 offset = 0; + ut16 name_idx; RBinJavaAttrMetas* type_info = NULL; - if (sz<0) return NULL; - if (((int)sz)<6) return NULL; - if (buffer) { - char* name = NULL; - ut16 name_idx = R_BIN_JAVA_USHORT (buffer, offset); - offset += 2; - sz = R_BIN_JAVA_UINT (buffer, offset); - offset += 4; - name = r_bin_java_get_utf8_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, name_idx); - IFDBG eprintf("r_bin_java_read_next_attr: name_idx = %d is %s\n", name_idx, name); - // figure the appropriate Attributes Meta, - // get the meta - // call its from buffer - if (!name) name = strdup ("unknown"); - type_info = r_bin_java_get_attr_type_by_name (name); + + if (!buffer || ((int)sz)<4 || buf_offset<0) { + eprintf ("r_bin_Java_read_next_attr_from_buffer: invalid buffer size %d\n", sz); + return NULL; + } + name_idx = R_BIN_JAVA_USHORT (buffer, offset); + offset += 2; + sz = R_BIN_JAVA_UINT (buffer, offset); + offset += 4; + name = r_bin_java_get_utf8_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, name_idx); + if (!name) name = strdup ("unknown"); + IFDBG eprintf("r_bin_java_read_next_attr: name_idx = %d is %s\n", name_idx, name); + type_info = r_bin_java_get_attr_type_by_name (name); + if (type_info) { IFDBG eprintf ("Typeinfo: %s, was %s\n", type_info->name, name); - free (name); - attr = type_info->allocs->new_obj (buffer, sz, buf_offset); + attr = type_info->allocs->new_obj (buffer, sz, buf_offset); if (attr) { attr->metas->ord = (R_BIN_JAVA_GLOBAL_BIN->attr_idx++); } + } else { + eprintf ("r_bin_java_read_next_attr_from_buffer: Cannot find type_info for %s\n", name); } + free (name); return attr; } @@ -2078,7 +2101,7 @@ R_API ut64 r_bin_java_parse_interfaces (RBinJavaObj *bin, const ut64 offset, con bin->interfaces_count = R_BIN_JAVA_USHORT (if_buf, 0); adv += 2; IFDBG eprintf ("Interfaces count: %d\n", bin->interfaces_count); - if ( bin->interfaces_count > 0 ) { + if (bin->interfaces_count > 0) { for (i = 0; i < bin->interfaces_count; i++) { interfaces_obj = r_bin_java_read_next_interface_item (bin, offset+adv, buf, len); if (interfaces_obj) { @@ -2120,7 +2143,7 @@ R_API ut64 r_bin_java_parse_fields (RBinJavaObj *bin, const ut64 offset, const u eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile after Field: %d.\n", i); break; } - }else{ + } else { IFDBG eprintf ("Failed to read Field %d\n", i); } } @@ -2133,16 +2156,18 @@ R_API ut64 r_bin_java_parse_attrs (RBinJavaObj *bin, const ut64 offset, const ut int i = 0; ut64 adv = 0; const ut8 * a_buf = buf + offset; - if (offset+8>=len) + if (offset+2>=len) { + // Check if we can read that USHORT return UT64_MAX; - r_list_free ( bin->attrs_list); + } + r_list_free (bin->attrs_list); bin->attrs_list = r_list_newf (r_bin_java_attribute_free); bin->attrs_offset = offset; - bin->attrs_count = R_BIN_JAVA_USHORT (a_buf,adv); + bin->attrs_count = R_BIN_JAVA_USHORT (a_buf, adv); adv += 2; if (bin->attrs_count > 0) { - for ( i=0; iattrs_count; i++,bin->attr_idx++) { - RBinJavaAttrInfo* attr = r_bin_java_read_next_attr (bin, adv+offset, buf, len); + for (i=0; iattrs_count; i++, bin->attr_idx++) { + RBinJavaAttrInfo* attr = r_bin_java_read_next_attr (bin, offset+adv, buf, len); if (!attr) { //eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile after Attribute: %d.\n", i); break; @@ -2186,17 +2211,17 @@ R_API ut64 r_bin_java_parse_methods (RBinJavaObj *bin, const ut64 offset, const r_list_append (bin->methods_list, method); } // Update Main, Init, or Class Init - if (method && !strcmp ( (const char *) method->name, "main")) { + if (method && !strcmp ((const char *) method->name, "main")) { bin->main = method; // get main code attr bin->main_code_attr = r_bin_java_get_attr_from_field (method, R_BIN_JAVA_ATTR_TYPE_CODE_ATTR, 0); } - else if (method && (!strcmp ( (const char *) method->name, "") || !strcmp ( (const char *) method->name, "init")) ) { + else if (method && (!strcmp ((const char *) method->name, "") || !strcmp ((const char *) method->name, "init"))) { IFDBG eprintf ("FOund an init function.\n"); bin->entrypoint = method; bin->entrypoint_code_attr = r_bin_java_get_attr_from_field (method, R_BIN_JAVA_ATTR_TYPE_CODE_ATTR, 0); } - else if (method && (!strcmp ( (const char *) method->name, "") || !strcmp ( (const char *) method->name, "cinit")) ) { + else if (method && (!strcmp ((const char *) method->name, "") || !strcmp ((const char *) method->name, "cinit"))) { bin->cf2.this_class_entrypoint = method; bin->cf2.this_class_entrypoint_code_attr = r_bin_java_get_attr_from_field (method, R_BIN_JAVA_ATTR_TYPE_CODE_ATTR, 0); } @@ -2227,7 +2252,7 @@ R_API int r_bin_java_load_bin (RBinJavaObj *bin, const ut8 * buf, ut64 buf_sz) { R_BIN_JAVA_GLOBAL_BIN = bin; if (!bin) return R_FALSE; r_bin_java_reset_bin_info (bin); - memcpy ((ut8* ) &bin->cf, buf, 10); + memcpy ((ut8*) &bin->cf, buf, 10); if (memcmp (bin->cf.cafebabe, "\xCA\xFE\xBA\xBE", 4)) { eprintf ("r_bin_java_new_bin: Invalid header (%02x %02x %02x %02x)\n", bin->cf.cafebabe[0], bin->cf.cafebabe[1], @@ -2298,7 +2323,7 @@ R_API RList * r_bin_java_get_entrypoints(RBinJavaObj* bin) { if (strcmp (fm_type->name, "main") == 0 || strcmp (fm_type->name, "") == 0 || strcmp (fm_type->name, "") == 0 || - strstr (fm_type->flags_str, "static") != 0 ) { + strstr (fm_type->flags_str, "static") != 0) { addr = R_NEW (RBinAddr); if (addr) { memset (addr, 0, sizeof (RBinAddr)); @@ -2321,7 +2346,7 @@ R_API RBinJavaField * r_bin_java_get_method_code_attribute_with_addr(RBinJavaObj r_list_foreach_safe (bin->methods_list, iter, iter_tmp, fm_type) { ut64 offset = r_bin_java_get_method_code_offset(fm_type) + bin->loadaddr, size = r_bin_java_get_method_code_size(fm_type); - if ( addr >= offset && addr <= size + offset) + if (addr >= offset && addr <= size + offset) res = fm_type; } return res; @@ -2371,7 +2396,7 @@ R_API ut64 r_bin_java_find_method_offset(RBinJavaObj *bin, const char* method_na RBinJavaField *method = NULL; ut64 offset = -1; r_list_foreach_safe (bin->methods_list, attr_iter, attr_iter_tmp, method) { - if(method && !strcmp ( (const char *) method->name, method_name) ) { + if(method && !strcmp ((const char *) method->name, method_name)) { offset = r_bin_java_get_method_code_offset (method) + bin->loadaddr; break; } @@ -2497,7 +2522,7 @@ R_API RBinSymbol* r_bin_java_create_new_symbol_from_ref(RBinJavaCPTypeObj *obj, char *class_name, *name, *type_name; if (obj == NULL || (obj->tag != R_BIN_JAVA_CP_METHODREF && obj->tag != R_BIN_JAVA_CP_INTERFACEMETHOD_REF && - obj->tag != R_BIN_JAVA_CP_FIELDREF) ) { + obj->tag != R_BIN_JAVA_CP_FIELDREF)) { free (sym); sym = NULL; return sym; @@ -2685,7 +2710,7 @@ R_API RList * r_bin_java_get_lib_names(RBinJavaObj * bin) { r_list_foreach (bin->cp_list, iter, cp_obj) { if (cp_obj && cp_obj->tag == R_BIN_JAVA_CP_CLASS && - (bin->cf2.this_class != cp_obj->info.cp_class.name_idx || !is_class_interface(bin, cp_obj) )) { + (bin->cf2.this_class != cp_obj->info.cp_class.name_idx || !is_class_interface(bin, cp_obj))) { char * name = r_bin_java_get_item_name_from_bin_cp_list (bin, cp_obj); r_list_append (lib_names, name); } @@ -2726,7 +2751,7 @@ R_API RList* r_bin_java_get_classes(RBinJavaObj *bin) { r_list_foreach_safe (bin->cp_list, iter, iter_tmp, cp_obj) { if (cp_obj && cp_obj->tag == R_BIN_JAVA_CP_CLASS && - (this_class_cp_obj != cp_obj && is_class_interface (bin, cp_obj) )) { + (this_class_cp_obj != cp_obj && is_class_interface (bin, cp_obj))) { class_ = R_NEW0 (RBinClass); class_->methods = r_bin_java_enum_class_methods (bin, cp_obj->info.cp_class.name_idx); class_->fields = r_bin_java_enum_class_fields (bin, cp_obj->info.cp_class.name_idx); @@ -3072,7 +3097,7 @@ R_API void r_bin_java_code_attr_free (void /*RBinJavaAttrInfo*/ *a) { } } -R_API void r_bin_java_exceptions_attr_free ( void /*RBinJavaAttrInfo*/ *a) { +R_API void r_bin_java_exceptions_attr_free (void /*RBinJavaAttrInfo*/ *a) { RBinJavaAttrInfo* attr = a; if (attr) { free (attr->name); @@ -3144,7 +3169,7 @@ R_API void r_bin_java_stack_frame_free (void /*RBinJavaStackMapFrame*/* o) { RBinJavaStackMapFrame* obj = o; if (obj) { r_list_free (obj->local_items); - r_list_free ( obj->stack_items); + r_list_free (obj->stack_items); free (obj->metas); free (obj); } @@ -3243,7 +3268,7 @@ R_API RBinJavaAttrInfo* r_bin_java_code_attr_new (ut8 *buffer, ut64 sz, ut64 buf attr->info.code_attr.code_length = R_BIN_JAVA_UINT (buffer, offset); offset += 4; attr->info.code_attr.code_offset = buf_offset+offset; - attr->info.code_attr.code = (ut8* ) malloc (attr->info.code_attr.code_length); + attr->info.code_attr.code = (ut8*) malloc (attr->info.code_attr.code_length); if (attr->info.code_attr.code == NULL) { eprintf ("Handling Code Attributes: Unable to allocate memory " "(%u bytes) for a code.\n", attr->info.code_attr.code_length); @@ -3283,7 +3308,7 @@ R_API RBinJavaAttrInfo* r_bin_java_code_attr_new (ut8 *buffer, ut64 sz, ut64 buf int size = (offsetfile_offset, _attr->name, _attr->size, _attr); @@ -3446,7 +3471,7 @@ R_API RBinJavaAttrInfo* r_bin_java_exceptions_attr_new (ut8 *buffer, ut64 sz, ut attr->type = R_BIN_JAVA_ATTR_TYPE_LINE_NUMBER_TABLE_ATTR; attr->info.exceptions_attr.number_of_exceptions = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; - attr->info.exceptions_attr.exception_idx_table = (ut16 *) malloc ( sizeof (ut16)* attr->info.exceptions_attr.number_of_exceptions); + attr->info.exceptions_attr.exception_idx_table = (ut16 *) malloc (sizeof (ut16)* attr->info.exceptions_attr.number_of_exceptions); for (i = 0; i < attr->info.exceptions_attr.number_of_exceptions; i++) { attr->info.exceptions_attr.exception_idx_table[i] = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; @@ -3482,7 +3507,7 @@ R_API RBinJavaAttrInfo* r_bin_java_inner_classes_attr_new (ut8* buffer, ut64 sz, attr->type = R_BIN_JAVA_ATTR_TYPE_INNER_CLASSES_ATTR; attr->info.inner_classes_attr.number_of_classes = R_BIN_JAVA_USHORT (buffer, offset); attr->info.inner_classes_attr.classes = r_list_newf (r_bin_java_inner_classes_attr_entry_free); - for(i = 0; i < attr->info.inner_classes_attr.number_of_classes; i++) { + for (i = 0; i < attr->info.inner_classes_attr.number_of_classes; i++) { cur_location = buf_offset + offset; icattr = R_NEW0(RBinJavaClassesAttribute); icattr->inner_class_info_idx = R_BIN_JAVA_USHORT (buffer, offset); @@ -3496,8 +3521,13 @@ R_API RBinJavaAttrInfo* r_bin_java_inner_classes_attr_new (ut8* buffer, ut64 sz, icattr->flags_str = retrieve_class_method_access_string(icattr->inner_class_access_flags); icattr->file_offset = cur_location; icattr->size = 8; - icattr->name = r_bin_java_get_item_name_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, r_bin_java_get_item_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, icattr->inner_name_idx)); - if(icattr->name == NULL) { + + RBinJavaCPTypeObj *obj = r_bin_java_get_item_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, icattr->inner_name_idx); + if (obj == NULL) { +eprintf ("BINCPLIS IS HULL %d\n", icattr->inner_name_idx); + } + icattr->name = r_bin_java_get_item_name_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, obj); + if (icattr->name == NULL) { icattr->name = r_str_dup (NULL, "NULL"); eprintf ("r_bin_java_inner_classes_attr: Unable to find the name for %d index.\n", icattr->inner_name_idx); } @@ -3607,7 +3637,7 @@ R_API RBinJavaAttrInfo* r_bin_java_source_debug_attr_new (ut8* buffer, ut64 sz, eprintf ("r_bin_java_source_debug_attr_new: Expected %d bytes got %lld bytes for debug_extension.\n", attr->length, (offset + sz)); } attr->info.debug_extensions.debug_extension = (ut8 *) malloc (attr->length); - if (attr->info.debug_extensions.debug_extension && (attr->length > (sz-offset)) ) { + if (attr->info.debug_extensions.debug_extension && (attr->length > (sz-offset))) { memcpy (attr->info.debug_extensions.debug_extension, buffer+offset, sz-offset); }else if (attr->info.debug_extensions.debug_extension) { memcpy (attr->info.debug_extensions.debug_extension, buffer+offset, attr->length); @@ -3759,16 +3789,15 @@ R_API RBinJavaAttrInfo* r_bin_java_local_variable_type_table_attr_new (ut8* buff lvattr->file_offset = cur_location; lvattr->name = r_bin_java_get_utf8_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, lvattr->name_idx); lvattr->size = 10; - if(lvattr->name == NULL) { - lvattr->name = r_str_dup (NULL, "NULL"); + if (!lvattr->name) { + lvattr->name = strdup ("NULL"); eprintf ("r_bin_java_local_variable_type_table_attr_new: Unable to find the name for %d index.\n", lvattr->name_idx); } lvattr->signature = r_bin_java_get_utf8_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, lvattr->signature_idx); - if(lvattr->signature == NULL) { - lvattr->signature = r_str_dup (NULL, "NULL"); + if (!lvattr->signature) { + lvattr->signature = strdup ("NULL"); eprintf ("r_bin_java_local_variable_type_table_attr_new: Unable to find the descriptor for %d index.\n", lvattr->signature_idx); } - r_list_append (attr->info.local_variable_type_table_attr.local_variable_table, lvattr); } //IFDBG r_bin_java_print_local_variable_type_table_attr_summary(attr); @@ -3878,7 +3907,7 @@ R_API RBinJavaVerificationObj* r_bin_java_read_from_buffer_verification_info_new stack_element->tag = buffer[offset]; offset += 1; if (stack_element->tag == R_BIN_JAVA_STACKMAP_OBJECT) { - /*if( (offset + 2) <= sz) { + /*if((offset + 2) <= sz) { stack_element->info.obj_val_cp_idx = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; }else{ @@ -3890,7 +3919,7 @@ R_API RBinJavaVerificationObj* r_bin_java_read_from_buffer_verification_info_new offset += 2; } else if (stack_element->tag == R_BIN_JAVA_STACKMAP_UNINIT) { - /*if( (offset + 2) <= sz) { + /*if((offset + 2) <= sz) { stack_element->info.uninit_offset = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; }else{ @@ -4121,11 +4150,11 @@ R_API RBinJavaStackMapFrame* r_bin_java_stack_map_frame_new (ut8* buffer, ut64 s IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_FULL_FRAME.\n"); stack_frame->offset_delta = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; - //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Code Size > 65535, read( %d bytes), offset = 0x%08x.\n", var_sz, stack_frame->offset_delta); + //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Code Size > 65535, read(%d bytes), offset = 0x%08x.\n", var_sz, stack_frame->offset_delta); // Read the number of variables based on the max # local variable stack_frame->number_of_locals = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; - //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Max ulocalvar > 65535, read( %d bytes), number_of_locals = 0x%08x.\n", var_sz, stack_frame->number_of_locals); + //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Max ulocalvar > 65535, read(%d bytes), number_of_locals = 0x%08x.\n", var_sz, stack_frame->number_of_locals); IFDBG r_bin_java_print_stack_map_frame_summary(stack_frame); // read the number of locals off the stack for (i = 0; i < stack_frame->number_of_locals; i++) { @@ -4143,7 +4172,7 @@ R_API RBinJavaStackMapFrame* r_bin_java_stack_map_frame_new (ut8* buffer, ut64 s // Read the number of stack items based on the max size of stack stack_frame->number_of_stack_items = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; - //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Max ustack items > 65535, read( %d bytes), number_of_locals = 0x%08x.\n", var_sz, stack_frame->number_of_stack_items); + //IFDBG eprintf ("r_bin_java_stack_map_frame_new: Max ustack items > 65535, read(%d bytes), number_of_locals = 0x%08x.\n", var_sz, stack_frame->number_of_stack_items); // read the stack items for (i = 0; i < stack_frame->number_of_stack_items; i++) { stack_element = r_bin_java_read_from_buffer_verification_info_new (buffer+offset, sz-offset, buf_offset+offset); @@ -4344,7 +4373,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_class_cp_new (RBinJavaObj *bin, ut8* buffer, ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_CLASS, tag, sz, "Class" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_CLASS, tag, sz, "Class"); if (quick_check > 0) { return obj; } @@ -4372,7 +4401,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_fieldref_cp_new (RBinJavaObj *bin, ut8* buff ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_FIELDREF, tag, sz, "FieldRef" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_FIELDREF, tag, sz, "FieldRef"); if (quick_check > 0) { return obj; } @@ -4404,7 +4433,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_methodref_cp_new (RBinJavaObj *bin, ut8* buf ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_METHODREF, tag, sz, "MethodRef" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_METHODREF, tag, sz, "MethodRef"); if (quick_check > 0) { return obj; } @@ -4435,7 +4464,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_interfacemethodref_cp_new (RBinJavaObj *bin, ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INTERFACEMETHOD_REF, tag, sz, "InterfaceMethodRef" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INTERFACEMETHOD_REF, tag, sz, "InterfaceMethodRef"); if (quick_check > 0) { return obj; } @@ -4468,7 +4497,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_string_cp_new (RBinJavaObj *bin, ut8* buffer ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_STRING, tag, sz, "String" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_STRING, tag, sz, "String"); if (quick_check > 0) { return (RBinJavaCPTypeObj*) obj; } @@ -4497,7 +4526,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_integer_cp_new (RBinJavaObj *bin, ut8* buffe ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INTEGER, tag, sz, "Integer" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INTEGER, tag, sz, "Integer"); if (quick_check > 0) { return obj; } @@ -4528,7 +4557,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_float_cp_new (RBinJavaObj *bin, ut8* buffer, ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_FLOAT, tag, sz, "Float" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_FLOAT, tag, sz, "Float"); if (quick_check > 0) { return obj; } @@ -4559,7 +4588,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_long_cp_new (RBinJavaObj *bin, ut8* buffer, ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_LONG, tag, sz, "Long" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_LONG, tag, sz, "Long"); if (quick_check > 0) { return obj; } @@ -4590,7 +4619,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_double_cp_new (RBinJavaObj *bin, ut8* buffer ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_DOUBLE, tag, sz, "Double" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_DOUBLE, tag, sz, "Double"); if (quick_check > 0) { return (RBinJavaCPTypeObj*) obj; } @@ -4620,7 +4649,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_utf8_cp_new (RBinJavaObj *bin, ut8* buffer, ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_UTF8, tag, sz, "Utf8" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_UTF8, tag, sz, "Utf8"); if (quick_check > 0) { return obj; } @@ -4665,7 +4694,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_name_and_type_cp_new (RBinJavaObj *bin, ut8* ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_NAMEANDTYPE, tag, sz, "RBinJavaCPTypeNameAndType" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_NAMEANDTYPE, tag, sz, "RBinJavaCPTypeNameAndType"); if (quick_check > 0) { return obj; } @@ -4698,7 +4727,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_methodtype_cp_new (RBinJavaObj *bin, ut8* bu ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_METHODTYPE, tag, sz, "RBinJavaCPTypeMethodType" ); + quick_check = r_bin_java_quick_check (R_BIN_JAVA_CP_METHODTYPE, tag, sz, "RBinJavaCPTypeMethodType"); if (quick_check > 0) { return obj; } @@ -4726,7 +4755,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_methodhandle_cp_new (RBinJavaObj *bin, ut8* ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_METHODHANDLE, tag, sz, "RBinJavaCPTypeMethodHandle" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_METHODHANDLE, tag, sz, "RBinJavaCPTypeMethodHandle"); if (quick_check > 0) { return obj; } @@ -4755,7 +4784,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_invokedynamic_cp_new (RBinJavaObj *bin, ut8* ut8 tag = buffer[0]; RBinJavaCPTypeObj *obj = NULL; int quick_check = 0; - quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INVOKEDYNAMIC, tag, sz, "RBinJavaCPTypeMethodHandle" ); + quick_check = r_bin_java_quick_check(R_BIN_JAVA_CP_INVOKEDYNAMIC, tag, sz, "RBinJavaCPTypeMethodHandle"); if (quick_check > 0) { return obj; } @@ -4774,7 +4803,7 @@ R_API RBinJavaCPTypeObj* r_bin_java_invokedynamic_cp_new (RBinJavaObj *bin, ut8* R_API int r_bin_java_check_reset_cp_obj(RBinJavaCPTypeObj* cp_obj, ut8 tag) { ut32 res = R_FALSE; - if ( tag > R_BIN_JAVA_CP_METAS_SZ) { + if (tag > R_BIN_JAVA_CP_METAS_SZ) { eprintf ("Invalid tag '%d'.\n", tag); return res; } @@ -4825,7 +4854,7 @@ R_API ut8 * r_bin_java_cp_get_8bytes(ut8 tag, ut32 *out_sz, const ut8 *buf, cons return buffer; } -R_API ut8 * r_bin_java_cp_append_classref_and_name (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len ) { +R_API ut8 * r_bin_java_cp_append_classref_and_name (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len) { ut16 use_name_idx = bin->cp_idx+1; ut8* bytes = NULL, *name_bytes = NULL; name_bytes = r_bin_java_cp_get_utf8 (R_BIN_JAVA_CP_UTF8, out_sz, (const ut8 *) classname, classname_len); @@ -4842,7 +4871,7 @@ R_API ut8 * r_bin_java_cp_append_classref_and_name (RBinJavaObj *bin, ut32 *out_ return bytes; } -R_API ut8 * r_bin_java_cp_get_fref_bytes (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx ) { +R_API ut8 * r_bin_java_cp_get_fref_bytes (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx) { ut8 *bytes = NULL, *fnt_bytes = NULL; RBinJavaCPTypeObj *ref_cp_obj = NULL; ut16 fnt_idx = 0, cref_idx = 0; @@ -4858,7 +4887,7 @@ R_API ut8 * r_bin_java_cp_get_fref_bytes (RBinJavaObj *bin, ut32 *out_sz, ut8 ta fnt_idx = bin->cp_idx+1; } if (cref_idx && fnt_idx) { - bytes = r_bin_java_cp_get_fm_ref (bin, out_sz, tag, cref_idx, fnt_idx ); + bytes = r_bin_java_cp_get_fm_ref (bin, out_sz, tag, cref_idx, fnt_idx); if (fnt_bytes) { ut8 *tbuf = malloc (fnt_len+*out_sz); // copy the bytes to the new buffer @@ -4876,21 +4905,21 @@ R_API ut8 * r_bin_java_cp_get_fref_bytes (RBinJavaObj *bin, ut32 *out_sz, ut8 ta -R_API ut8 * r_bin_java_cp_get_classref (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len, const ut16 name_idx ) { +R_API ut8 * r_bin_java_cp_get_classref (RBinJavaObj *bin, ut32 *out_sz, const char *classname, const ut32 classname_len, const ut16 name_idx) { ut16 use_name_idx = -1; ut8* bytes = NULL; if (name_idx == (ut16) -1 && classname && *classname && classname_len > 0) { // find class_name_idx by class name RList *results = r_bin_java_find_cp_const_by_val_utf8 (bin, (const ut8 *) classname, classname_len); - if ( r_list_length (results) == 1) { + if (r_list_length (results) == 1) { use_name_idx = (ut16) *((ut32 *) r_list_get_n (results, 0)); } r_list_free (results); } else if (name_idx != (ut16) -1 && name_idx != 0) { use_name_idx = name_idx; } - if (use_name_idx == (ut16) -1 && classname && *classname && classname_len > 0 ) { - bytes = r_bin_java_cp_append_classref_and_name (bin, out_sz, classname, classname_len ); + if (use_name_idx == (ut16) -1 && classname && *classname && classname_len > 0) { + bytes = r_bin_java_cp_append_classref_and_name (bin, out_sz, classname, classname_len); } else if (use_name_idx != (ut16) -1) { ut8* idx_addr = (ut8*) &use_name_idx; bytes = malloc (3); @@ -4902,11 +4931,11 @@ R_API ut8 * r_bin_java_cp_get_classref (RBinJavaObj *bin, ut32 *out_sz, const ch return bytes; } -R_API ut8 * r_bin_java_cp_get_fm_ref (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 class_idx, ut16 name_and_type_idx ) { +R_API ut8 * r_bin_java_cp_get_fm_ref (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 class_idx, ut16 name_and_type_idx) { return r_bin_java_cp_get_2_ut16 (bin, out_sz, tag, class_idx, name_and_type_idx); } -R_API ut8 * r_bin_java_cp_get_2_ut16 (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 ut16_one, ut16 ut16_two ) { +R_API ut8 * r_bin_java_cp_get_2_ut16 (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, ut16 ut16_one, ut16 ut16_two) { ut8* bytes = malloc (7); ut8* idx_addr = NULL; bytes [*out_sz] = tag; @@ -4922,7 +4951,7 @@ R_API ut8 * r_bin_java_cp_get_2_ut16 (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, u return bytes; } -R_API ut8 * r_bin_java_cp_get_name_type (RBinJavaObj *bin, ut32 *out_sz, ut16 name_idx, ut16 type_idx ) { +R_API ut8 * r_bin_java_cp_get_name_type (RBinJavaObj *bin, ut32 *out_sz, ut16 name_idx, ut16 type_idx) { return r_bin_java_cp_get_2_ut16 (bin, out_sz, R_BIN_JAVA_CP_NAMEANDTYPE, name_idx, type_idx); } @@ -4934,13 +4963,13 @@ R_API ut8 * r_bin_java_cp_get_utf8(ut8 tag, ut32 *out_sz, const ut8 *buf, const *out_sz = 0; return NULL; } - sz = R_BIN_JAVA_USHORT ( ((ut8 *)(ut16*)&t), 0); + sz = R_BIN_JAVA_USHORT (((ut8 *)(ut16*)&t), 0); *out_sz = 3 + t; // tag + sz + bytes buffer = malloc (*out_sz+3); // XXX - excess bytes are created to ensure null for string operations. memset (buffer, 0, *out_sz+3); buffer[0] = tag; - memcpy (buffer+1, (const char *) &sz, 2 ); + memcpy (buffer+1, (const char *) &sz, 2); memcpy (buffer+3, buf, *out_sz-3); return buffer; } @@ -4978,7 +5007,7 @@ R_API void r_bin_java_utf8_info_free (void /* RBinJavaCPTypeObj*/ *o) { // Deallocs for type objects R_API void r_bin_java_obj_free (void /*RBinJavaCPTypeObj*/ *o) { RBinJavaCPTypeObj* obj = o; - ( (RBinJavaCPTypeMetas *) obj->metas->type_info)->allocs->delete_obj (obj); + ((RBinJavaCPTypeMetas *) obj->metas->type_info)->allocs->delete_obj (obj); } R_API void r_bin_java_print_attr_summary(RBinJavaAttrInfo *attr) { @@ -6010,7 +6039,7 @@ R_API void r_bin_java_print_element_value_summary(RBinJavaElementValue *element_ name = ((RBinJavaElementValueMetas *)element_value->metas->type_info)->name; eprintf ("Element Value information:\n"); eprintf (" EV Pair File Offset: 0x%08"PFMT64x"\n", element_value->file_offset); - eprintf (" EV Value Type (%d): %s\n", element_value->tag, name ); + eprintf (" EV Value Type (%d): %s\n", element_value->tag, name); switch(element_value->tag) { case R_BIN_JAVA_EV_TAG_BYTE: case R_BIN_JAVA_EV_TAG_CHAR: @@ -6353,7 +6382,7 @@ R_API ut64 r_bin_java_element_value_calc_size(RBinJavaElementValue *element_valu //element_value->value.annotation_value.num_element_value_pairs = r_bin_java_read_short(bin, bin->b->cur); sz += 2; element_value->value.annotation_value.element_value_pairs = r_list_newf (r_bin_java_element_pair_free); - r_list_foreach_safe (element_value->value.annotation_value.element_value_pairs, iter, iter_tmp, ev_pairs ) { + r_list_foreach_safe (element_value->value.annotation_value.element_value_pairs, iter, iter_tmp, ev_pairs) { if (ev_pairs) { sz += r_bin_java_element_pair_calc_size(ev_pairs); } @@ -6376,7 +6405,7 @@ R_API RBinJavaElementValue* r_bin_java_element_value_new (ut8* buffer, ut64 sz, element_value->tag = buffer[offset]; element_value->size += 1; offset += 1; - element_value->metas->type_info = (void *) r_bin_java_get_ev_meta_from_tag( element_value->tag); + element_value->metas->type_info = (void *) r_bin_java_get_ev_meta_from_tag(element_value->tag); switch(element_value->tag) { case R_BIN_JAVA_EV_TAG_BYTE: case R_BIN_JAVA_EV_TAG_CHAR: @@ -7036,7 +7065,7 @@ R_API char * r_bin_java_resolve_cp_idx_type(RBinJavaObj *BIN_OBJ, int idx) { char *cp_name = NULL, *str = NULL; int memory_alloc = 0; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { //r_bin_java_new_bin(BIN_OBJ); return NULL; } @@ -7088,7 +7117,7 @@ R_API char * r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name *cp_name = NULL, *str = NULL; int memory_alloc = 0; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { //r_bin_java_new_bin(BIN_OBJ); return NULL; } @@ -7103,7 +7132,7 @@ R_API char * r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name return str; } cp_name = ((RBinJavaCPTypeMetas *) item->metas->type_info)->name; - if ( strcmp (cp_name, "Class") == 0 ) { + if (strcmp (cp_name, "Class") == 0) { item2 = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); //str = r_bin_java_get_name_from_bin_cp_list (BIN_OBJ, idx-1); class_str = empty; @@ -7130,7 +7159,7 @@ R_API char * r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name free (name_str); if (desc_str != empty) free (desc_str); - }else if ( strcmp (cp_name, "MethodRef") == 0 || + }else if (strcmp (cp_name, "MethodRef") == 0 || strcmp (cp_name, "FieldRef") == 0 || strcmp (cp_name, "InterfaceMethodRef") == 0) { /* @@ -7178,7 +7207,7 @@ R_API char * r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name free (string_str); } else if (strcmp (cp_name, "Utf8") == 0) { - char *tmp_str = convert_string ( (const char *) item->info.cp_utf8.bytes, item->info.cp_utf8.length); + char *tmp_str = convert_string ((const char *) item->info.cp_utf8.bytes, item->info.cp_utf8.length); ut32 tmp_str_len = tmp_str ? strlen (tmp_str) + 4 : 0; if (tmp_str) { str = malloc (tmp_str_len + 4); @@ -7260,7 +7289,7 @@ R_API ut8 r_bin_java_does_cp_idx_ref_field(RBinJavaObj *BIN_OBJ, int idx) { R_API char * r_bin_java_get_method_name(RBinJavaObj *bin_obj, ut32 idx){ char *name = NULL; - if (idx < r_list_length (bin_obj->methods_list) ) { + if (idx < r_list_length (bin_obj->methods_list)) { RBinJavaField *fm_type = r_list_get_n (bin_obj->methods_list, idx); name = strdup (fm_type->name); } @@ -7305,10 +7334,10 @@ R_API int r_bin_java_does_cp_obj_ref_idx (RBinJavaObj *bin_obj, RBinJavaCPTypeOb case R_BIN_JAVA_CP_INTERFACEMETHOD_REF: break; // check if idx is referenced here case R_BIN_JAVA_CP_FIELDREF: t_obj = r_bin_java_get_item_from_cp (bin_obj, cp_obj->info.cp_method.class_idx); - res = r_bin_java_does_cp_obj_ref_idx ( bin_obj, t_obj, idx); + res = r_bin_java_does_cp_obj_ref_idx (bin_obj, t_obj, idx); if (res == R_TRUE) break; t_obj = r_bin_java_get_item_from_cp (bin_obj, cp_obj->info.cp_method.name_and_type_idx); - res = r_bin_java_does_cp_obj_ref_idx ( bin_obj, t_obj, idx); + res = r_bin_java_does_cp_obj_ref_idx (bin_obj, t_obj, idx); break; case R_BIN_JAVA_CP_NAMEANDTYPE: break;// check if idx is referenced here obj->info.cp_name_and_type.name_idx @@ -7327,7 +7356,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_long (RBinJavaObj *bin_obj, const eprintf ("Looking for 0x%08x\n", R_BIN_JAVA_UINT (bytes, 0)); r_list_foreach (bin_obj->cp_list, iter, cp_obj) { if (cp_obj->tag == R_BIN_JAVA_CP_LONG) { - if (len == 8 && r_bin_java_raw_to_long (cp_obj->info.cp_long.bytes.raw, 0) == r_bin_java_raw_to_long (bytes, 0) ) { + if (len == 8 && r_bin_java_raw_to_long (cp_obj->info.cp_long.bytes.raw, 0) == r_bin_java_raw_to_long (bytes, 0)) { // TODO: we can safely store a ut32 inside the list without having to allocate it v = malloc (sizeof (ut32)); *v = cp_obj->idx; @@ -7346,7 +7375,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_double (RBinJavaObj *bin_obj, cons eprintf ("Looking for %f\n", r_bin_java_raw_to_double (bytes, 0)); r_list_foreach (bin_obj->cp_list, iter, cp_obj) { if (cp_obj->tag == R_BIN_JAVA_CP_DOUBLE) { - if ( len == 8 && r_bin_java_raw_to_double (cp_obj->info.cp_long.bytes.raw, 0) == r_bin_java_raw_to_double (bytes, 0) ) { + if (len == 8 && r_bin_java_raw_to_double (cp_obj->info.cp_long.bytes.raw, 0) == r_bin_java_raw_to_double (bytes, 0)) { v = malloc (sizeof (ut32)); *v = cp_obj->idx; r_list_append (res, v); @@ -7364,7 +7393,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_float (RBinJavaObj *bin_obj, const eprintf ("Looking for %f\n", R_BIN_JAVA_FLOAT (bytes, 0)); r_list_foreach (bin_obj->cp_list, iter, cp_obj) { if (cp_obj->tag == R_BIN_JAVA_CP_FLOAT) { - if ( len == 4 && R_BIN_JAVA_FLOAT (cp_obj->info.cp_long.bytes.raw, 0) == R_BIN_JAVA_FLOAT (bytes, 0) ) { + if (len == 4 && R_BIN_JAVA_FLOAT (cp_obj->info.cp_long.bytes.raw, 0) == R_BIN_JAVA_FLOAT (bytes, 0)) { v = malloc (sizeof (ut32)); *v = cp_obj->idx; r_list_append (res, v); @@ -7374,7 +7403,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_float (RBinJavaObj *bin_obj, const return res; } -R_API RList * r_bin_java_find_cp_const_by_val( RBinJavaObj *bin_obj, const ut8 *bytes, ut32 len, const char t) { +R_API RList * r_bin_java_find_cp_const_by_val(RBinJavaObj *bin_obj, const ut8 *bytes, ut32 len, const char t) { switch (t) { case R_BIN_JAVA_CP_UTF8: return r_bin_java_find_cp_const_by_val_utf8 (bin_obj, bytes, len); case R_BIN_JAVA_CP_INTEGER: return r_bin_java_find_cp_const_by_val_int (bin_obj, bytes, len); @@ -7392,7 +7421,7 @@ R_API RList * r_bin_java_find_cp_const_by_val( RBinJavaObj *bin_obj, const ut8 * // Attempted to clean up these functions and remove them since they are "unused" but without // them there are some compile time warnings, because other projects actually depend on these // for some form of information. -R_API void U(add_cp_objs_to_sdb)( RBinJavaObj *bin){ +R_API void U(add_cp_objs_to_sdb)(RBinJavaObj *bin){ /* Add Constant Pool Serialized Object to an Array the key for this info is: @@ -7421,7 +7450,7 @@ R_API void U(add_cp_objs_to_sdb)( RBinJavaObj *bin){ // 4 - format, 8 number, 1 null byte, 7 "unknown" key_buf_size = strlen(class_name) + 4 + 8 + 1; key = malloc(key_buf_size); - if ( key == NULL) { + if (key == NULL) { if (free_class_name) free (class_name); return; } @@ -7437,7 +7466,7 @@ R_API void U(add_cp_objs_to_sdb)( RBinJavaObj *bin){ cp_obj = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (bin, idx); IFDBG eprintf("Adding %s to the sdb.\n", key); if (cp_obj) { - value = ( (RBinJavaCPTypeMetas *) + value = ((RBinJavaCPTypeMetas *) cp_obj->metas->type_info)-> allocs->stringify_obj (cp_obj); sdb_set (bin->kv, key, value, 0); @@ -7614,38 +7643,38 @@ R_API void U(add_method_infos_to_sdb)(RBinJavaObj *bin){ if (free_class_name) free (class_name); } -R_API RList * U(r_bin_java_get_args_from_bin) ( RBinJavaObj *bin_obj, ut64 addr) { +R_API RList * U(r_bin_java_get_args_from_bin) (RBinJavaObj *bin_obj, ut64 addr) { RBinJavaField *fm_type = r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr); return fm_type ? r_bin_java_get_args (fm_type) : NULL; } -R_API RList * U(r_bin_java_get_ret_from_bin) ( RBinJavaObj *bin_obj, ut64 addr) { +R_API RList * U(r_bin_java_get_ret_from_bin) (RBinJavaObj *bin_obj, ut64 addr) { RBinJavaField *fm_type = r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr); return fm_type ? r_bin_java_get_ret (fm_type) : NULL; } -R_API char * U(r_bin_java_get_fcn_name_from_bin)( RBinJavaObj *bin_obj, ut64 addr) { +R_API char * U(r_bin_java_get_fcn_name_from_bin)(RBinJavaObj *bin_obj, ut64 addr) { RBinJavaField *fm_type = r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr); return fm_type && fm_type->name ? strdup (fm_type->name) : NULL; } -R_API int U(r_bin_java_is_method_static)( RBinJavaObj *bin_obj, ut64 addr) { +R_API int U(r_bin_java_is_method_static)(RBinJavaObj *bin_obj, ut64 addr) { RBinJavaField *fm_type = r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr); return fm_type && fm_type->flags & R_BIN_JAVA_METHOD_ACC_STATIC; } -R_API int U(r_bin_java_is_method_private) ( RBinJavaObj *bin_obj, ut64 addr) { +R_API int U(r_bin_java_is_method_private) (RBinJavaObj *bin_obj, ut64 addr) { return r_bin_java_is_fm_type_private (r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr)); } -R_API int U(r_bin_java_is_method_protected)( RBinJavaObj *bin_obj, ut64 addr) { +R_API int U(r_bin_java_is_method_protected)(RBinJavaObj *bin_obj, ut64 addr) { return r_bin_java_is_fm_type_protected ( r_bin_java_get_method_code_attribute_with_addr (bin_obj, addr)); } -R_API int r_bin_java_print_method_idx_summary( RBinJavaObj *bin_obj, ut32 idx) { +R_API int r_bin_java_print_method_idx_summary(RBinJavaObj *bin_obj, ut32 idx) { int res = R_FALSE; - if (idx < r_list_length (bin_obj->methods_list) ) { + if (idx < r_list_length (bin_obj->methods_list)) { RBinJavaField *fm_type = r_list_get_n (bin_obj->methods_list, idx); r_bin_java_print_method_summary (fm_type); res = R_TRUE; @@ -7653,7 +7682,7 @@ R_API int r_bin_java_print_method_idx_summary( RBinJavaObj *bin_obj, ut32 idx) { return res; } -R_API ut32 r_bin_java_get_method_count( RBinJavaObj *bin_obj) { +R_API ut32 r_bin_java_get_method_count(RBinJavaObj *bin_obj) { return r_list_length (bin_obj->methods_list); } @@ -7709,7 +7738,7 @@ R_API RList * r_bin_java_get_method_exception_table_with_addr(RBinJavaObj *bin, r_list_foreach_safe (bin->methods_list, iter, iter_tmp, fm_type) { ut64 offset = r_bin_java_get_method_code_offset(fm_type) + bin->loadaddr, size = r_bin_java_get_method_code_size(fm_type); - if ( addr >= offset && addr <= size + offset) + if (addr >= offset && addr <= size + offset) res = fm_type; } if (res) { @@ -7722,7 +7751,7 @@ R_API RList * r_bin_java_get_method_exception_table_with_addr(RBinJavaObj *bin, R_API const RList* r_bin_java_get_methods_list(RBinJavaObj* bin) { if (bin) { return bin->methods_list; - } else if ( R_BIN_JAVA_GLOBAL_BIN) { + } else if (R_BIN_JAVA_GLOBAL_BIN) { return R_BIN_JAVA_GLOBAL_BIN->methods_list; } return NULL; @@ -7739,7 +7768,7 @@ R_API RList* r_bin_java_get_bin_obj_list_thru_obj(RBinJavaObj *bin_obj) { return the_list; } -R_API RList * r_bin_java_extract_all_bin_type_values( RBinJavaObj * bin_obj) { +R_API RList * r_bin_java_extract_all_bin_type_values(RBinJavaObj * bin_obj) { RListIter *fm_type_iter; RList *all_types = r_list_new (); RBinJavaField *fm_type; @@ -7771,7 +7800,7 @@ R_API RList * r_bin_java_get_method_definitions(RBinJavaObj *bin) { RList *the_list = r_list_new (); RListIter *iter = NULL; if (!bin) return the_list; - r_list_foreach ( bin->methods_list, iter, fm_type) { + r_list_foreach (bin->methods_list, iter, fm_type) { char *method_proto = r_bin_java_get_method_definition (fm_type); //eprintf ("Method prototype: %s\n", method_proto); r_list_append(the_list, method_proto); @@ -7784,7 +7813,7 @@ R_API RList * r_bin_java_get_field_definitions(RBinJavaObj *bin) { RList *the_list = r_list_new (); RListIter *iter = NULL; if (!bin) return the_list; - r_list_foreach ( bin->fields_list, iter, fm_type) { + r_list_foreach (bin->fields_list, iter, fm_type) { char *field_def = r_bin_java_get_field_definition (fm_type); //eprintf ("Field def: %s, %s, %s, %s\n", fm_type->name, fm_type->descriptor, fm_type->flags_str, field_def); r_list_append(the_list, field_def); @@ -7797,8 +7826,8 @@ R_API RList * r_bin_java_get_import_definitions(RBinJavaObj *bin) { RListIter *iter = NULL; char *new_str; if (!bin || !the_list) return the_list; - r_list_foreach ( the_list, iter, new_str) { - while ( *new_str ) { + r_list_foreach (the_list, iter, new_str) { + while (*new_str) { if (*new_str == '/') *new_str = '.'; new_str ++; } @@ -7813,7 +7842,7 @@ R_API RList * r_bin_java_get_field_offsets(RBinJavaObj *bin) { ut64 *paddr = NULL; if (!bin) return the_list; the_list->free = free; - r_list_foreach ( bin->fields_list, iter, fm_type) { + r_list_foreach (bin->fields_list, iter, fm_type) { paddr = malloc (sizeof(ut64)); *paddr = fm_type->file_offset + bin->loadaddr; //eprintf ("Field def: %s, %s, %s, %s\n", fm_type->name, fm_type->descriptor, fm_type->flags_str, field_def); @@ -7829,7 +7858,7 @@ R_API RList * r_bin_java_get_method_offsets(RBinJavaObj *bin) { ut64 *paddr = NULL; if (!bin) return the_list; the_list->free = free; - r_list_foreach ( bin->methods_list, iter, fm_type) { + r_list_foreach (bin->methods_list, iter, fm_type) { paddr = malloc (sizeof(ut64)); *paddr = fm_type->file_offset + bin->loadaddr; r_list_append(the_list, paddr); @@ -7879,7 +7908,7 @@ R_API char * r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { *cp_name = NULL, *str = NULL, *out = NULL; int memory_alloc = 0; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { //r_bin_java_new_bin(BIN_OBJ); return NULL; } @@ -7891,7 +7920,7 @@ R_API char * r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { return NULL; } cp_name = ((RBinJavaCPTypeMetas *) item->metas->type_info)->name; - if ( strcmp (cp_name, "Class") == 0 ) { + if (strcmp (cp_name, "Class") == 0) { item2 = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); //str = r_bin_java_get_name_from_bin_cp_list (BIN_OBJ, idx-1); class_str = empty; @@ -7920,7 +7949,7 @@ R_API char * r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { free (name_str); if (desc_str != empty) free (desc_str); - }else if ( strcmp (cp_name, "MethodRef") == 0 || + }else if (strcmp (cp_name, "MethodRef") == 0 || strcmp (cp_name, "FieldRef") == 0 || strcmp (cp_name, "InterfaceMethodRef") == 0) { /* @@ -8019,7 +8048,7 @@ R_API char * r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { free (str); str = out; } - } else if (strcmp (cp_name, "NameAndType") == 0) { + } else if (!strcmp (cp_name, "NameAndType")) { name_str = r_bin_java_get_item_name_from_bin_cp_list (BIN_OBJ, item); if (!name_str) name_str = empty; @@ -8053,7 +8082,7 @@ R_API char * r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { R_API ut64 r_bin_java_resolve_cp_idx_address(RBinJavaObj *BIN_OBJ, int idx) { RBinJavaCPTypeObj *item = NULL; ut64 addr = -1; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { return -1; } item = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); @@ -8065,12 +8094,12 @@ R_API ut64 r_bin_java_resolve_cp_idx_address(RBinJavaObj *BIN_OBJ, int idx) { R_API char * r_bin_java_resolve_cp_idx_to_string(RBinJavaObj *BIN_OBJ, int idx) { RBinJavaCPTypeObj *item = NULL; char *value = NULL; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { return NULL; } item = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); if (item) { - value = ( (RBinJavaCPTypeMetas *) + value = ((RBinJavaCPTypeMetas *) item->metas->type_info)-> allocs->stringify_obj (item); } @@ -8079,12 +8108,12 @@ R_API char * r_bin_java_resolve_cp_idx_to_string(RBinJavaObj *BIN_OBJ, int idx) R_API int r_bin_java_resolve_cp_idx_print_summary(RBinJavaObj *BIN_OBJ, int idx) { RBinJavaCPTypeObj *item = NULL; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { return R_FALSE; } item = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); if (item) { - ( (RBinJavaCPTypeMetas *) + ((RBinJavaCPTypeMetas *) item->metas->type_info)-> allocs->print_summary (item); } else { @@ -8104,7 +8133,7 @@ R_API ConstJavaValue * U(r_bin_java_resolve_to_const_value)(RBinJavaObj *BIN_OBJ *empty = "", *cp_name = NULL; result->type = "unknown"; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { //r_bin_java_new_bin(BIN_OBJ); return result; } @@ -8116,7 +8145,7 @@ R_API ConstJavaValue * U(r_bin_java_resolve_to_const_value)(RBinJavaObj *BIN_OBJ return result; } cp_name = ((RBinJavaCPTypeMetas *) item->metas->type_info)->name; - if ( strcmp (cp_name, "Class") == 0 ) { + if (strcmp (cp_name, "Class") == 0) { item2 = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); //str = r_bin_java_get_name_from_bin_cp_list (BIN_OBJ, idx-1); class_str = empty; @@ -8140,7 +8169,7 @@ R_API ConstJavaValue * U(r_bin_java_resolve_to_const_value)(RBinJavaObj *BIN_OBJ free (name_str); if (desc_str != empty) free (desc_str); - }else if ( strcmp (cp_name, "MethodRef") == 0 || + }else if (strcmp (cp_name, "MethodRef") == 0 || strcmp (cp_name, "FieldRef") == 0 || strcmp (cp_name, "InterfaceMethodRef") == 0) { /* @@ -8175,7 +8204,7 @@ R_API ConstJavaValue * U(r_bin_java_resolve_to_const_value)(RBinJavaObj *BIN_OBJ length = strlen (empty); } result->type = "str"; - result->value._str = R_NEW0 (struct java_const_value_str_t ); + result->value._str = R_NEW0 (struct java_const_value_str_t); result->value._str->str = malloc (length); result->value._str->len = length; memcpy (result->value._str->str, string_str, length); @@ -8239,9 +8268,9 @@ R_API void U(r_bin_java_free_const_value)(ConstJavaValue * cp_value) { free (cp_value); } -R_API char * r_bin_java_get_field_name ( RBinJavaObj *bin_obj, ut32 idx){ +R_API char * r_bin_java_get_field_name (RBinJavaObj *bin_obj, ut32 idx){ char *name = NULL; - if (idx < r_list_length (bin_obj->fields_list) ) { + if (idx < r_list_length (bin_obj->fields_list)) { RBinJavaField *fm_type = r_list_get_n (bin_obj->fields_list, idx); name = strdup (fm_type->name); } @@ -8250,7 +8279,7 @@ R_API char * r_bin_java_get_field_name ( RBinJavaObj *bin_obj, ut32 idx){ R_API int r_bin_java_print_field_idx_summary (RBinJavaObj *bin_obj, ut32 idx) { int res = R_FALSE; - if (idx < r_list_length (bin_obj->fields_list) ) { + if (idx < r_list_length (bin_obj->fields_list)) { RBinJavaField *fm_type = r_list_get_n (bin_obj->fields_list, idx); r_bin_java_print_field_summary (fm_type); res = R_TRUE; @@ -8258,11 +8287,11 @@ R_API int r_bin_java_print_field_idx_summary (RBinJavaObj *bin_obj, ut32 idx) { return res; } -R_API ut32 r_bin_java_get_field_count ( RBinJavaObj *bin_obj) { +R_API ut32 r_bin_java_get_field_count (RBinJavaObj *bin_obj) { return r_list_length (bin_obj->fields_list); } -R_API RList * r_bin_java_get_field_num_name ( RBinJavaObj *bin_obj) { +R_API RList * r_bin_java_get_field_num_name (RBinJavaObj *bin_obj) { ut32 i = 0; RBinJavaField *fm_type; RListIter *iter = NULL; @@ -8285,7 +8314,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_utf8 (RBinJavaObj *bin_obj, const r_list_foreach (bin_obj->cp_list, iter, cp_obj) { if (cp_obj->tag == R_BIN_JAVA_CP_UTF8) { IFDBG eprintf ("In UTF-8 Looking @ %s\n", cp_obj->info.cp_utf8.bytes); - IFDBG eprintf ("UTF-8 len = %d and memcmp = %d\n", cp_obj->info.cp_utf8.length, memcmp (bytes, cp_obj->info.cp_utf8.bytes, len) ); + IFDBG eprintf ("UTF-8 len = %d and memcmp = %d\n", cp_obj->info.cp_utf8.length, memcmp (bytes, cp_obj->info.cp_utf8.bytes, len)); if (len == cp_obj->info.cp_utf8.length && !memcmp (bytes, cp_obj->info.cp_utf8.bytes, len)) { v = malloc (sizeof (ut32)); *v = cp_obj->metas->ord; @@ -8304,7 +8333,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_int (RBinJavaObj *bin_obj, const u eprintf ("Looking for 0x%08x\n", (ut32)R_BIN_JAVA_UINT (bytes, 0)); r_list_foreach (bin_obj->cp_list, iter, cp_obj) { if (cp_obj->tag == R_BIN_JAVA_CP_INTEGER) { - if ( len == 4 && R_BIN_JAVA_UINT (bytes, 0) == R_BIN_JAVA_UINT (cp_obj->info.cp_integer.bytes.raw, 0) ) { + if (len == 4 && R_BIN_JAVA_UINT (bytes, 0) == R_BIN_JAVA_UINT (cp_obj->info.cp_integer.bytes.raw, 0)) { v = malloc (sizeof (ut32)); *v = cp_obj->idx; r_list_append (res, v); @@ -8316,7 +8345,7 @@ R_API RList * r_bin_java_find_cp_const_by_val_int (RBinJavaObj *bin_obj, const u R_API char r_bin_java_resolve_cp_idx_tag(RBinJavaObj *BIN_OBJ, int idx) { RBinJavaCPTypeObj *item = NULL; - if (BIN_OBJ && BIN_OBJ->cp_count < 1 ) { + if (BIN_OBJ && BIN_OBJ->cp_count < 1) { //r_bin_java_new_bin(BIN_OBJ); return R_BIN_JAVA_CP_UNKNOWN; } @@ -8395,7 +8424,7 @@ R_API int U(r_bin_java_utf8_cp_set)(RBinJavaObj *bin, ut16 idx, const ut8* buffe eprintf ("Not supporting the overwrite of CP Objects with one of a different size.\n"); return R_FALSE; } - if (cp_obj->info.cp_utf8.length != len ) { + if (cp_obj->info.cp_utf8.length != len) { eprintf ("Not supporting the resize, rewriting utf8 string up to %d bytes.\n", cp_obj->info.cp_utf8.length); if (cp_obj->info.cp_utf8.length > len) { eprintf ("Remaining %d bytes will be filled with \\x00.\n", cp_obj->info.cp_utf8.length - len); @@ -8447,12 +8476,12 @@ R_API ut64 r_bin_java_get_method_end(RBinJavaObj *bin, RBinJavaField *fm_type){ + r_bin_java_get_method_code_size(fm_type); } -R_API ut8 * U(r_bin_java_cp_append_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx ) { - return r_bin_java_cp_get_fref_bytes (bin, out_sz, R_BIN_JAVA_CP_METHODREF, cn_idx, fn_idx, ft_idx ); +R_API ut8 * U(r_bin_java_cp_append_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx) { + return r_bin_java_cp_get_fref_bytes (bin, out_sz, R_BIN_JAVA_CP_METHODREF, cn_idx, fn_idx, ft_idx); } -R_API ut8 * U(r_bin_java_cp_append_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx ) { - return r_bin_java_cp_get_fref_bytes (bin, out_sz, R_BIN_JAVA_CP_FIELDREF, cn_idx, fn_idx, ft_idx ); +R_API ut8 * U(r_bin_java_cp_append_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 cn_idx, ut16 fn_idx, ut16 ft_idx) { + return r_bin_java_cp_get_fref_bytes (bin, out_sz, R_BIN_JAVA_CP_FIELDREF, cn_idx, fn_idx, ft_idx); } R_API char * r_bin_java_unmangle_without_flags(const char *name, const char *descriptor) { @@ -8492,7 +8521,7 @@ R_API RBinJavaCPTypeMetas* U(r_bin_java_get_cp_meta_from_tag)(ut8 tag) { ut16 i = 0; // set default to unknown. RBinJavaCPTypeMetas *res = &R_BIN_JAVA_CP_METAS[2]; - for (i = 0; i < R_BIN_JAVA_CP_METAS_SZ; i++ ) { + for (i = 0; i < R_BIN_JAVA_CP_METAS_SZ; i++) { if (tag == R_BIN_JAVA_CP_METAS[i].tag) { res = &R_BIN_JAVA_CP_METAS[i]; break; @@ -8501,7 +8530,7 @@ R_API RBinJavaCPTypeMetas* U(r_bin_java_get_cp_meta_from_tag)(ut8 tag) { return res; } -R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, const char *cname, const ut32 c_len, const char *fname, const ut32 f_len, const char *tname, const ut32 t_len ) { +R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut32 *out_sz, ut8 tag, const char *cname, const ut32 c_len, const char *fname, const ut32 f_len, const char *tname, const ut32 t_len) { ut32 cn_len = 0, fn_len = 0, ft_len = 0; ut16 cn_idx = 0, fn_idx = 0, ft_idx = 0; ut8* bytes = NULL, *cn_bytes = NULL, *fn_bytes = NULL, *ft_bytes = NULL, *cref_bytes = NULL, *fref_bytes = NULL, *fnt_bytes = NULL; @@ -8519,7 +8548,7 @@ R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut3 if (cn_bytes && fn_bytes && ft_bytes) { ut32 cref_len = 0, fnt_len = 0, fref_len = 0; ut32 cref_idx = 0, fnt_idx = 0; - cref_bytes = r_bin_java_cp_get_classref (bin, &cref_len, NULL, 0, cn_idx ); + cref_bytes = r_bin_java_cp_get_classref (bin, &cref_len, NULL, 0, cn_idx); cref_idx = bin->cp_idx+3; fnt_bytes = r_bin_java_cp_get_name_type (bin, &fnt_len, fn_idx, ft_idx); fnt_idx = bin->cp_idx+4; @@ -8554,11 +8583,11 @@ R_API ut8 * U(r_bin_java_cp_append_ref_cname_fname_ftype) (RBinJavaObj *bin, ut3 free (cref_bytes); return bytes; } -R_API ut8 * U(r_bin_java_cp_get_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx ) { - return r_bin_java_cp_get_fm_ref (bin, out_sz, R_BIN_JAVA_CP_METHODREF, class_idx, name_and_type_idx ); +R_API ut8 * U(r_bin_java_cp_get_method_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx) { + return r_bin_java_cp_get_fm_ref (bin, out_sz, R_BIN_JAVA_CP_METHODREF, class_idx, name_and_type_idx); } -R_API ut8 * U(r_bin_java_cp_get_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx ) { - return r_bin_java_cp_get_fm_ref (bin, out_sz, R_BIN_JAVA_CP_FIELDREF, class_idx, name_and_type_idx ); +R_API ut8 * U(r_bin_java_cp_get_field_ref) (RBinJavaObj *bin, ut32 *out_sz, ut16 class_idx, ut16 name_and_type_idx) { + return r_bin_java_cp_get_fm_ref (bin, out_sz, R_BIN_JAVA_CP_FIELDREF, class_idx, name_and_type_idx); } R_API void U(deinit_java_type_null)() { @@ -8566,7 +8595,7 @@ R_API void U(deinit_java_type_null)() { } R_API RBinJavaCPTypeObj* r_bin_java_get_item_from_cp(RBinJavaObj *bin, int i) { - if (i < 1 || i > bin->cf.cp_count ) + if (i < 1 || i > bin->cf.cp_count) return &R_BIN_JAVA_NULL_TYPE; RBinJavaCPTypeObj* obj = (RBinJavaCPTypeObj*)r_list_get_n (bin->cp_list, i); if (obj == NULL) @@ -8653,13 +8682,13 @@ R_API ut64 r_bin_java_calc_class_size(ut8* bytes, ut64 size){ return bin_size; } -R_API int U(r_bin_java_get_cp_idx_with_name) ( RBinJavaObj *bin_obj, const char * name, ut32 len) { +R_API int U(r_bin_java_get_cp_idx_with_name) (RBinJavaObj *bin_obj, const char * name, ut32 len) { RListIter *iter = NULL; RBinJavaCPTypeObj *obj; int res = 0; r_list_foreach (bin_obj->cp_list, iter, obj) { if (obj->tag == R_BIN_JAVA_CP_UTF8) { - if ( !strncmp ( name, (const char *) obj->info.cp_utf8.bytes, len) ) { + if (!strncmp (name, (const char *) obj->info.cp_utf8.bytes, len)) { res = obj->metas->ord; break; }