mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-12 09:38:20 +00:00
Fix 'pd.N' cmd, 0size sections, use eprintf r_anal
This commit is contained in:
parent
af45d0ee16
commit
8ecfc21d58
@ -1,4 +1,4 @@
|
|||||||
/* radare - LGPL - Copyright 2010-2011 */
|
/* radare - LGPL - Copyright 2010-2012 */
|
||||||
/* pancake<nopcode.org> */
|
/* pancake<nopcode.org> */
|
||||||
|
|
||||||
#include <r_anal.h>
|
#include <r_anal.h>
|
||||||
|
@ -152,7 +152,7 @@ R_API RAnalType *r_anal_str_to_type(RAnal *a, const char* type) {
|
|||||||
while (tTree->next) {
|
while (tTree->next) {
|
||||||
RAnalType *t = tTree->next;
|
RAnalType *t = tTree->next;
|
||||||
tmp = r_anal_type_to_str (a, t, "; ");
|
tmp = r_anal_type_to_str (a, t, "; ");
|
||||||
r_cons_printf ("-> (%s)\n", tmp);
|
eprintf ("-> (%s)\n", tmp);
|
||||||
free (tmp);
|
free (tmp);
|
||||||
tTree = tTree->next;
|
tTree = tTree->next;
|
||||||
|
|
||||||
@ -162,6 +162,7 @@ R_API RAnalType *r_anal_str_to_type(RAnal *a, const char* type) {
|
|||||||
|
|
||||||
// TODO: Add types to RList instead of RAnalType
|
// TODO: Add types to RList instead of RAnalType
|
||||||
R_API RAnalType *r_anal_type_loadfile(RAnal *a, const char *path) {
|
R_API RAnalType *r_anal_type_loadfile(RAnal *a, const char *path) {
|
||||||
|
char *tmp;
|
||||||
void *pParser;
|
void *pParser;
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
int n, yv, yylval = 0;
|
int n, yv, yylval = 0;
|
||||||
@ -185,5 +186,13 @@ R_API RAnalType *r_anal_type_loadfile(RAnal *a, const char *path) {
|
|||||||
// TODO: Parse whole tree and split top-level members
|
// TODO: Parse whole tree and split top-level members
|
||||||
// and place them into RList;
|
// and place them into RList;
|
||||||
// TODO: insert '.filename' field for all elements in this tree
|
// TODO: insert '.filename' field for all elements in this tree
|
||||||
|
while (tTree->next) {
|
||||||
|
RAnalType *t = tTree->next;
|
||||||
|
tmp = r_anal_type_to_str (a, t, "; ");
|
||||||
|
eprintf ("-> (%s)\n", tmp);
|
||||||
|
free (tmp);
|
||||||
|
tTree = tTree->next;
|
||||||
|
|
||||||
|
}
|
||||||
return tTree;
|
return tTree;
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ static int cmd_print(void *data, const char *input) {
|
|||||||
int j, ret, err = 0;
|
int j, ret, err = 0;
|
||||||
const ut8 *buf = core->block;
|
const ut8 *buf = core->block;
|
||||||
if (l==0) l = len;
|
if (l==0) l = len;
|
||||||
for (i=j=0; i<core->blocksize && j<len; i+=ret,j++ ) {
|
for (i=j=0; i<core->blocksize && j<len && j<l; i+=ret,j++ ) {
|
||||||
ret = r_asm_disassemble (core->assembler, &asmop, buf+i, core->blocksize-i);
|
ret = r_asm_disassemble (core->assembler, &asmop, buf+i, core->blocksize-i);
|
||||||
if (ret<1) {
|
if (ret<1) {
|
||||||
ret = err = 1;
|
ret = err = 1;
|
||||||
@ -240,7 +240,7 @@ static int cmd_print(void *data, const char *input) {
|
|||||||
int j, ret, err = 0;
|
int j, ret, err = 0;
|
||||||
const ut8 *buf = core->block;
|
const ut8 *buf = core->block;
|
||||||
if (l==0) l = len;
|
if (l==0) l = len;
|
||||||
for (i=j=0; i<core->blocksize && j<len; i++,j++ ) {
|
for (i=j=0; i<core->blocksize && j<len && j<l; i++,j++ ) {
|
||||||
ret = r_asm_disassemble (core->assembler, &asmop, buf+i, core->blocksize-i);
|
ret = r_asm_disassemble (core->assembler, &asmop, buf+i, core->blocksize-i);
|
||||||
if (ret<1) {
|
if (ret<1) {
|
||||||
ret = err = 1;
|
ret = err = 1;
|
||||||
|
@ -11,7 +11,7 @@ static int cmd_type(void *data, const char *input) {
|
|||||||
const char *tname = input + 1;
|
const char *tname = input + 1;
|
||||||
t = r_anal_type_find (core->anal, tname);
|
t = r_anal_type_find (core->anal, tname);
|
||||||
if (t == NULL) eprintf ("Type %s not found!\n", tname);
|
if (t == NULL) eprintf ("Type %s not found!\n", tname);
|
||||||
else r_anal_type_to_str (core->anal, t);
|
else r_anal_type_to_str (core->anal, t, "; ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// t* - list all types in 'pf' syntax
|
// t* - list all types in 'pf' syntax
|
||||||
@ -101,7 +101,7 @@ static int cmd_type(void *data, const char *input) {
|
|||||||
RListIter *k;
|
RListIter *k;
|
||||||
RAnalType *t;
|
RAnalType *t;
|
||||||
r_list_foreach (core->anal->types, k, t) {
|
r_list_foreach (core->anal->types, k, t) {
|
||||||
const char *str = r_anal_type_to_str (core->anal, t);
|
const char *str = r_anal_type_to_str (core->anal, t, "; ");
|
||||||
r_cons_printf ("%s\n", str);
|
r_cons_printf ("%s\n", str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,8 @@ R_API void r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vs
|
|||||||
s = R_NEW (RIOSection);
|
s = R_NEW (RIOSection);
|
||||||
s->id = io->next_section_id++;
|
s->id = io->next_section_id++;
|
||||||
} else update = 1;
|
} else update = 1;
|
||||||
if (size>0xf00000) {
|
if (size==0 || size>0xf00000) {
|
||||||
eprintf ("Invalid size for section at 0x%08"PFMT64x"\n", vaddr);
|
eprintf ("Invalid size (0x%08"PFMT64x") for section at 0x%08"PFMT64x"\n", size, vaddr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
s->offset = offset;
|
s->offset = offset;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user