From a638f6a073629bf711779cdba83f39bbf2f14c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20=C3=80lvarez=20i=20Capilla?= Date: Tue, 8 Feb 2022 14:53:28 +0100 Subject: [PATCH] Code cleanup in shlr/java --- shlr/java/class.c | 888 +++++++++++++++++++--------------------------- 1 file changed, 369 insertions(+), 519 deletions(-) diff --git a/shlr/java/class.c b/shlr/java/class.c index 65a089b3d5cae..68e0dbd825d55 100644 --- a/shlr/java/class.c +++ b/shlr/java/class.c @@ -1,4 +1,4 @@ -/* Apache 2.0 - Copyright 2007-2018 - pancake and dso +/* Apache 2.0 - Copyright 2007-2022 - pancake and dso class.c rewrite: Adam Pridgen */ #include @@ -13,10 +13,10 @@ #include "class.h" #include "dsojson.h" -static R_TH_LOCAL PrintfCallback Eprintf =(PrintfCallback) printf; #ifdef IFDBG #undef IFDBG #endif + #define DO_THE_DBG 0 #define IFDBG if (DO_THE_DBG) #define IFINT if (0) @@ -108,8 +108,8 @@ R_API void r_bin_java_print_verification_info_summary(RBinJavaVerificationObj *o R_API RBinJavaStackMapFrame *r_bin_java_build_stack_frame_from_local_variable_table(RBinJavaObj *bin, RBinJavaAttrInfo *attr); R_API void U(r_bin_java_print_stack_map_append_frame_summary)(RBinJavaStackMapFrame * obj); R_API void U(r_bin_java_stack_frame_default_free)(void /*RBinJavaStackMapFrame*/ *stack_frame); -R_API void U(r_bin_java_stack_frame_do_nothing_free)(void /*RBinJavaStackMapFrame*/ *stack_frame); -R_API void U(r_bin_java_stack_frame_do_nothing_new)(RBinJavaObj * bin, RBinJavaStackMapFrame * stack_frame, ut64 offset); +// R_API void U(r_bin_java_stack_frame_do_nothing_free)(void /*RBinJavaStackMapFrame*/ *stack_frame); +// R_API void U(r_bin_java_stack_frame_do_nothing_new)(RBinJavaObj * bin, RBinJavaStackMapFrame * stack_frame, ut64 offset); R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz, RBinJavaStackMapFrame *p_frame, ut64 buf_offset); // R_API RBinJavaStackMapFrame* r_bin_java_stack_map_frame_new (ut8* buffer, ut64 sz, ut64 buf_offset); R_API RBinJavaElementValue *r_bin_java_element_value_new(ut8 *buffer, ut64 sz, ut64 buf_offset); @@ -301,10 +301,6 @@ R_API ut32 U(r_bin_java_swap_uint)(ut32 x) { return (Byte0 << 24) | (Byte1 << 8) | (Byte2 >> 8) | (Byte3 >> 24); } -static R_TH_LOCAL bool R_BIN_JAVA_NULL_TYPE_INITTED = false; -// XXX - this is a global variable used while parsing the class file -// this variable should DIE. -static R_TH_LOCAL RBinJavaObj *R_BIN_JAVA_GLOBAL_BIN = NULL; static RBinJavaAccessFlags FIELD_ACCESS_FLAGS[] = { { "public", R_BIN_JAVA_FIELD_ACC_PUBLIC, 6 }, { "private", R_BIN_JAVA_FIELD_ACC_PRIVATE, 7 }, @@ -375,7 +371,10 @@ static RBinJavaRefMetas R_BIN_JAVA_REF_METAS[] = { { "NewInvokeSpecial", R_BIN_JAVA_REF_NEWINVOKESPECIAL }, { "InvokeInterface", R_BIN_JAVA_REF_INVOKEINTERFACE } }; -static ut16 R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ = 14; +static const ut16 R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ = 14; +static R_TH_LOCAL bool R_BIN_JAVA_NULL_TYPE_INITTED = false; +static R_TH_LOCAL RBinJavaObj *R_BIN_JAVA_GLOBAL_BIN = NULL; + static RBinJavaElementValueMetas R_BIN_JAVA_ELEMENT_VALUE_METAS[] = { { "Byte", R_BIN_JAVA_EV_TAG_BYTE, NULL }, { "Char", R_BIN_JAVA_EV_TAG_CHAR, NULL }, @@ -524,7 +523,6 @@ R_API void r_bin_java_reset_bin_info(RBinJavaObj *bin) { r_list_free (bin->cp_list); r_list_free (bin->interfaces_list); r_str_constpool_fini (&bin->constpool); - memset (bin, 0, sizeof (RBinJavaObj)); r_str_constpool_init (&bin->constpool); bin->cf2.flags_str = strdup ("unknown"); bin->cf2.this_class_name = strdup ("unknown"); @@ -1233,16 +1231,11 @@ R_API char *retrieve_class_method_access_string(ut16 flags) { } R_API char *r_bin_java_build_obj_key(RBinJavaObj *bin) { - char *jvcname = NULL; char *cname = r_bin_java_get_this_class_name (bin); - ut32 class_name_len = cname ? strlen (cname) : strlen ("_unknown_"); - jvcname = malloc (class_name_len + 8 + 30); - if (cname) { - snprintf (jvcname, class_name_len + 30, "%d.%s.class", bin->id, cname); - free (cname); - } else { - snprintf (jvcname, class_name_len + 30, "%d._unknown_.class", bin->id); - } + char *jvcname = cname? + r_str_newf ("%d.%s.class", bin->id, cname) + : r_str_newf ("%d._unknown_.class", bin->id); + free (cname); return jvcname; } @@ -1250,7 +1243,7 @@ R_API bool sdb_iterate_build_list(void *user, const char *k, const char *v) { RList *bin_objs_list = (RList *) user; size_t value = (size_t) sdb_atoi (v); RBinJavaObj *bin_obj = NULL; - IFDBG eprintf("Found %s == %"PFMT64x " bin_objs db\n", k, (ut64) value); + 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); @@ -1322,7 +1315,7 @@ R_API double my_pow(ut64 base, int exp) { } exp >>= 1; base *= base; - IFDBG eprintf("Result: %"PFMT64d ", base: %"PFMT64d ", exp: %d\n", res, base, exp); + IFDBG eprintf ("Result: %"PFMT64d ", base: %"PFMT64d ", exp: %d\n", res, base, exp); } if (flag == 0) { return 1.0 * res; @@ -1338,7 +1331,7 @@ R_API double r_bin_java_raw_to_double(const ut8 *raw, ut64 offset) { (bits & 0xfffffffffffffLL) << 1 : (bits & 0xfffffffffffffLL) | 0x10000000000000LL; double res = 0.0; - IFDBG eprintf("Convert Long to Double: %08"PFMT64x "\n", bits); + IFDBG eprintf ("Convert Long to Double: %08"PFMT64x "\n", bits); if (bits == 0x7ff0000000000000LL) { return INFINITY; } @@ -1352,9 +1345,9 @@ R_API double r_bin_java_raw_to_double(const ut8 *raw, ut64 offset) { return NAN; } res = s * m * my_pow (2, e - 1075);// XXXX TODO Get double to work correctly here - IFDBG eprintf(" High-bytes = %02x %02x %02x %02x\n", raw[0], raw[1], raw[2], raw[3]); - IFDBG eprintf(" Low-bytes = %02x %02x %02x %02x\n", raw[4], raw[5], raw[6], raw[7]); - IFDBG eprintf("Convert Long to Double s: %d, m: 0x%08lx, e: 0x%08x, res: %f\n", s, m, e, res); + IFDBG eprintf (" High-bytes = %02x %02x %02x %02x\n", raw[0], raw[1], raw[2], raw[3]); + IFDBG eprintf (" Low-bytes = %02x %02x %02x %02x\n", raw[4], raw[5], raw[6], raw[7]); + IFDBG eprintf ("Convert Long to Double s: %d, m: 0x%08lx, e: 0x%08x, res: %f\n", s, m, e, res); return res; } @@ -1391,29 +1384,29 @@ R_API RBinJavaField *r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 of idx = method->name_idx; item = r_bin_java_get_item_from_bin_cp_list (bin, idx); method->name = r_bin_java_get_utf8_from_bin_cp_list (bin, (ut32) (method->name_idx)); - IFDBG eprintf("Method name_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, method->name); + IFDBG eprintf ("Method name_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, method->name); if (!method->name) { method->name = (char *) malloc (21); snprintf ((char *) method->name, 20, "sym.method_%08x", method->metas->ord); - IFDBG eprintf("r_bin_java_read_next_method: Unable to find the name for 0x%02x index.\n", method->name_idx); + IFDBG eprintf ("r_bin_java_read_next_method: Unable to find the name for 0x%02x index.\n", method->name_idx); } idx = method->descriptor_idx; item = r_bin_java_get_item_from_bin_cp_list (bin, idx); method->descriptor = r_bin_java_get_utf8_from_bin_cp_list (bin, (ut32) method->descriptor_idx); - IFDBG eprintf("Method descriptor_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, method->descriptor); + IFDBG eprintf ("Method descriptor_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, method->descriptor); if (!method->descriptor) { method->descriptor = r_str_dup (NULL, "NULL"); - IFDBG eprintf("r_bin_java_read_next_method: Unable to find the descriptor for 0x%02x index.\n", method->descriptor_idx); + IFDBG eprintf ("r_bin_java_read_next_method: Unable to find the descriptor for 0x%02x index.\n", method->descriptor_idx); } - IFDBG eprintf("Looking for a NameAndType CP with name_idx: %d descriptor_idx: %d\n", method->name_idx, method->descriptor_idx); + IFDBG eprintf ("Looking for a NameAndType CP with name_idx: %d descriptor_idx: %d\n", method->name_idx, method->descriptor_idx); method->field_ref_cp_obj = r_bin_java_find_cp_ref_info_from_name_and_type (bin, method->name_idx, method->descriptor_idx); if (method->field_ref_cp_obj) { - IFDBG eprintf("Found the obj.\n"); + IFDBG eprintf ("Found the obj.\n"); item = r_bin_java_get_item_from_bin_cp_list (bin, method->field_ref_cp_obj->info.cp_method.class_idx); - IFDBG eprintf("Method class reference value: %d, which is: ord: %d, name: %s\n", method->field_ref_cp_obj->info.cp_method.class_idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name); + IFDBG eprintf ("Method class reference value: %d, which is: ord: %d, name: %s\n", method->field_ref_cp_obj->info.cp_method.class_idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name); method->class_name = r_bin_java_get_item_name_from_bin_cp_list (bin, item); - IFDBG eprintf("Method requesting ref_cp_obj the following which is: ord: %d, name: %s\n", method->field_ref_cp_obj->metas->ord, ((RBinJavaCPTypeMetas *)method->field_ref_cp_obj->metas->type_info)->name); - IFDBG eprintf("MethodRef class name resolves to: %s\n", method->class_name); + IFDBG eprintf ("Method requesting ref_cp_obj the following which is: ord: %d, name: %s\n", method->field_ref_cp_obj->metas->ord, ((RBinJavaCPTypeMetas *)method->field_ref_cp_obj->metas->type_info)->name); + IFDBG eprintf ("MethodRef class name resolves to: %s\n", method->class_name); if (!method->class_name) { method->class_name = r_str_dup (NULL, "NULL"); } @@ -1422,7 +1415,7 @@ R_API RBinJavaField *r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 of method->field_ref_cp_obj = r_bin_java_get_item_from_bin_cp_list (bin, bin->cf2.this_class); method->class_name = r_bin_java_get_item_name_from_bin_cp_list (bin, method->field_ref_cp_obj); } - IFDBG eprintf("Parsing %s(%s)\n", method->name, method->descriptor); + IFDBG eprintf ("Parsing %s(%s)\n", method->name, method->descriptor); if (method->attr_count > 0) { method->attr_offset = adv + offset; RBinJavaAttrInfo *attr = NULL; @@ -1440,7 +1433,7 @@ R_API RBinJavaField *r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 of bin->ustack_sz = 2;// (attr->info.code_attr.max_stack > 65535) ? 4 : 2; bin->ulocalvar_sz = 2;// (attr->info.code_attr.max_locals > 65535) ? 4 : 2; } - IFDBG eprintf("Parsing @ 0x%"PFMT64x " (%s) = 0x%"PFMT64x " bytes\n", attr->file_offset, attr->name, attr->size); + IFDBG eprintf ("Parsing @ 0x%"PFMT64x " (%s) = 0x%"PFMT64x " bytes\n", attr->file_offset, attr->name, attr->size); r_list_append (method->attributes, attr); adv += attr->size; if (adv + offset >= len) { @@ -1451,7 +1444,7 @@ R_API RBinJavaField *r_bin_java_read_next_method(RBinJavaObj *bin, const ut64 of } method->size = adv; // reset after parsing the method attributes - IFDBG eprintf("Parsing @ 0x%"PFMT64x " %s(%s) = 0x%"PFMT64x " bytes\n", method->file_offset, method->name, method->descriptor, method->size); + IFDBG eprintf ("Parsing @ 0x%"PFMT64x " %s(%s) = 0x%"PFMT64x " bytes\n", method->file_offset, method->name, method->descriptor, method->size); return method; } @@ -1491,29 +1484,29 @@ R_API RBinJavaField *r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 off idx = field->name_idx; item = r_bin_java_get_item_from_bin_cp_list (bin, idx); field->name = r_bin_java_get_utf8_from_bin_cp_list (bin, (ut32) (field->name_idx)); - IFDBG eprintf("Field name_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, field->name); + IFDBG eprintf ("Field name_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, field->name); if (!field->name) { field->name = (char *) malloc (21); snprintf ((char *) field->name, 20, "sym.field_%08x", field->metas->ord); - IFDBG eprintf("r_bin_java_read_next_field: Unable to find the name for 0x%02x index.\n", field->name_idx); + IFDBG eprintf ("r_bin_java_read_next_field: Unable to find the name for 0x%02x index.\n", field->name_idx); } idx = field->descriptor_idx; item = r_bin_java_get_item_from_bin_cp_list (bin, idx); field->descriptor = r_bin_java_get_utf8_from_bin_cp_list (bin, (ut32) field->descriptor_idx); - IFDBG eprintf("Field descriptor_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, field->descriptor); + IFDBG eprintf ("Field descriptor_idx: %d, which is: ord: %d, name: %s, value: %s\n", idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name, field->descriptor); if (!field->descriptor) { field->descriptor = r_str_dup (NULL, "NULL"); - IFDBG eprintf("r_bin_java_read_next_field: Unable to find the descriptor for 0x%02x index.\n", field->descriptor_idx); + IFDBG eprintf ("r_bin_java_read_next_field: Unable to find the descriptor for 0x%02x index.\n", field->descriptor_idx); } - IFDBG eprintf("Looking for a NameAndType CP with name_idx: %d descriptor_idx: %d\n", field->name_idx, field->descriptor_idx); + IFDBG eprintf ("Looking for a NameAndType CP with name_idx: %d descriptor_idx: %d\n", field->name_idx, field->descriptor_idx); field->field_ref_cp_obj = r_bin_java_find_cp_ref_info_from_name_and_type (bin, field->name_idx, field->descriptor_idx); if (field->field_ref_cp_obj) { - IFDBG eprintf("Found the obj.\n"); + IFDBG eprintf ("Found the obj.\n"); item = r_bin_java_get_item_from_bin_cp_list (bin, field->field_ref_cp_obj->info.cp_field.class_idx); - IFDBG eprintf("Field class reference value: %d, which is: ord: %d, name: %s\n", field->field_ref_cp_obj->info.cp_field.class_idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name); + IFDBG eprintf ("Field class reference value: %d, which is: ord: %d, name: %s\n", field->field_ref_cp_obj->info.cp_field.class_idx, item->metas->ord, ((RBinJavaCPTypeMetas *)item->metas->type_info)->name); field->class_name = r_bin_java_get_item_name_from_bin_cp_list (bin, item); - IFDBG eprintf("Field requesting ref_cp_obj the following which is: ord: %d, name: %s\n", field->field_ref_cp_obj->metas->ord, ((RBinJavaCPTypeMetas *)field->field_ref_cp_obj->metas->type_info)->name); - IFDBG eprintf("FieldRef class name resolves to: %s\n", field->class_name); + IFDBG eprintf ("Field requesting ref_cp_obj the following which is: ord: %d, name: %s\n", field->field_ref_cp_obj->metas->ord, ((RBinJavaCPTypeMetas *)field->field_ref_cp_obj->metas->type_info)->name); + IFDBG eprintf ("FieldRef class name resolves to: %s\n", field->class_name); if (!field->class_name) { field->class_name = r_str_dup (NULL, "NULL"); } @@ -1522,7 +1515,7 @@ R_API RBinJavaField *r_bin_java_read_next_field(RBinJavaObj *bin, const ut64 off field->field_ref_cp_obj = r_bin_java_get_item_from_bin_cp_list (bin, bin->cf2.this_class); field->class_name = r_bin_java_get_item_name_from_bin_cp_list (bin, field->field_ref_cp_obj); } - IFDBG eprintf("Parsing %s(%s)", field->name, field->descriptor); + IFDBG eprintf ("Parsing %s(%s)", field->name, field->descriptor); if (field->attr_count > 0) { field->attr_offset = adv + offset; for (i = 0; i < field->attr_count && offset + adv < len; i++) { @@ -1564,7 +1557,7 @@ R_API RBinJavaCPTypeObj *r_bin_java_clone_cp_idx(RBinJavaObj *bin, ut32 idx) { R_API RBinJavaCPTypeObj *r_bin_java_clone_cp_item(RBinJavaCPTypeObj *obj) { RBinJavaCPTypeObj *clone_obj = NULL; - if (obj == NULL) { + if (!obj) { return clone_obj; } clone_obj = R_NEW0 (RBinJavaCPTypeObj); @@ -1625,7 +1618,7 @@ R_API RBinJavaCPTypeObj *r_bin_java_read_next_constant_pool_item(RBinJavaObj *bi } if (offset + buf_sz < len) { memcpy (cp_buf, (ut8 *) buf + offset, buf_sz); - IFDBG eprintf("Parsed the tag '%d':%s and create object from offset 0x%08"PFMT64x ".\n", tag, R_BIN_JAVA_CP_METAS[tag].name, offset); + IFDBG eprintf ("Parsed the tag '%d':%s and create object from offset 0x%08"PFMT64x ".\n", tag, R_BIN_JAVA_CP_METAS[tag].name, offset); java_obj = (*java_constant_info->allocs->new_obj)(bin, cp_buf, buf_sz); if (java_obj != NULL && java_obj->metas != NULL) { java_obj->file_offset = offset; @@ -1840,7 +1833,7 @@ R_API char *r_bin_java_get_item_name_from_cp_item_list(RList *cp_list, RBinJavaC @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 || !cp_list || depth < 0) { return NULL; } switch (obj->tag) { @@ -1861,7 +1854,7 @@ R_API char *r_bin_java_get_item_name_from_cp_item_list(RList *cp_list, RBinJavaC default: return NULL; case 0: - IFDBG eprintf("Invalid 0 tag in the constant pool\n"); + IFDBG eprintf ("Invalid 0 tag in the constant pool\n"); return NULL; } return NULL; @@ -1918,7 +1911,7 @@ R_API char *r_bin_java_get_desc_from_cp_item_list(RList *cp_list, ut64 idx) { @rvalue ut8* (user frees) or NULL */ RBinJavaCPTypeObj *obj = r_bin_java_get_item_from_cp_item_list (cp_list, idx); - if (cp_list == NULL) { + if (!cp_list) { return NULL; } return r_bin_java_get_item_desc_from_cp_item_list (cp_list, obj, MAX_CPITEMS); @@ -1969,7 +1962,7 @@ R_API ut8 *r_bin_java_get_attr_buf(RBinJavaObj *bin, ut64 sz, const ut64 offset, int pending = len - offset; const ut8 *a_buf = offset + buf; attr_buf = (ut8 *) calloc (pending + 1, 1); - if (attr_buf == NULL) { + if (!attr_buf) { eprintf ("Unable to allocate enough bytes (0x%04"PFMT64x ") to read in the attribute.\n", sz); return attr_buf; @@ -1990,7 +1983,7 @@ R_API RBinJavaAttrInfo *r_bin_java_default_attr_new(RBinJavaObj *bin, ut8 *buffe } RBinJavaAttrMetas *type_info = NULL; attr->metas = R_NEW0 (RBinJavaMetaInfo); - if (attr->metas == NULL) { + if (!attr->metas) { free (attr); return NULL; } @@ -2000,7 +1993,7 @@ R_API RBinJavaAttrInfo *r_bin_java_default_attr_new(RBinJavaObj *bin, ut8 *buffe attr->length = R_BIN_JAVA_UINT (buffer, 2); attr->size = R_BIN_JAVA_UINT (buffer, 2) + 6; attr->name = r_bin_java_get_utf8_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, attr->name_idx); - if (attr->name == NULL) { + if (!attr->name) { // Something bad has happened attr->name = r_str_dup (NULL, "NULL"); eprintf ("r_bin_java_default_attr_new: Unable to find the name for %d index.\n", attr->name_idx); @@ -2024,9 +2017,6 @@ R_API RBinJavaAttrMetas *r_bin_java_get_attr_type_by_name(const char *name) { } R_API RBinJavaAttrInfo *r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 offset, const ut8 *buf, const ut64 buf_len) { - RBinJavaAttrInfo *attr = NULL; - ut32 sz = 0; - ut8 *buffer = NULL; const ut8 *a_buf = offset + buf; ut8 attr_idx_len = 6; if (offset + 6 > buf_len) { @@ -2035,7 +2025,7 @@ R_API RBinJavaAttrInfo *r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o return NULL; } // 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; + ut32 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 > buf_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", @@ -2047,12 +2037,12 @@ 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, buf_len); + ut8 *buffer = r_bin_java_get_attr_buf (bin, sz, offset, buf, buf_len); + RBinJavaAttrInfo *attr = NULL; // printf ("%d %d %d\n", sz, buf_len, offset); if (offset < buf_len) { attr = r_bin_java_read_next_attr_from_buffer (bin, buffer, buf_len - offset, offset); free (buffer); - if (!attr) { return NULL; } @@ -2066,16 +2056,14 @@ R_API RBinJavaAttrInfo *r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o R_API RBinJavaAttrInfo *r_bin_java_read_next_attr_from_buffer(RBinJavaObj *bin, ut8 *buffer, st64 sz, st64 buf_offset) { RBinJavaAttrInfo *attr = NULL; - ut64 offset = 0; - ut16 name_idx; st64 nsz; if (!buffer || ((int) sz) < 4 || buf_offset < 0) { eprintf ("r_bin_Java_read_next_attr_from_buffer: invalid buffer size %d\n", (int) sz); return NULL; } - name_idx = R_BIN_JAVA_USHORT (buffer, offset); - offset += 2; + ut16 name_idx = R_BIN_JAVA_USHORT (buffer, 0); + ut64 offset = 2; nsz = R_BIN_JAVA_UINT (buffer, offset); // DEAD INCREMENT offset += 4; @@ -2083,10 +2071,10 @@ R_API RBinJavaAttrInfo *r_bin_java_read_next_attr_from_buffer(RBinJavaObj *bin, if (!name) { name = strdup ("unknown"); } - IFDBG eprintf("r_bin_java_read_next_attr: name_idx = %d is %s\n", name_idx, name); + IFDBG eprintf ("r_bin_java_read_next_attr: name_idx = %d is %s\n", name_idx, name); RBinJavaAttrMetas *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); + IFDBG eprintf ("Typeinfo: %s, was %s\n", type_info->name, name); // printf ("SZ %d %d %d\n", nsz, sz, buf_offset); if (nsz > sz) { free (name); @@ -2105,7 +2093,7 @@ R_API RBinJavaAttrInfo *r_bin_java_read_next_attr_from_buffer(RBinJavaObj *bin, R_API ut64 r_bin_java_read_class_file2(RBinJavaObj *bin, const ut64 offset, const ut8 *obuf, ut64 len) { const ut8 *cf2_buf = obuf + offset; RBinJavaCPTypeObj *this_class_cp_obj = NULL; - IFDBG eprintf("\n0x%"PFMT64x " Offset before reading the cf2 structure\n", offset); + IFDBG eprintf ("\n0x%"PFMT64x " Offset before reading the cf2 structure\n", offset); /* Reading the following fields: ut16 access_flags; @@ -2124,7 +2112,7 @@ R_API ut64 r_bin_java_read_class_file2(RBinJavaObj *bin, const ut64 offset, cons bin->cf2.flags_str = retrieve_class_method_access_string (bin->cf2.access_flags); this_class_cp_obj = r_bin_java_get_item_from_bin_cp_list (bin, bin->cf2.this_class); bin->cf2.this_class_name = r_bin_java_get_item_name_from_bin_cp_list (bin, this_class_cp_obj); - IFDBG eprintf("This class flags are: %s\n", bin->cf2.flags_str); + IFDBG eprintf ("This class flags are: %s\n", bin->cf2.flags_str); return bin->cf2.cf2_size; } @@ -2139,7 +2127,7 @@ R_API ut64 r_bin_java_parse_cp_pool(RBinJavaObj *bin, const ut64 offset, const u memcpy ((char *) &bin->cp_count, cp_buf, 2); bin->cp_count = R_BIN_JAVA_USHORT (cp_buf, 0) - 1; adv += 2; - IFDBG eprintf("ConstantPoolCount %d\n", bin->cp_count); + IFDBG eprintf ("ConstantPoolCount %d\n", bin->cp_count); r_list_append (bin->cp_list, r_bin_java_get_java_null_cp ()); for (ord = 1, bin->cp_idx = 0; bin->cp_idx < bin->cp_count && adv < len; ord++, bin->cp_idx++) { obj = r_bin_java_read_next_constant_pool_item (bin, offset + adv, buf, len); @@ -2162,7 +2150,7 @@ R_API ut64 r_bin_java_parse_cp_pool(RBinJavaObj *bin, const ut64 offset, const u break; } } else { - IFDBG eprintf("Failed to read ConstantPoolItem %d\n", bin->cp_idx); + IFDBG eprintf ("Failed to read ConstantPoolItem %d\n", bin->cp_idx); break; } } @@ -2187,7 +2175,7 @@ R_API ut64 r_bin_java_parse_interfaces(RBinJavaObj *bin, const ut64 offset, cons } bin->interfaces_count = R_BIN_JAVA_USHORT (if_buf, 0); adv += 2; - IFDBG eprintf("Interfaces count: %d\n", bin->interfaces_count); + IFDBG eprintf ("Interfaces count: %d\n", bin->interfaces_count); 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); @@ -2220,7 +2208,7 @@ R_API ut64 r_bin_java_parse_fields(RBinJavaObj *bin, const ut64 offset, const ut } bin->fields_count = R_BIN_JAVA_USHORT (fm_buf, 0); adv += 2; - IFDBG eprintf("Fields count: %d 0x%"PFMT64x "\n", bin->fields_count, bin->fields_offset); + IFDBG eprintf ("Fields count: %d 0x%"PFMT64x "\n", bin->fields_count, bin->fields_offset); if (bin->fields_count > 0) { for (i = 0; i < bin->fields_count; i++, bin->field_idx++) { field = r_bin_java_read_next_field (bin, offset + adv, buf, len); @@ -2233,7 +2221,7 @@ R_API ut64 r_bin_java_parse_fields(RBinJavaObj *bin, const ut64 offset, const ut break; } } else { - IFDBG eprintf("Failed to read Field %d\n", i); + IFDBG eprintf ("Failed to read Field %d\n", i); break; } } @@ -2288,7 +2276,7 @@ R_API ut64 r_bin_java_parse_methods(RBinJavaObj *bin, const ut64 offset, const u bin->methods_offset = offset; bin->methods_count = R_BIN_JAVA_USHORT (fm_buf, 0); adv += 2; - IFDBG eprintf("Methods count: %d 0x%"PFMT64x "\n", bin->methods_count, bin->methods_offset); + IFDBG eprintf ("Methods count: %d 0x%"PFMT64x "\n", bin->methods_count, bin->methods_offset); bin->main = NULL; bin->entrypoint = NULL; bin->main_code_attr = NULL; @@ -2305,7 +2293,7 @@ R_API ut64 r_bin_java_parse_methods(RBinJavaObj *bin, const ut64 offset, const u // 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"))) { - IFDBG eprintf("Found an init function.\n"); + 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"))) { @@ -2366,8 +2354,8 @@ R_API int r_bin_java_load_bin(RBinJavaObj *bin, const ut8 *buf, ut64 buf_sz) { eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile after class file info.\n"); return true; } - IFDBG eprintf("This class: %d %s\n", bin->cf2.this_class, bin->cf2.this_class_name); - IFDBG eprintf("0x%"PFMT64x " Access flags: 0x%04x\n", adv, bin->cf2.access_flags); + IFDBG eprintf ("This class: %d %s\n", bin->cf2.this_class, bin->cf2.this_class_name); + IFDBG eprintf ("0x%"PFMT64x " Access flags: 0x%04x\n", adv, bin->cf2.access_flags); adv += r_bin_java_parse_interfaces (bin, adv, buf, buf_sz); if (adv > buf_sz) { eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile after Interfaces.\n"); @@ -2429,9 +2417,10 @@ R_API RList *r_bin_java_get_entrypoints(RBinJavaObj *bin) { R_API RBinJavaField *r_bin_java_get_method_code_attribute_with_addr(RBinJavaObj *bin, ut64 addr) { RListIter *iter = NULL, *iter_tmp = NULL; RBinJavaField *fm_type, *res = NULL; - if (bin == NULL && R_BIN_JAVA_GLOBAL_BIN) { + if (!bin && R_BIN_JAVA_GLOBAL_BIN) { bin = R_BIN_JAVA_GLOBAL_BIN; - } else if (bin == NULL) { + } + if (!bin) { eprintf ("Attempting to analyse function when the R_BIN_JAVA_GLOBAL_BIN has not been set.\n"); return NULL; } @@ -2534,7 +2523,7 @@ R_API RBinField *r_bin_java_create_new_rbinfield_from_field(RBinJavaField *fm_ty R_API RBinSymbol *r_bin_java_create_new_symbol_from_field(RBinJavaField *fm_type, ut64 baddr) { RBinSymbol *sym = R_NEW0 (RBinSymbol); - if (fm_type == NULL || fm_type->field_ref_cp_obj == NULL || fm_type->field_ref_cp_obj == &R_BIN_JAVA_NULL_TYPE) { + if (!fm_type || !fm_type->field_ref_cp_obj || fm_type->field_ref_cp_obj == &R_BIN_JAVA_NULL_TYPE) { R_FREE (sym); } if (sym) { @@ -2617,7 +2606,7 @@ R_API RBinSymbol *r_bin_java_create_new_symbol_from_ref(RBinJavaObj *bin, RBinJa return NULL; } char *class_name, *name, *type_name; - if (obj == NULL || (obj->tag != R_BIN_JAVA_CP_METHODREF && + if (!obj || (obj->tag != R_BIN_JAVA_CP_METHODREF && obj->tag != R_BIN_JAVA_CP_INTERFACEMETHOD_REF && obj->tag != R_BIN_JAVA_CP_FIELDREF)) { R_FREE (sym); @@ -3163,7 +3152,7 @@ R_API RBinJavaObj *r_bin_java_new_buf(RBuffer *buf, ut64 loadaddr, Sdb *kv) { R_API void r_bin_java_attribute_free(void /*RBinJavaAttrInfo*/ *a) { RBinJavaAttrInfo *attr = a; if (attr) { - IFDBG eprintf("Deleting attr %s, %p\n", attr->name, attr); + IFDBG eprintf ("Deleting attr %s, %p\n", attr->name, attr); if (attr && attr->metas && attr->metas->type_info) { RBinJavaAttrMetas *a = attr->metas->type_info; if (a && a->allocs && a->allocs->delete_obj) { @@ -3461,10 +3450,10 @@ R_API ut64 r_bin_java_code_attr_calc_size(RBinJavaAttrInfo *attr) { } R_API RBinJavaAttrInfo *r_bin_java_code_attr_new(RBinJavaObj *bin, ut8 *buffer, ut64 sz, ut64 buf_offset) { - RBinJavaAttrInfo *attr = NULL, *_attr = NULL; + RBinJavaAttrInfo *_attr = NULL; ut32 k = 0, curpos; ut64 offset = 0; - attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); + RBinJavaAttrInfo *attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); if (!attr) { return NULL; } @@ -3539,11 +3528,11 @@ R_API RBinJavaAttrInfo *r_bin_java_code_attr_new(RBinJavaObj *bin, ut8 *buffer, eprintf ("[X] r_bin_java_code_attr_new: Error unable to parse remainder of classfile after Method's Code Attribute: %d.\n", k); break; } - IFDBG eprintf("Parsing @ 0x%"PFMT64x " (%s) = 0x%"PFMT64x " bytes, %p\n", _attr->file_offset, _attr->name, _attr->size, _attr); + IFDBG eprintf ("Parsing @ 0x%"PFMT64x " (%s) = 0x%"PFMT64x " bytes, %p\n", _attr->file_offset, _attr->name, _attr->size, _attr); offset += _attr->size; r_list_append (attr->info.code_attr.attributes, _attr); if (_attr->type == R_BIN_JAVA_ATTR_TYPE_LOCAL_VARIABLE_TABLE_ATTR) { - IFDBG eprintf("Parsed the LocalVariableTable, preparing the implicit mthod frame.\n"); + IFDBG eprintf ("Parsed the LocalVariableTable, preparing the implicit mthod frame.\n"); // r_bin_java_print_attr_summary(_attr); attr->info.code_attr.implicit_frame = r_bin_java_build_stack_frame_from_local_variable_table (R_BIN_JAVA_GLOBAL_BIN, _attr); attr->info.code_attr.implicit_frame->file_offset = buf_offset; @@ -3584,13 +3573,10 @@ R_API ut64 r_bin_java_constant_value_attr_calc_size(RBinJavaAttrInfo *attr) { } R_API RBinJavaAttrInfo *r_bin_java_deprecated_attr_new(RBinJavaObj *bin, ut8 *buffer, ut64 sz, ut64 buf_offset) { - RBinJavaAttrInfo *attr = NULL; - ut64 offset = 0; - attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); - offset += 6; + RBinJavaAttrInfo *attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); if (attr) { attr->type = R_BIN_JAVA_ATTR_TYPE_DEPRECATED_ATTR; - attr->size = offset; + attr->size = 6; } // IFDBG r_bin_java_print_deprecated_attr_summary(attr); return attr; @@ -3601,11 +3587,14 @@ R_API ut64 r_bin_java_deprecated_attr_calc_size(RBinJavaAttrInfo *attr) { } R_API RBinJavaAttrInfo *r_bin_java_signature_attr_new(RBinJavaObj *bin, ut8 *buffer, ut64 sz, ut64 buf_offset) { - ut64 offset = 6; + if (sz < 8) { + return NULL; + } RBinJavaAttrInfo *attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); if (!attr) { return NULL; } + ut64 offset = 6; attr->type = R_BIN_JAVA_ATTR_TYPE_SIGNATURE_ATTR; // attr->info.source_file_attr.sourcefile_idx = R_BIN_JAVA_USHORT (buffer, offset); // offset += 2; @@ -3679,11 +3668,10 @@ R_API ut64 r_bin_java_enclosing_methods_attr_calc_size(RBinJavaAttrInfo *attr) { R_API RBinJavaAttrInfo *r_bin_java_exceptions_attr_new(RBinJavaObj *bin, ut8 *buffer, ut64 sz, ut64 buf_offset) { ut32 i = 0, offset = 0; ut64 size; - RBinJavaAttrInfo *attr = NULL; if (sz < 8) { return NULL; } - attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); + RBinJavaAttrInfo *attr = r_bin_java_default_attr_new (bin, buffer, sz, buf_offset); offset += 6; if (!attr) { return attr; @@ -3768,7 +3756,7 @@ R_API RBinJavaAttrInfo *r_bin_java_inner_classes_attr_new(RBinJavaObj *bin, ut8 icattr->size = 8; obj = r_bin_java_get_item_from_bin_cp_list (R_BIN_JAVA_GLOBAL_BIN, icattr->inner_name_idx); - if (obj == NULL) { + if (!obj) { 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); @@ -3786,7 +3774,7 @@ R_API RBinJavaAttrInfo *r_bin_java_inner_classes_attr_new(RBinJavaObj *bin, ut8 } } - IFDBG eprintf("r_bin_java_inner_classes_attr: Inner class name %d is %s.\n", icattr->inner_name_idx, icattr->name); + IFDBG eprintf ("r_bin_java_inner_classes_attr: Inner class name %d is %s.\n", icattr->inner_name_idx, icattr->name); r_list_append (attr->info.inner_classes_attr.classes, (void *) icattr); } attr->size = offset; @@ -3825,7 +3813,6 @@ R_API ut64 r_bin_java_inner_classes_attr_calc_size(RBinJavaAttrInfo *attr) { R_API RBinJavaAttrInfo *r_bin_java_line_number_table_attr_new(RBinJavaObj *bin, ut8 *buffer, ut64 sz, ut64 buf_offset) { ut32 i = 0; ut64 curpos, offset = 0; - RBinJavaLineNumberAttribute *lnattr; if (sz < 6) { return NULL; } @@ -3845,7 +3832,7 @@ R_API RBinJavaAttrInfo *r_bin_java_line_number_table_attr_new(RBinJavaObj *bin, curpos = buf_offset + offset; // eprintf ("%"PFMT64x" %"PFMT64x"\n", curpos, sz); // XXX if (curpos + 8 >= sz) break; - lnattr = R_NEW0 (RBinJavaLineNumberAttribute); + RBinJavaLineNumberAttribute *lnattr = R_NEW0 (RBinJavaLineNumberAttribute); if (!lnattr) { break; } @@ -3973,6 +3960,9 @@ R_API RBinJavaAttrInfo *r_bin_java_local_variable_table_attr_new(RBinJavaObj *bi } curpos = buf_offset + offset; lvattr = R_NEW0 (RBinJavaLocalVariableAttribute); + if (!lvattr) { + break; + } lvattr->start_pc = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; lvattr->length = R_BIN_JAVA_USHORT (buffer, offset); @@ -4121,9 +4111,8 @@ R_API ut64 r_bin_java_synthetic_attr_calc_size(RBinJavaAttrInfo *attr) { } R_API RBinJavaInterfaceInfo *r_bin_java_interface_new(RBinJavaObj *bin, const ut8 *buffer, ut64 sz) { - RBinJavaInterfaceInfo *ifobj = NULL; - ifobj = R_NEW0 (RBinJavaInterfaceInfo); - IFDBG eprintf("Parsing RBinJavaInterfaceInfo\n"); + IFDBG eprintf ("Parsing RBinJavaInterfaceInfo\n"); + RBinJavaInterfaceInfo *ifobj = R_NEW0 (RBinJavaInterfaceInfo); if (ifobj) { if (buffer) { ifobj->class_info_idx = R_BIN_JAVA_USHORT (buffer, 0); @@ -4300,20 +4289,16 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz if (p_frame) { stack_frame->number_of_locals = p_frame->number_of_locals; } else { - IFINT eprintf("><\n"); - IFDBG eprintf("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); + IFINT eprintf ("><\n"); + IFDBG eprintf ("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Condition is untested, so there may be issues.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Condition is untested, so there may be issues.\n"); break; case R_BIN_JAVA_STACK_FRAME_SAME_LOCALS_1: // 1. Read the stack type stack_frame->number_of_stack_items = 1; - if (offset > sz) { - r_bin_java_stack_frame_free (stack_frame); - return NULL; - } se = r_bin_java_read_from_buffer_verification_info_new (buffer + offset, sz - offset, buf_offset + offset); - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsed R_BIN_JAVA_STACK_FRAME_SAME_LOCALS_1.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsed R_BIN_JAVA_STACK_FRAME_SAME_LOCALS_1.\n"); if (se) { offset += se->size; } else { @@ -4327,14 +4312,14 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz if (p_frame) { stack_frame->number_of_locals = p_frame->number_of_locals; } else { - IFDBG eprintf("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); + IFDBG eprintf ("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals 1 Stack Element Condition is untested, so there may be issues.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals 1 Stack Element Condition is untested, so there may be issues.\n"); break; case R_BIN_JAVA_STACK_FRAME_CHOP: // 1. Calculate the max index we want to copy from the list of the // previous frames locals - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_CHOP.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_CHOP.\n"); // ut16 k = 251 - stack_frame->tag; /*, idx = p_frame->number_of_locals - k; @@ -4347,13 +4332,13 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz if (p_frame) { stack_frame->number_of_locals = p_frame->number_of_locals; } else { - IFINT eprintf("><\n"); - IFDBG eprintf("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); + IFINT eprintf ("><\n"); + IFDBG eprintf ("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: TODO Stack Frame Chop Condition is untested, so there may be issues.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: TODO Stack Frame Chop Condition is untested, so there may be issues.\n"); break; case R_BIN_JAVA_STACK_FRAME_SAME_FRAME_EXTENDED: - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_SAME_FRAME_EXTENDED.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_SAME_FRAME_EXTENDED.\n"); // 1. Read the uoffset stack_frame->offset_delta = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; @@ -4373,13 +4358,13 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz if (p_frame) { stack_frame->number_of_locals = p_frame->number_of_locals; } else { - IFINT eprintf("><\n"); - IFDBG eprintf("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); + IFINT eprintf ("><\n"); + IFDBG eprintf ("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Frame Stack 1 Extended Condition is untested, so there may be issues.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Frame Stack 1 Extended Condition is untested, so there may be issues.\n"); break; case R_BIN_JAVA_STACK_FRAME_APPEND: - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_APPEND.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_APPEND.\n"); // 1. Calculate the max index we want to copy from the list of the // previous frames locals ut16 k = stack_frame->tag - 251; @@ -4394,9 +4379,9 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz if (offset >= sz) { break; } - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsing verifying the k'th frame: %d of %d.\n", i, k); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Parsing verifying the k'th frame: %d of %d.\n", i, k); se = r_bin_java_read_from_buffer_verification_info_new (buffer + offset, sz - offset, buf_offset + offset); - IFDBG eprintf("r_bin_java_stack_map_frame_new: Completed Parsing\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Completed Parsing\n"); if (se) { offset += se->size; } else { @@ -4406,18 +4391,18 @@ R_API RBinJavaStackMapFrame *r_bin_java_stack_map_frame_new(ut8 *buffer, ut64 sz } r_list_append (stack_frame->local_items, (void *) se); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: Breaking out of loop"); - IFDBG eprintf("p_frame: %p\n", p_frame); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: Breaking out of loop"); + IFDBG eprintf ("p_frame: %p\n", p_frame); if (p_frame) { stack_frame->number_of_locals = p_frame->number_of_locals + k; } else { - IFINT eprintf("><\n"); - IFDBG eprintf("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); + IFINT eprintf ("><\n"); + IFDBG eprintf ("Unable to set previous stackframe with the number of locals (current info.code_attr.implicit_frame was probably not set :/)"); } - IFDBG eprintf("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Frame Stack 1 Extended Condition is untested, so there may be issues.\n"); + IFDBG eprintf ("r_bin_java_stack_map_frame_new: TODO Stack Frame Same Locals Frame Stack 1 Extended Condition is untested, so there may be issues.\n"); break; case R_BIN_JAVA_STACK_FRAME_FULL_FRAME: - IFDBG eprintf("r_bin_java_stack_map_frame_new: Parsing R_BIN_JAVA_STACK_FRAME_FULL_FRAME.\n"); + 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 byte(s)), offset = 0x%08x.\n", var_sz, stack_frame->offset_delta); @@ -4560,7 +4545,7 @@ R_API RBinJavaStackMapFrame *r_bin_java_build_stack_frame_from_local_variable_ta value_cnt++; } if (value_cnt != attr->info.local_variable_table_attr.table_length) { - IFDBG eprintf("r_bin_java_build_stack_frame_from_local_variable_table: " + IFDBG eprintf ("r_bin_java_build_stack_frame_from_local_variable_table: " "Number of locals not accurate. Expected %d but got %d", attr->info.local_variable_table_attr.table_length, value_cnt); } @@ -4603,16 +4588,16 @@ R_API RBinJavaAttrInfo *r_bin_java_stack_map_table_attr_new(RBinJavaObj *bin, ut // Current spec does not call for variable sizes. attr->info.stack_map_table_attr.number_of_entries = R_BIN_JAVA_USHORT (buffer, offset); offset += 2; - IFDBG eprintf("r_bin_java_stack_map_table_attr_new: Processing stack map, summary is:\n"); + IFDBG eprintf ("r_bin_java_stack_map_table_attr_new: Processing stack map, summary is:\n"); IFDBG r_bin_java_print_stack_map_table_attr_summary(attr); for (i = 0; i < attr->info.stack_map_table_attr.number_of_entries; i++) { // read next stack frame - IFDBG eprintf("Reading StackMap Entry #%d @ 0x%08"PFMT64x "\n", i, buf_offset + offset); + IFDBG eprintf ("Reading StackMap Entry #%d @ 0x%08"PFMT64x "\n", i, buf_offset + offset); if (stack_frame == NULL && R_BIN_JAVA_GLOBAL_BIN && R_BIN_JAVA_GLOBAL_BIN->current_code_attr) { - IFDBG eprintf("Setting an implicit frame at #%d @ 0x%08"PFMT64x "\n", i, buf_offset + offset); + IFDBG eprintf ("Setting an implicit frame at #%d @ 0x%08"PFMT64x "\n", i, buf_offset + offset); stack_frame = R_BIN_JAVA_GLOBAL_BIN->current_code_attr->info.code_attr.implicit_frame; } - IFDBG eprintf("Reading StackMap Entry #%d @ 0x%08"PFMT64x ", current stack_frame: %p\n", i, buf_offset + offset, stack_frame); + IFDBG eprintf ("Reading StackMap Entry #%d @ 0x%08"PFMT64x ", current stack_frame: %p\n", i, buf_offset + offset, stack_frame); if (offset >= sz) { r_bin_java_stack_map_table_attr_free (attr); return NULL; @@ -5319,15 +5304,15 @@ R_API void r_bin_java_print_source_debug_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaSourceDebugExtensionAttr *.\n"); return; } - Eprintf ("Source Debug Extension Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Extension Length: %d\n", attr->length); - Eprintf (" Source Debug Extension value: \n"); + printf ("Source Debug Extension Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Extension Length: %d\n", attr->length); + printf (" Source Debug Extension value: \n"); for (i = 0; i < attr->length; i++) { - Eprintf ("%c", attr->info.debug_extensions.debug_extension[i]); + printf ("%c", attr->info.debug_extensions.debug_extension[i]); } - Eprintf ("\n Source Debug Extension End\n"); + printf ("\n Source Debug Extension End\n"); } R_API void r_bin_java_print_unknown_attr_summary(RBinJavaAttrInfo *attr) { @@ -5335,10 +5320,10 @@ R_API void r_bin_java_print_unknown_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Unknown.\n"); return; } - Eprintf ("Unknown Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Unknown Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); } R_API void r_bin_java_print_code_exceptions_attr_summary(RBinJavaExceptionEntry *exc_entry) { @@ -5346,12 +5331,12 @@ R_API void r_bin_java_print_code_exceptions_attr_summary(RBinJavaExceptionEntry eprintf ("Attempting to print an invalid RBinJavaExceptionEntry *.\n"); return; } - Eprintf (" Exception Table Entry Information\n"); - Eprintf (" offset: 0x%08"PFMT64x"\n", exc_entry->file_offset); - Eprintf (" catch_type: %d\n", exc_entry->catch_type); - Eprintf (" start_pc: 0x%04x\n", exc_entry->start_pc); - Eprintf (" end_pc: 0x%04x\n", exc_entry->end_pc); - Eprintf (" handler_pc: 0x%04x\n", exc_entry->handler_pc); + printf (" Exception Table Entry Information\n"); + printf (" offset: 0x%08"PFMT64x"\n", exc_entry->file_offset); + printf (" catch_type: %d\n", exc_entry->catch_type); + printf (" start_pc: 0x%04x\n", exc_entry->start_pc); + printf (" end_pc: 0x%04x\n", exc_entry->end_pc); + printf (" handler_pc: 0x%04x\n", exc_entry->handler_pc); } // End free Constant Pool types R_API void r_bin_java_print_code_attr_summary(RBinJavaAttrInfo *attr) { @@ -5362,27 +5347,27 @@ R_API void r_bin_java_print_code_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Code.\n"); return; } - Eprintf ("Code Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d, Attribute Count: %d\n", attr->length, attr->info.code_attr.attributes_count); - Eprintf (" Max Stack: %d\n", attr->info.code_attr.max_stack); - Eprintf (" Max Locals: %d\n", attr->info.code_attr.max_locals); - Eprintf (" Code Length: %d\n", attr->info.code_attr.code_length); - Eprintf (" Code At Offset: 0x%08"PFMT64x "\n", (ut64) attr->info.code_attr.code_offset); - Eprintf ("Code Attribute Exception Table Information:\n"); - Eprintf (" Exception Table Length: %d\n", attr->info.code_attr.exception_table_length); + printf ("Code Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d, Attribute Count: %d\n", attr->length, attr->info.code_attr.attributes_count); + printf (" Max Stack: %d\n", attr->info.code_attr.max_stack); + printf (" Max Locals: %d\n", attr->info.code_attr.max_locals); + printf (" Code Length: %d\n", attr->info.code_attr.code_length); + printf (" Code At Offset: 0x%08"PFMT64x "\n", (ut64) attr->info.code_attr.code_offset); + printf ("Code Attribute Exception Table Information:\n"); + printf (" Exception Table Length: %d\n", attr->info.code_attr.exception_table_length); if (attr->info.code_attr.exception_table) { // Delete the attr entries r_list_foreach_safe (attr->info.code_attr.exception_table, iter, iter_tmp, exc_entry) { r_bin_java_print_code_exceptions_attr_summary (exc_entry); } } - Eprintf (" Implicit Method Stack Frame:\n"); + printf (" Implicit Method Stack Frame:\n"); r_bin_java_print_stack_map_frame_summary (attr->info.code_attr.implicit_frame); - Eprintf ("Code Attribute Attributes Information:\n"); + printf ("Code Attribute Attributes Information:\n"); if (attr->info.code_attr.attributes && attr->info.code_attr.attributes_count > 0) { - Eprintf (" Code Attribute Attributes Count: %d\n", attr->info.code_attr.attributes_count); + printf (" Code Attribute Attributes Count: %d\n", attr->info.code_attr.attributes_count); r_list_foreach_safe (attr->info.code_attr.attributes, iter, iter_tmp, _attr) { r_bin_java_print_attr_summary (_attr); } @@ -5394,11 +5379,11 @@ R_API void r_bin_java_print_constant_value_attr_summary(RBinJavaAttrInfo *attr) eprintf ("Attempting to print an invalid RBinJavaAttrInfo *ConstantValue.\n"); return; } - Eprintf ("Constant Value Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" ConstantValue Index: %d\n", attr->info.constant_value_attr.constantvalue_idx); + printf ("Constant Value Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" ConstantValue Index: %d\n", attr->info.constant_value_attr.constantvalue_idx); } R_API void r_bin_java_print_deprecated_attr_summary(RBinJavaAttrInfo *attr) { @@ -5406,10 +5391,10 @@ R_API void r_bin_java_print_deprecated_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Deperecated.\n"); return; } - Eprintf ("Deperecated Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Deperecated Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); } R_API void r_bin_java_print_enclosing_methods_attr_summary(RBinJavaAttrInfo *attr) { @@ -5417,14 +5402,14 @@ R_API void r_bin_java_print_enclosing_methods_attr_summary(RBinJavaAttrInfo *att eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Deperecated.\n"); return; } - Eprintf ("Enclosing Method Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" Class Info Index : 0x%02x\n", attr->info.enclosing_method_attr.class_idx); - Eprintf (" Method Name and Type Index : 0x%02x\n", attr->info.enclosing_method_attr.method_idx); - Eprintf (" Class Name : %s\n", attr->info.enclosing_method_attr.class_name); - Eprintf (" Method Name and Desc : %s %s\n", attr->info.enclosing_method_attr.method_name, attr->info.enclosing_method_attr.method_descriptor); + printf ("Enclosing Method Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" Class Info Index : 0x%02x\n", attr->info.enclosing_method_attr.class_idx); + printf (" Method Name and Type Index : 0x%02x\n", attr->info.enclosing_method_attr.method_idx); + printf (" Class Name : %s\n", attr->info.enclosing_method_attr.class_name); + printf (" Method Name and Desc : %s %s\n", attr->info.enclosing_method_attr.method_name, attr->info.enclosing_method_attr.method_descriptor); } R_API void r_bin_java_print_exceptions_attr_summary(RBinJavaAttrInfo *attr) { @@ -5433,12 +5418,12 @@ R_API void r_bin_java_print_exceptions_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Exceptions.\n"); return; } - Eprintf ("Exceptions Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Exceptions Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); for (i = 0; i < attr->info.exceptions_attr.number_of_exceptions; i++) { - Eprintf (" Exceptions Attribute Index[%d]: %d\n", i, attr->info.exceptions_attr.exception_idx_table[i]); + printf (" Exceptions Attribute Index[%d]: %d\n", i, attr->info.exceptions_attr.exception_idx_table[i]); } } @@ -5467,10 +5452,10 @@ R_API void r_bin_java_print_inner_classes_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *InnerClasses.\n"); return; } - Eprintf ("Inner Classes Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Inner Classes Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); r_list_foreach_safe (attr->info.inner_classes_attr.classes, iter, iter_tmp, icattr) { r_bin_java_print_classes_attr_summary (icattr); } @@ -5481,9 +5466,9 @@ R_API void r_bin_java_print_line_number_attr_summary(RBinJavaLineNumberAttribute eprintf ("Attempting to print an invalid RBinJavaLineNumberAttribute *.\n"); return; } - Eprintf (" Line Number Attribute Offset: 0x%08"PFMT64x "\n", lnattr->file_offset); - Eprintf (" Line Number Attribute StartPC: %d\n", lnattr->start_pc); - Eprintf (" Line Number Attribute LineNumber: %d\n", lnattr->line_number); + printf (" Line Number Attribute Offset: 0x%08"PFMT64x "\n", lnattr->file_offset); + printf (" Line Number Attribute StartPC: %d\n", lnattr->start_pc); + printf (" Line Number Attribute LineNumber: %d\n", lnattr->line_number); } R_API void r_bin_java_print_line_number_table_attr_summary(RBinJavaAttrInfo *attr) { @@ -5493,10 +5478,10 @@ R_API void r_bin_java_print_line_number_table_attr_summary(RBinJavaAttrInfo *att eprintf ("Attempting to print an invalid RBinJavaAttrInfo *LineNumberTable.\n"); return; } - Eprintf ("Line Number Table Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Line Number Table Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); r_list_foreach_safe (attr->info.line_number_table_attr.line_number_table, iter, iter_tmp, lnattr) { r_bin_java_print_line_number_attr_summary (lnattr); } @@ -5507,14 +5492,14 @@ R_API void r_bin_java_print_local_variable_attr_summary(RBinJavaLocalVariableAtt eprintf ("Attempting to print an invalid RBinJavaLocalVariableAttribute *.\n"); return; } - Eprintf (" Local Variable Attribute offset: 0x%08"PFMT64x "\n", lvattr->file_offset); - Eprintf (" Local Variable Attribute start_pc: %d\n", lvattr->start_pc); - Eprintf (" Local Variable Attribute Length: %d\n", lvattr->length); - Eprintf (" Local Variable Attribute name_idx: %d\n", lvattr->name_idx); - Eprintf (" Local Variable Attribute name: %s\n", lvattr->name); - Eprintf (" Local Variable Attribute descriptor_idx: %d\n", lvattr->descriptor_idx); - Eprintf (" Local Variable Attribute descriptor: %s\n", lvattr->descriptor); - Eprintf (" Local Variable Attribute index: %d\n", lvattr->index); + printf (" Local Variable Attribute offset: 0x%08"PFMT64x "\n", lvattr->file_offset); + printf (" Local Variable Attribute start_pc: %d\n", lvattr->start_pc); + printf (" Local Variable Attribute Length: %d\n", lvattr->length); + printf (" Local Variable Attribute name_idx: %d\n", lvattr->name_idx); + printf (" Local Variable Attribute name: %s\n", lvattr->name); + printf (" Local Variable Attribute descriptor_idx: %d\n", lvattr->descriptor_idx); + printf (" Local Variable Attribute descriptor: %s\n", lvattr->descriptor); + printf (" Local Variable Attribute index: %d\n", lvattr->index); } R_API void r_bin_java_print_local_variable_table_attr_summary(RBinJavaAttrInfo *attr) { @@ -5524,10 +5509,10 @@ R_API void r_bin_java_print_local_variable_table_attr_summary(RBinJavaAttrInfo * eprintf ("Attempting to print an invalid RBinJavaAttrInfo *LocalVariableTable.\n"); return; } - Eprintf ("Local Variable Table Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Local Variable Table Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); r_list_foreach_safe (attr->info.local_variable_table_attr.local_variable_table, iter, iter_tmp, lvattr) { r_bin_java_print_local_variable_attr_summary (lvattr); } @@ -5569,12 +5554,12 @@ R_API void r_bin_java_print_signature_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *SignatureAttr.\n"); return; } - Eprintf ("Signature Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" Signature UTF8 Index: %d\n", attr->info.signature_attr.signature_idx); - Eprintf (" Signature string: %s\n", attr->info.signature_attr.signature); + printf ("Signature Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" Signature UTF8 Index: %d\n", attr->info.signature_attr.signature_idx); + printf (" Signature string: %s\n", attr->info.signature_attr.signature); } R_API void r_bin_java_print_source_code_file_attr_summary(RBinJavaAttrInfo *attr) { @@ -5582,11 +5567,11 @@ R_API void r_bin_java_print_source_code_file_attr_summary(RBinJavaAttrInfo *attr eprintf ("Attempting to print an invalid RBinJavaAttrInfo *SourceFile.\n"); return; } - Eprintf ("Source File Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" Source File Index: %d\n", attr->info.source_file_attr.sourcefile_idx); + printf ("Source File Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" Source File Index: %d\n", attr->info.source_file_attr.sourcefile_idx); } R_API void r_bin_java_print_synthetic_attr_summary(RBinJavaAttrInfo *attr) { @@ -5594,29 +5579,28 @@ R_API void r_bin_java_print_synthetic_attr_summary(RBinJavaAttrInfo *attr) { eprintf ("Attempting to print an invalid RBinJavaAttrInfo *Synthetic.\n"); return; } - Eprintf ("Synthetic Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" Attribute Index: %d\n", attr->info.source_file_attr.sourcefile_idx); + printf ("Synthetic Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" Attribute Index: %d\n", attr->info.source_file_attr.sourcefile_idx); } R_API void r_bin_java_print_stack_map_table_attr_summary(RBinJavaAttrInfo *attr) { RListIter *iter, *iter_tmp; - RList *ptrList; RBinJavaStackMapFrame *frame; - if (attr == NULL) { + if (!attr) { eprintf ("Attempting to print an invalid RBinJavaStackMapTableAttr* .\n"); return; } - Eprintf ("StackMapTable Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); - Eprintf (" StackMapTable Method Code Size: 0x%08x\n", attr->info.stack_map_table_attr.code_size); - Eprintf (" StackMapTable Frame Entries: 0x%08x\n", attr->info.stack_map_table_attr.number_of_entries); - Eprintf (" StackMapTable Frames:\n"); - ptrList = attr->info.stack_map_table_attr.stack_map_frame_entries; + printf ("StackMapTable Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); + printf (" StackMapTable Method Code Size: 0x%08x\n", attr->info.stack_map_table_attr.code_size); + printf (" StackMapTable Frame Entries: 0x%08x\n", attr->info.stack_map_table_attr.number_of_entries); + printf (" StackMapTable Frames:\n"); + RList *ptrList = attr->info.stack_map_table_attr.stack_map_frame_entries; if (ptrList) { r_list_foreach_safe (ptrList, iter, iter_tmp, frame) { r_bin_java_print_stack_map_frame_summary (frame); @@ -5626,23 +5610,22 @@ R_API void r_bin_java_print_stack_map_table_attr_summary(RBinJavaAttrInfo *attr) R_API void r_bin_java_print_stack_map_frame_summary(RBinJavaStackMapFrame *obj) { RListIter *iter, *iter_tmp; - RList *ptrList; RBinJavaVerificationObj *ver_obj; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaStackMapFrame* .\n"); return; } - Eprintf ("Stack Map Frame Information\n"); - Eprintf (" Tag Value = 0x%02x Name: %s\n", obj->tag, ((RBinJavaStackMapFrameMetas *) obj->metas->type_info)->name); - Eprintf (" Offset: 0x%08"PFMT64x "\n", obj->file_offset); - Eprintf (" Local Variable Count = 0x%04x\n", obj->number_of_locals); - Eprintf (" Stack Items Count = 0x%04x\n", obj->number_of_stack_items); - Eprintf (" Local Variables:\n"); - ptrList = obj->local_items; + printf ("Stack Map Frame Information\n"); + printf (" Tag Value = 0x%02x Name: %s\n", obj->tag, ((RBinJavaStackMapFrameMetas *) obj->metas->type_info)->name); + printf (" Offset: 0x%08"PFMT64x "\n", obj->file_offset); + printf (" Local Variable Count = 0x%04x\n", obj->number_of_locals); + printf (" Stack Items Count = 0x%04x\n", obj->number_of_stack_items); + printf (" Local Variables:\n"); + RList *ptrList = obj->local_items; r_list_foreach_safe (ptrList, iter, iter_tmp, ver_obj) { r_bin_java_print_verification_info_summary (ver_obj); } - Eprintf (" Stack Items:\n"); + printf (" Stack Items:\n"); ptrList = obj->stack_items; r_list_foreach_safe (ptrList, iter, iter_tmp, ver_obj) { r_bin_java_print_verification_info_summary (ver_obj); @@ -5651,21 +5634,21 @@ R_API void r_bin_java_print_stack_map_frame_summary(RBinJavaStackMapFrame *obj) R_API void r_bin_java_print_verification_info_summary(RBinJavaVerificationObj *obj) { ut8 tag_value = R_BIN_JAVA_STACKMAP_UNKNOWN; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaVerificationObj* .\n"); return; } if (obj->tag < R_BIN_JAVA_STACKMAP_UNKNOWN) { tag_value = obj->tag; } - Eprintf ("Verification Information\n"); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" Tag Value = 0x%02x\n", obj->tag); - Eprintf (" Name = %s\n", R_BIN_JAVA_VERIFICATION_METAS[tag_value].name); + printf ("Verification Information\n"); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" Tag Value = 0x%02x\n", obj->tag); + printf (" Name = %s\n", R_BIN_JAVA_VERIFICATION_METAS[tag_value].name); if (obj->tag == R_BIN_JAVA_STACKMAP_OBJECT) { - Eprintf (" Object Constant Pool Index = 0x%x\n", obj->info.obj_val_cp_idx); + printf (" Object Constant Pool Index = 0x%x\n", obj->info.obj_val_cp_idx); } else if (obj->tag == R_BIN_JAVA_STACKMAP_UNINIT) { - Eprintf (" Uninitialized Object offset in code = 0x%x\n", obj->info.uninit_offset); + printf (" Uninitialized Object offset in code = 0x%x\n", obj->info.uninit_offset); } } @@ -5678,19 +5661,18 @@ R_API void r_bin_java_print_field_summary(RBinJavaField *field) { } else { #if 0 r_bin_java_print_interface_summary (field); - return; - } * / -#endif - Eprintf ("Field Summary Information:\n"); - Eprintf (" File Offset: 0x%08"PFMT64x "\n", field->file_offset); - Eprintf (" Name Index: %d (%s)\n", field->name_idx, field->name); - Eprintf (" Descriptor Index: %d (%s)\n", field->descriptor_idx, field->descriptor); - Eprintf (" Access Flags: 0x%02x (%s)\n", field->flags, field->flags_str); - Eprintf (" Field Attributes Count: %d\n", field->attr_count); - Eprintf (" Field Attributes:\n"); +#else + printf ("Field Summary Information:\n"); + printf (" File Offset: 0x%08"PFMT64x "\n", field->file_offset); + printf (" Name Index: %d (%s)\n", field->name_idx, field->name); + printf (" Descriptor Index: %d (%s)\n", field->descriptor_idx, field->descriptor); + printf (" Access Flags: 0x%02x (%s)\n", field->flags, field->flags_str); + printf (" Field Attributes Count: %d\n", field->attr_count); + printf (" Field Attributes:\n"); r_list_foreach_safe (field->attributes, iter, iter_tmp, attr) { r_bin_java_print_attr_summary (attr); } +#endif } } else { eprintf ("Attempting to print an invalid RBinJavaField* Field.\n"); @@ -5704,13 +5686,13 @@ R_API void r_bin_java_print_method_summary(RBinJavaField *field) { eprintf ("Attempting to print an invalid RBinJavaField* Method.\n"); return; } - Eprintf ("Method Summary Information:\n"); - Eprintf (" File Offset: 0x%08"PFMT64x "\n", field->file_offset); - Eprintf (" Name Index: %d (%s)\n", field->name_idx, field->name); - Eprintf (" Descriptor Index: %d (%s)\n", field->descriptor_idx, field->descriptor); - Eprintf (" Access Flags: 0x%02x (%s)\n", field->flags, field->flags_str); - Eprintf (" Method Attributes Count: %d\n", field->attr_count); - Eprintf (" Method Attributes:\n"); + printf ("Method Summary Information:\n"); + printf (" File Offset: 0x%08"PFMT64x "\n", field->file_offset); + printf (" Name Index: %d (%s)\n", field->name_idx, field->name); + printf (" Descriptor Index: %d (%s)\n", field->descriptor_idx, field->descriptor); + printf (" Access Flags: 0x%02x (%s)\n", field->flags, field->flags_str); + printf (" Method Attributes Count: %d\n", field->attr_count); + printf (" Method Attributes:\n"); r_list_foreach_safe (field->attributes, iter, iter_tmp, attr) { r_bin_java_print_attr_summary (attr); } @@ -5737,7 +5719,7 @@ R_API void r_bin_java_print_method_summary(RBinJavaField *field) { } */ R_API void r_bin_java_print_interfacemethodref_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* InterfaceMethodRef.\n"); return; } @@ -5748,31 +5730,14 @@ R_API void r_bin_java_print_interfacemethodref_cp_summary(RBinJavaCPTypeObj *obj } R_API char *r_bin_java_print_interfacemethodref_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", + return r_str_newf ("%d.0x%04"PFMT64x ".%s.%d.%d", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, obj->info.cp_interface.class_idx, obj->info.cp_interface.name_and_type_idx); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_interface.class_idx, obj->info.cp_interface.name_and_type_idx); - } - } - } - return value; } R_API void r_bin_java_print_methodhandle_cp_summary(RBinJavaCPTypeObj *obj) { ut8 ref_kind; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* RBinJavaCPTypeMethodHandle.\n"); return; } @@ -5784,64 +5749,30 @@ R_API void r_bin_java_print_methodhandle_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_methodhandle_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); ut8 ref_kind = obj->info.cp_method_handle.reference_kind; - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%s.%d", + return r_str_newf ("%d.0x%04"PFMT64x ".%s.%s.%d", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, R_BIN_JAVA_REF_METAS[ref_kind].name, obj->info.cp_method_handle.reference_index); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%s.%d", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - R_BIN_JAVA_REF_METAS[ref_kind].name, obj->info.cp_method_handle.reference_index); - } - } - } - return value; } R_API void r_bin_java_print_methodtype_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* RBinJavaCPTypeMethodType.\n"); return; } - Eprintf ("MethodType ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" Descriptor Index = 0x%02x\n", obj->info.cp_method_type.descriptor_index); + printf ("MethodType ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" Descriptor Index = 0x%02x\n", obj->info.cp_method_type.descriptor_index); } R_API char *r_bin_java_print_methodtype_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d", + return r_str_newf ("%d.0x%04"PFMT64x ".%s.%d", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, obj->info.cp_method_type.descriptor_index); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_method_type.descriptor_index); - } - } - } - return value; } R_API void r_bin_java_print_invokedynamic_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* RBinJavaCPTypeInvokeDynamic.\n"); return; } @@ -5852,32 +5783,14 @@ R_API void r_bin_java_print_invokedynamic_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_invokedynamic_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", + return r_str_newf ("%d.0x%04"PFMT64x ".%s.%d.%d", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, obj->info.cp_invoke_dynamic.bootstrap_method_attr_index, obj->info.cp_invoke_dynamic.name_and_type_index); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_invoke_dynamic.bootstrap_method_attr_index, - obj->info.cp_invoke_dynamic.name_and_type_index); - } - } - } - return value; } R_API void r_bin_java_print_methodref_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* MethodRef.\n"); return; } @@ -5888,32 +5801,14 @@ R_API void r_bin_java_print_methodref_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_methodref_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", + return r_str_newf ("%d.0x%04"PFMT64x ".%s.%d.%d", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, obj->info.cp_method.class_idx, obj->info.cp_method.name_and_type_idx); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%d", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_method.class_idx, - obj->info.cp_method.name_and_type_idx); - } - } - } - return value; } R_API void r_bin_java_print_fieldref_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* FieldRef.\n"); return; } @@ -5949,7 +5844,7 @@ R_API char *r_bin_java_print_fieldref_cp_stringify(RBinJavaCPTypeObj *obj) { } R_API void r_bin_java_print_classref_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* ClassRef.\n"); return; } @@ -5986,9 +5881,9 @@ R_API void r_bin_java_print_string_cp_summary(RBinJavaCPTypeObj *obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* String.\n"); return; } - Eprintf ("String ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" String Index = %d\n", obj->info.cp_string.string_idx); + printf ("String ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" String Index = %d\n", obj->info.cp_string.string_idx); } R_API char *r_bin_java_print_string_cp_stringify(RBinJavaCPTypeObj *obj) { @@ -6017,7 +5912,7 @@ R_API char *r_bin_java_print_string_cp_stringify(RBinJavaCPTypeObj *obj) { R_API void r_bin_java_print_integer_cp_summary(RBinJavaCPTypeObj *obj) { ut8 *b = NULL; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* Integer.\n"); return; } @@ -6053,15 +5948,15 @@ R_API char *r_bin_java_print_integer_cp_stringify(RBinJavaCPTypeObj *obj) { R_API void r_bin_java_print_float_cp_summary(RBinJavaCPTypeObj *obj) { ut8 *b = NULL; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* Double.\n"); return; } b = obj->info.cp_float.bytes.raw; - Eprintf ("Float ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); - Eprintf (" Float = %f\n", R_BIN_JAVA_FLOAT (obj->info.cp_float.bytes.raw, 0)); + printf ("Float ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); + printf (" Float = %f\n", R_BIN_JAVA_FLOAT (obj->info.cp_float.bytes.raw, 0)); } R_API char *r_bin_java_print_float_cp_stringify(RBinJavaCPTypeObj *obj) { @@ -6089,16 +5984,16 @@ R_API char *r_bin_java_print_float_cp_stringify(RBinJavaCPTypeObj *obj) { R_API void r_bin_java_print_long_cp_summary(RBinJavaCPTypeObj *obj) { ut8 *b = NULL; - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* Long.\n"); return; } b = obj->info.cp_long.bytes.raw; - Eprintf ("Long ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" High-Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); - Eprintf (" Low-Bytes = %02x %02x %02x %02x\n", b[4], b[5], b[6], b[7]); - Eprintf (" Long = %08"PFMT64x "\n", r_bin_java_raw_to_long (obj->info.cp_long.bytes.raw, 0)); + printf ("Long ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" High-Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); + printf (" Low-Bytes = %02x %02x %02x %02x\n", b[4], b[5], b[6], b[7]); + printf (" Long = %08"PFMT64x "\n", r_bin_java_raw_to_long (obj->info.cp_long.bytes.raw, 0)); } R_API char *r_bin_java_print_long_cp_stringify(RBinJavaCPTypeObj *obj) { @@ -6135,11 +6030,11 @@ R_API void r_bin_java_print_double_cp_summary(RBinJavaCPTypeObj *obj) { return; } b = obj->info.cp_double.bytes.raw; - Eprintf ("Double ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" High-Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); - Eprintf (" Low-Bytes = %02x %02x %02x %02x\n", b[4], b[5], b[6], b[7]); - Eprintf (" Double = %f\n", r_bin_java_raw_to_double (obj->info.cp_double.bytes.raw, 0)); + printf ("Double ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" High-Bytes = %02x %02x %02x %02x\n", b[0], b[1], b[2], b[3]); + printf (" Low-Bytes = %02x %02x %02x %02x\n", b[4], b[5], b[6], b[7]); + printf (" Double = %f\n", r_bin_java_raw_to_double (obj->info.cp_double.bytes.raw, 0)); } R_API char *r_bin_java_print_double_cp_stringify(RBinJavaCPTypeObj *obj) { @@ -6170,14 +6065,14 @@ R_API char *r_bin_java_print_double_cp_stringify(RBinJavaCPTypeObj *obj) { } R_API void r_bin_java_print_name_and_type_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* Name_And_Type.\n"); return; } - Eprintf ("Name_And_Type ConstantPool Type (%d) ", obj->metas->ord); - Eprintf (" Offset: 0x%08"PFMT64x "", obj->file_offset); - Eprintf (" name_idx = (%d)\n", obj->info.cp_name_and_type.name_idx); - Eprintf (" descriptor_idx = (%d)\n", obj->info.cp_name_and_type.descriptor_idx); + printf ("Name_And_Type ConstantPool Type (%d) ", obj->metas->ord); + printf (" Offset: 0x%08"PFMT64x "", obj->file_offset); + printf (" name_idx = (%d)\n", obj->info.cp_name_and_type.name_idx); + printf (" descriptor_idx = (%d)\n", obj->info.cp_name_and_type.descriptor_idx); } R_API char *r_bin_java_print_name_and_type_cp_stringify(RBinJavaCPTypeObj *obj) { @@ -6206,7 +6101,7 @@ R_API char *r_bin_java_print_name_and_type_cp_stringify(RBinJavaCPTypeObj *obj) } R_API void r_bin_java_print_utf8_cp_summary(RBinJavaCPTypeObj *obj) { - if (obj == NULL) { + if (!obj) { eprintf ("Attempting to print an invalid RBinJavaCPTypeObj* Utf8.\n"); return; } @@ -6219,30 +6114,12 @@ R_API void r_bin_java_print_utf8_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_utf8_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; char *utf8_str = r_hex_bin2strdup (obj->info.cp_utf8.bytes, obj->info.cp_utf8.length); - char *value = malloc (size + strlen (utf8_str)); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%s", + char *res = r_str_newf ("%d.0x%04"PFMT64x ".%s.%d.%s", obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_utf8.length, - utf8_str); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size + strlen (utf8_str)); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s.%d.%s", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name, - obj->info.cp_utf8.length, - utf8_str); - } - } - } + obj->info.cp_utf8.length, utf8_str); free (utf8_str); - return value; + return res; } R_API void r_bin_java_print_null_cp_summary(RBinJavaCPTypeObj *obj) { @@ -6250,25 +6127,10 @@ R_API void r_bin_java_print_null_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_null_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255, consumed = 0; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - consumed = snprintf (value, size, "%d.0x%04"PFMT64x ".%s", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name); - if (consumed >= size - 1) { - free (value); - size += size >> 1; - value = malloc (size); - if (value) { - memset (value, 0, size); - (void)snprintf (value, size, "%d.0x%04"PFMT64x ".%s", - obj->metas->ord, obj->file_offset, - ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name); - } - } - } - return value; + return r_str_newf ("%d.0x%04"PFMT64x ".%s", + obj->metas->ord, + obj->file_offset + obj->loadaddr, + ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name); } R_API void r_bin_java_print_unknown_cp_summary(RBinJavaCPTypeObj *obj) { @@ -6276,18 +6138,12 @@ R_API void r_bin_java_print_unknown_cp_summary(RBinJavaCPTypeObj *obj) { } R_API char *r_bin_java_print_unknown_cp_stringify(RBinJavaCPTypeObj *obj) { - ut32 size = 255; - char *value = malloc (size); - if (value) { - memset (value, 0, size); - snprintf (value, size, "%d.0x%04"PFMT64x ".%s", - obj->metas->ord, obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name); - } - return value; + return r_str_newf ("%d.0x%04"PFMT64x ".%s", obj->metas->ord, + obj->file_offset + obj->loadaddr, ((RBinJavaCPTypeMetas *) obj->metas->type_info)->name); } R_API RBinJavaElementValuePair *r_bin_java_element_pair_new(ut8 *buffer, ut64 sz, ut64 buf_offset) { - if (!buffer || sz < 4) { + if (!buffer || sz < 8) { return NULL; } RBinJavaElementValuePair *evp = R_NEW0 (RBinJavaElementValuePair); @@ -6309,11 +6165,13 @@ R_API RBinJavaElementValuePair *r_bin_java_element_pair_new(ut8 *buffer, ut64 sz return NULL; } evp->value = r_bin_java_element_value_new (buffer + offset, sz - offset, buf_offset + offset); - offset += evp->value->size; - if (offset >= sz) { - free (evp->value); - free (evp); - return NULL; + if (evp->value) { + offset += evp->value->size; + if (offset >= sz) { + free (evp->value); + free (evp); + return NULL; + } } evp->size = offset; return evp; @@ -6324,11 +6182,11 @@ R_API void r_bin_java_print_element_pair_summary(RBinJavaElementValuePair *evp) eprintf ("Attempting to print an invalid RBinJavaElementValuePair *pair.\n"); return; } - Eprintf ("Element Value Pair information:\n"); - Eprintf (" EV Pair File Offset: 0x%08"PFMT64x "\n", evp->file_offset); - Eprintf (" EV Pair Element Name index: 0x%02x\n", evp->element_name_idx); - Eprintf (" EV Pair Element Name: %s\n", evp->name); - Eprintf (" EV Pair Element Value:\n"); + printf ("Element Value Pair information:\n"); + printf (" EV Pair File Offset: 0x%08"PFMT64x "\n", evp->file_offset); + printf (" EV Pair Element Name index: 0x%02x\n", evp->element_name_idx); + printf (" EV Pair Element Name: %s\n", evp->name); + printf (" EV Pair Element Value:\n"); r_bin_java_print_element_value_summary (evp->value); } @@ -6641,9 +6499,9 @@ R_API void r_bin_java_print_annotation_summary(RBinJavaAnnotation *annotation) { // TODO eprintf invalid annotation return; } - Eprintf (" Annotation Type Index: 0x%02x\n", annotation->type_idx); - Eprintf (" Annotation Number of EV Pairs: 0x%04x\n", annotation->num_element_value_pairs); - Eprintf (" Annotation EV Pair Values:\n"); + printf (" Annotation Type Index: 0x%02x\n", annotation->type_idx); + printf (" Annotation Number of EV Pairs: 0x%04x\n", annotation->num_element_value_pairs); + printf (" Annotation EV Pair Values:\n"); if (annotation->element_value_pairs) { r_list_foreach_safe (annotation->element_value_pairs, iter, iter_tmp, evp) { r_bin_java_print_element_pair_summary (evp); @@ -6670,7 +6528,7 @@ R_API ut64 r_bin_java_element_value_calc_size(RBinJavaElementValue *element_valu RBinJavaElementValue *ev_element; RBinJavaElementValuePair *evps; ut64 sz = 0; - if (element_value == NULL) { + if (!element_value) { return sz; } // tag @@ -7262,20 +7120,20 @@ R_API void r_bin_java_rti_annotations_attr_free(void /*RBinJavaAttrInfo*/ *a) { R_API void r_bin_java_print_rtv_annotations_attr_summary(RBinJavaAttrInfo *attr) { if (attr && attr->type == R_BIN_JAVA_ATTR_TYPE_RUNTIME_VISIBLE_ANNOTATION_ATTR) { - Eprintf ("Runtime Visible Annotations Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Runtime Visible Annotations Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); r_bin_java_print_annotation_array_summary (&attr->info.annotation_array); } } R_API void r_bin_java_print_rti_annotations_attr_summary(RBinJavaAttrInfo *attr) { if (attr && attr->type == R_BIN_JAVA_ATTR_TYPE_RUNTIME_INVISIBLE_ANNOTATION_ATTR) { - Eprintf ("Runtime Invisible Annotations Attribute Information:\n"); - Eprintf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); - Eprintf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); - Eprintf (" Attribute Length: %d\n", attr->length); + printf ("Runtime Invisible Annotations Attribute Information:\n"); + printf (" Attribute Offset: 0x%08"PFMT64x "\n", attr->file_offset); + printf (" Attribute Name Index: %d (%s)\n", attr->name_idx, attr->name); + printf (" Attribute Length: %d\n", attr->length); r_bin_java_print_annotation_array_summary (&attr->info.annotation_array); } } @@ -7425,10 +7283,10 @@ R_API void r_bin_java_print_rtip_annotations_attr_summary(RBinJavaAttrInfo *attr R_API RBinJavaCPTypeObj *r_bin_java_find_cp_name_and_type_info(RBinJavaObj *bin, ut16 name_idx, ut16 descriptor_idx) { RListIter *iter, *iter_tmp; RBinJavaCPTypeObj *res = NULL, *obj = NULL; - IFDBG eprintf("Looking for name_idx: %d and descriptor_idx: %d\n", name_idx, descriptor_idx); + IFDBG eprintf ("Looking for name_idx: %d and descriptor_idx: %d\n", name_idx, descriptor_idx); r_list_foreach_safe (bin->cp_list, iter, iter_tmp, obj) { if (obj && obj->tag == R_BIN_JAVA_CP_NAMEANDTYPE) { - IFDBG eprintf("RBinJavaCPTypeNameAndType has name_idx: %d and descriptor_idx: %d\n", + IFDBG eprintf ("RBinJavaCPTypeNameAndType has name_idx: %d and descriptor_idx: %d\n", obj->info.cp_name_and_type.name_idx, obj->info.cp_name_and_type.descriptor_idx); if (obj->info.cp_name_and_type.name_idx == name_idx && obj->info.cp_name_and_type.descriptor_idx == descriptor_idx) { @@ -7498,7 +7356,7 @@ R_API char *r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name_ item = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); if (item) { cp_name = ((RBinJavaCPTypeMetas *) item->metas->type_info)->name; - IFDBG eprintf("java_resolve Resolved: (%d) %s\n", idx, cp_name); + IFDBG eprintf ("java_resolve Resolved: (%d) %s\n", idx, cp_name); } else { str = malloc (512); if (str) { @@ -7564,12 +7422,12 @@ R_API char *r_bin_java_resolve(RBinJavaObj *BIN_OBJ, int idx, ut8 space_bn_name_ } else if (!strcmp (cp_name, "String")) { string_str = r_bin_java_get_utf8_from_bin_cp_list (BIN_OBJ, item->info.cp_string.string_idx); str = NULL; - IFDBG eprintf("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); + IFDBG eprintf ("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); if (!string_str) { string_str = empty; } str = r_str_newf ("\"%s\"", string_str); - IFDBG eprintf("java_resolve String return: %s\n", str); + IFDBG eprintf ("java_resolve String return: %s\n", str); if (string_str != empty) { free (string_str); } @@ -7649,15 +7507,13 @@ R_API char *r_bin_java_get_method_name(RBinJavaObj *bin_obj, ut32 idx) { R_API RList *r_bin_java_get_method_num_name(RBinJavaObj *bin_obj) { ut32 i = 0; - RListIter *iter = NULL; + RListIter *iter; RBinJavaField *fm_type; RList *res = r_list_newf (free); r_list_foreach (bin_obj->methods_list, iter, fm_type) { - ut32 len = strlen (fm_type->name) + 30; - char *str = malloc (len); - snprintf (str, len, "%d %s", i, fm_type->name); - ++i; + char *str = r_str_newf ("%d %s", i, fm_type->name); r_list_append (res, str); + i++; } return res; } @@ -7780,10 +7636,6 @@ R_API RList *r_bin_java_find_cp_const_by_val(RBinJavaObj *bin_obj, const ut8 *by } } -// #if 0 -// 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) { /* Add Constant Pool Serialized Object to an Array @@ -7813,7 +7665,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) { if (class_name_inheap) { free (class_name); } @@ -7829,7 +7681,7 @@ R_API void U(add_cp_objs_to_sdb)(RBinJavaObj * bin) { snprintf (key, key_buf_size - 1, "%s.cp.%d", class_name, idx); key[key_buf_size - 1] = 0; cp_obj = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (bin, idx); - IFDBG eprintf("Adding %s to the sdb.\n", key); + IFDBG eprintf ("Adding %s to the sdb.\n", key); if (cp_obj) { value = ((RBinJavaCPTypeMetas *) cp_obj->metas->type_info)-> @@ -7880,7 +7732,7 @@ R_API void U(add_field_infos_to_sdb)(RBinJavaObj * bin) { char number_buffer[80]; ut64 file_offset = fm_type->file_offset + bin->loadaddr; snprintf (number_buffer, sizeof (number_buffer), "0x%04"PFMT64x, file_offset); - IFDBG eprintf("Inserting: []%s = %s\n", field_key, number_buffer); + IFDBG eprintf ("Inserting: []%s = %s\n", field_key, number_buffer); sdb_array_push (bin->kv, field_key, number_buffer, 0); } r_list_foreach_safe (bin->fields_list, iter, iter_tmp, fm_type) { @@ -7891,26 +7743,26 @@ R_API void U(add_field_infos_to_sdb)(RBinJavaObj * bin) { snprintf (field_key_value, key_size, "%s.0x%04"PFMT64x ".field", class_name, field_offset); field_key_value[key_size - 1] = 0; sdb_set (bin->kv, field_key, field_key_value, 0); - IFDBG eprintf("Inserting: %s = %s\n", field_key, field_key_value); + IFDBG eprintf ("Inserting: %s = %s\n", field_key, field_key_value); // generate info key, and place values in method info array snprintf (field_key, key_size, "%s.info", field_key_value); field_key[key_size - 1] = 0; snprintf (value_buffer, value_buffer_size, "%s", fm_type->flags_str); value_buffer[value_buffer_size - 1] = 0; sdb_array_push (bin->kv, field_key, value_buffer, 0); - IFDBG eprintf("Inserting: []%s = %s\n", field_key, value_buffer); + IFDBG eprintf ("Inserting: []%s = %s\n", field_key, value_buffer); snprintf (value_buffer, value_buffer_size, "%s", fm_type->class_name); value_buffer[value_buffer_size - 1] = 0; sdb_array_push (bin->kv, field_key, value_buffer, 0); - IFDBG eprintf("Inserting: []%s = %s\n", field_key, value_buffer); + IFDBG eprintf ("Inserting: []%s = %s\n", field_key, value_buffer); snprintf (value_buffer, value_buffer_size, "%s", fm_type->name); value_buffer[value_buffer_size - 1] = 0; sdb_array_push (bin->kv, field_key, value_buffer, 0); - IFDBG eprintf("Inserting: []%s = %s\n", field_key, value_buffer); + IFDBG eprintf ("Inserting: []%s = %s\n", field_key, value_buffer); snprintf (value_buffer, value_buffer_size, "%s", fm_type->descriptor); value_buffer[value_buffer_size - 1] = 0; sdb_array_push (bin->kv, field_key, value_buffer, 0); - IFDBG eprintf("Inserting: []%s = %s\n", field_key, value_buffer); + IFDBG eprintf ("Inserting: []%s = %s\n", field_key, value_buffer); } free (field_key); free (field_key_value); @@ -7975,7 +7827,7 @@ R_API void U(add_method_infos_to_sdb)(RBinJavaObj * bin) { method_key[key_size - 1] = 0; snprintf (method_key_value, key_size, "%s.0x%04"PFMT64x ".method", class_name, method_offset); method_key_value[key_size - 1] = 0; - IFDBG eprintf("Adding %s to sdb_array: %s\n", method_key_value, method_key); + IFDBG eprintf ("Adding %s to sdb_array: %s\n", method_key_value, method_key); sdb_set (bin->kv, method_key, method_key_value, 0); // generate code key and values snprintf (method_key, key_size, "%s.code", method_key_value); @@ -7991,19 +7843,19 @@ R_API void U(add_method_infos_to_sdb)(RBinJavaObj * bin) { method_key[key_size - 1] = 0; snprintf (value_buffer, value_buffer_size, "%s", fm_type->flags_str); value_buffer[value_buffer_size - 1] = 0; - IFDBG eprintf("Adding %s to sdb_array: %s\n", value_buffer, method_key); + IFDBG eprintf ("Adding %s to sdb_array: %s\n", value_buffer, method_key); sdb_array_push (bin->kv, method_key, value_buffer, 0); snprintf (value_buffer, value_buffer_size, "%s", fm_type->class_name); value_buffer[value_buffer_size - 1] = 0; - IFDBG eprintf("Adding %s to sdb_array: %s\n", value_buffer, method_key); + IFDBG eprintf ("Adding %s to sdb_array: %s\n", value_buffer, method_key); sdb_array_push (bin->kv, method_key, value_buffer, 0); snprintf (value_buffer, value_buffer_size, "%s", fm_type->name); value_buffer[value_buffer_size - 1] = 0; - IFDBG eprintf("Adding %s to sdb_array: %s\n", value_buffer, method_key); + IFDBG eprintf ("Adding %s to sdb_array: %s\n", value_buffer, method_key); sdb_array_push (bin->kv, method_key, value_buffer, 0); snprintf (value_buffer, value_buffer_size, "%s", fm_type->descriptor); value_buffer[value_buffer_size - 1] = 0; - IFDBG eprintf("Adding %s to sdb_array: %s\n", value_buffer, method_key); + IFDBG eprintf ("Adding %s to sdb_array: %s\n", value_buffer, method_key); sdb_array_push (bin->kv, method_key, value_buffer, 0); } free (method_key); @@ -8165,7 +8017,7 @@ R_API RList *r_bin_java_extract_all_bin_type_values(RBinJavaObj *bin_obj) { if (!extract_type_value (fm_type->descriptor, &desc)) { return NULL; } - IFDBG eprintf("Adding field type: %s\n", desc); + IFDBG eprintf ("Adding field type: %s\n", desc); r_list_append (all_types, desc); } // get all method types @@ -8176,7 +8028,7 @@ R_API RList *r_bin_java_extract_all_bin_type_values(RBinJavaObj *bin_obj) { r_list_foreach (the_list, desc_iter, str) { if (str && *str != '(' && *str != ')') { r_list_append (all_types, strdup (str)); - IFDBG eprintf("Adding method type: %s\n", str); + IFDBG eprintf ("Adding method type: %s\n", str); } } r_list_free (the_list); @@ -8329,7 +8181,7 @@ R_API char *r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { item = (RBinJavaCPTypeObj *) r_bin_java_get_item_from_bin_cp_list (BIN_OBJ, idx); if (item) { cp_name = ((RBinJavaCPTypeMetas *) item->metas->type_info)->name; - IFDBG eprintf("java_resolve Resolved: (%d) %s\n", idx, cp_name); + IFDBG eprintf ("java_resolve Resolved: (%d) %s\n", idx, cp_name); } else { return NULL; } @@ -8408,7 +8260,7 @@ R_API char *r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { ut32 length = r_bin_java_get_utf8_len_from_bin_cp_list (BIN_OBJ, item->info.cp_string.string_idx); string_str = r_bin_java_get_utf8_from_bin_cp_list (BIN_OBJ, item->info.cp_string.string_idx); str = NULL; - IFDBG eprintf("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); + IFDBG eprintf ("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); if (!string_str) { string_str = empty; length = strlen (empty); @@ -8423,7 +8275,7 @@ R_API char *r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) { str = out; } } - IFDBG eprintf("java_resolve String return: %s\n", str); + IFDBG eprintf ("java_resolve String return: %s\n", str); if (string_str != empty) { free (string_str); } @@ -8564,7 +8416,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; - IFDBG eprintf("java_resolve Resolved: (%d) %s\n", idx, cp_name); + IFDBG eprintf ("java_resolve Resolved: (%d) %s\n", idx, cp_name); 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); @@ -8629,7 +8481,7 @@ R_API ConstJavaValue *U(r_bin_java_resolve_to_const_value)(RBinJavaObj * BIN_OBJ } else if (strcmp (cp_name, "String") == 0) { ut32 length = r_bin_java_get_utf8_len_from_bin_cp_list (BIN_OBJ, item->info.cp_string.string_idx); string_str = r_bin_java_get_utf8_from_bin_cp_list (BIN_OBJ, item->info.cp_string.string_idx); - IFDBG eprintf("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); + IFDBG eprintf ("java_resolve String got: (%d) %s\n", item->info.cp_string.string_idx, string_str); if (!string_str) { string_str = empty; length = strlen (empty); @@ -8755,11 +8607,11 @@ R_API RList *r_bin_java_find_cp_const_by_val_utf8(RBinJavaObj *bin_obj, const ut ut32 *v = NULL; RListIter *iter; RBinJavaCPTypeObj *cp_obj; - IFDBG eprintf("In UTF-8 Looking for %s\n", bytes); + IFDBG eprintf ("In UTF-8 Looking for %s\n", bytes); 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 ("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)); if (len == cp_obj->info.cp_utf8.length && !memcmp (bytes, cp_obj->info.cp_utf8.bytes, len)) { v = malloc (sizeof (ut32)); if (!v) { @@ -8767,7 +8619,7 @@ R_API RList *r_bin_java_find_cp_const_by_val_utf8(RBinJavaObj *bin_obj, const ut return NULL; } *v = cp_obj->metas->ord; - IFDBG eprintf("Found a match adding idx: %d\n", *v); + IFDBG eprintf ("Found a match adding idx: %d\n", *v); r_list_append (res, v); } } @@ -8975,17 +8827,17 @@ R_API void U(r_bin_java_print_stack_map_append_frame_summary)(RBinJavaStackMapFr RListIter *iter, *iter_tmp; RList *ptrList; RBinJavaVerificationObj *ver_obj; - Eprintf ("Stack Map Frame Information\n"); - Eprintf (" Tag Value = 0x%02x Name: %s\n", obj->tag, ((RBinJavaStackMapFrameMetas *) obj->metas->type_info)->name); - Eprintf (" Offset: 0x%08"PFMT64x "\n", obj->file_offset); - Eprintf (" Local Variable Count = 0x%04x\n", obj->number_of_locals); - Eprintf (" Local Variables:\n"); + printf ("Stack Map Frame Information\n"); + printf (" Tag Value = 0x%02x Name: %s\n", obj->tag, ((RBinJavaStackMapFrameMetas *) obj->metas->type_info)->name); + printf (" Offset: 0x%08"PFMT64x "\n", obj->file_offset); + printf (" Local Variable Count = 0x%04x\n", obj->number_of_locals); + printf (" Local Variables:\n"); ptrList = obj->local_items; r_list_foreach_safe (ptrList, iter, iter_tmp, ver_obj) { r_bin_java_print_verification_info_summary (ver_obj); } - Eprintf (" Stack Items Count = 0x%04x\n", obj->number_of_stack_items); - Eprintf (" Stack Items:\n"); + printf (" Stack Items Count = 0x%04x\n", obj->number_of_stack_items); + printf (" Stack Items:\n"); ptrList = obj->stack_items; r_list_foreach_safe (ptrList, iter, iter_tmp, ver_obj) { r_bin_java_print_verification_info_summary (ver_obj); @@ -8999,8 +8851,8 @@ R_API void U(r_bin_java_stack_frame_default_free)(void *s) { free (stack_frame); } } -R_API void U(r_bin_java_stack_frame_do_nothing_free)(void /*RBinJavaStackMapFrame*/ *stack_frame) {} -R_API void U(r_bin_java_stack_frame_do_nothing_new)(RBinJavaObj * bin, RBinJavaStackMapFrame * stack_frame, ut64 offset) {} +// R_API void U(r_bin_java_stack_frame_do_nothing_free)(void /*RBinJavaStackMapFrame*/ *stack_frame) {} +// R_API void U(r_bin_java_stack_frame_do_nothing_new)(RBinJavaObj * bin, RBinJavaStackMapFrame * stack_frame, ut64 offset) {} R_API RBinJavaCPTypeMetas *U(r_bin_java_get_cp_meta_from_tag)(ut8 tag) { ut16 i = 0; // set default to unknown. @@ -9090,9 +8942,11 @@ R_API ut8 *U(r_bin_java_cp_append_ref_cname_fname_ftype)(RBinJavaObj * bin, ut32 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_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); } @@ -9222,7 +9076,3 @@ R_API int U(r_bin_java_get_cp_idx_with_name)(RBinJavaObj * bin_obj, const char * } return 0; } - -R_API void r_bin_java_external_printf(PrintfCallback cb) { - Eprintf = cb ? cb : (PrintfCallback) printf; -}