* More strcpy/sprintf/strcat exterminations

This commit is contained in:
pancake 2011-07-06 09:40:23 +02:00
parent 510c08f4e4
commit edc7da8f7c
9 changed files with 27 additions and 22 deletions

View File

@ -3000,6 +3000,7 @@
#define X86IM_IO_SET_MODE_32BIT(x) ( (x)->mode |= X86IM_IO_MODE_32BIT )
#define X86IM_IO_SET_MODE_64BIT(x) ( (x)->mode |= X86IM_IO_MODE_64BIT )
// XXX: This is not fucking portable. at least not standard, and not supported by GCC
#pragma pack( push, 1 )
typedef struct _x86im_instr_object // x86 decoded/generated instruction:

View File

@ -40,7 +40,7 @@ R_API void r_anal_cc_reset (RAnalCC *cc) {
R_API char *r_anal_cc_to_string (RAnal *anal, RAnalCC* cc) {
RSyscallItem *si;
RAnalFcn *fcn;
char str[1024], buf[32];
char str[1024], buf[64];
int i, eax = 0; // eax = arg0
str[0] = 0;
@ -63,11 +63,11 @@ R_API char *r_anal_cc_to_string (RAnal *anal, RAnalCC* cc) {
const char *reg = r_syscall_reg (anal->syscall, i+1, si->args);
item = r_reg_get (anal->reg, reg, R_REG_TYPE_GPR);
if (item) {
sprintf (buf, "0x%"PFMT64x, r_reg_get_value (anal->reg, item));
strcat (str, buf);
snprintf (buf, sizeof (buf), "0x%"PFMT64x, r_reg_get_value (anal->reg, item));
strcat (str, buf); // XXX: do not use strcat
} else eprintf ("Unknown reg '%s'\n", reg);
if (i<si->args-1)
strcat (str, ",");
strcat (str, ","); // XXX: do not use strcat
}
strcat (str, ")");
} else snprintf (str, sizeof (str), "syscall[0x%x][%d]=?", (int)cc->jump, eax);

View File

@ -71,7 +71,7 @@ R_API char *r_anal_cond_to_string(RAnalCond *cond) {
val0 = r_anal_value_to_string (cond->arg[0]);
val1 = r_anal_value_to_string (cond->arg[1]);
if (val0) {
if (R_ANAL_COND_SINGLE(cond)) {
if (R_ANAL_COND_SINGLE (cond)) {
if ( (out = malloc (strlen (val0) + 10)) )
sprintf (out, "%s%s", cnd, val0);
} else if ( (out = malloc (strlen (val0) + strlen (val1)+10)) )
@ -84,7 +84,7 @@ R_API char *r_anal_cond_to_string(RAnalCond *cond) {
R_API RAnalCond *r_anal_cond_new_from_op(RAnalOp *op) {
RAnalCond *cond;
if (!(cond = r_anal_cond_new()))
if (!(cond = r_anal_cond_new ()))
return NULL;
//v->reg[0] = op->src[0];
//v->reg[1] = op->src[1];

View File

@ -209,16 +209,16 @@ R_API char *r_anal_op_to_string(RAnal *anal, RAnalOp *op) {
ret[0] = '\0';
break;
case R_ANAL_OP_TYPE_NOP:
sprintf (ret, "nop");
memcpy (ret, "nop", 4);
break;
case R_ANAL_OP_TYPE_RET:
sprintf (ret, "ret");
memcpy (ret, "ret", 4);
break;
case R_ANAL_OP_TYPE_LEAVE:
sprintf (ret, "leave");
memcpy (ret, "leave", 6);
break;
default:
sprintf (ret, "// ?");
memcpy (ret, "// ?", 5);
break;
}
free (r0);

View File

@ -81,3 +81,4 @@ struct r_bin_dex_str_t *r_bin_dex_get_strings (struct r_bin_dex_obj_t* bin);
int dex_read_uleb128 (const char *ptr);
int dex_read_sleb128 (const char *ptr);
int dex_uleb128_len (const char *ptr);

View File

@ -68,7 +68,7 @@ static RList* strings (RBinArch *arch) {
len = dex_read_uleb128 (buf);
// len = R_BIN_SIZEOF_STRINGS-1;
if (len>0 && len < R_BIN_SIZEOF_STRINGS) {
r_buf_read_at(bin->b, bin->strings[i]+dex_uleb128_len (buf),
r_buf_read_at (bin->b, bin->strings[i]+dex_uleb128_len (buf),
(ut8*)&ptr->string, len);
ptr->string[(int) len]='\0';
ptr->rva = ptr->offset = bin->strings[i];

View File

@ -170,22 +170,22 @@ R_API RConfigNode *r_config_set_i(RConfig *cfg, const char *name, const ut64 i)
if (node) {
if (node->flags & CN_RO)
return NULL;
if (node->value)
if (node->value) {
free (node->value);
ov = strdup (node->value);
else node->value = strdup("");
free (node->value);
}
if (node->flags & CN_BOOL) {
node->value = strdup(i?"true":"false");
node->value = strdup (i? "true": "false");
} else {
sprintf (buf, "%"PFMT64d"", i); //0x%08lx", i);
node->value = strdup(buf);
snprintf (buf, sizeof (buf)-1, "%"PFMT64d, i);
node->value = strdup (buf);
}
//node->flags = CN_RW | CN_INT;
node->i_value = i;
} else {
if (!cfg->lock) {
if (i<1024) sprintf (buf, "%"PFMT64d"", i);
else sprintf (buf, "0x%08"PFMT64x"", i);
if (i<1024) snprintf (buf, sizeof (buf), "%"PFMT64d"", i);
else snprintf (buf, sizeof (buf), "0x%08"PFMT64x"", i);
node = r_config_node_new (name, buf);
node->flags = CN_RW | CN_OFFT;
node->i_value = i;

View File

@ -70,7 +70,7 @@ static int ptrace_write_at(int pid, const ut8 *pbuf, int sz, ut64 addr) {
if (last) {
lr = debug_read_raw (pid, (void*)at);
memcpy (&lr, buf+x, last);
if (debug_write_raw (pid, (void*)at, (void*)lr))
if (debug_write_raw (pid, (void*)at, lr))
return sz-last;
}
return sz;

View File

@ -454,12 +454,15 @@ R_API void r_str_writef(int fd, const char *fmt, ...) {
* return: the pointer ptr resized to string size.
*/
R_API char *r_str_concat(char *ptr, const char *string) {
int slen, plen;
if (ptr == NULL)
return strdup (string);
ptr = realloc (ptr, strlen (string)+strlen (ptr)+1);
plen = strlen (ptr);
slen = strlen (string);
ptr = realloc (ptr, slen + plen + 1);
if (ptr == NULL)
return NULL;
strcat (ptr, string);
memcpy (ptr+plen, string, slen+1);
return ptr;
}