Initial working (again) version of gdb://

This commit is contained in:
pancake 2012-08-08 17:43:51 +02:00
parent a2ebdcb650
commit 44ee3ce8d2
2 changed files with 20 additions and 10 deletions

View File

@ -178,8 +178,12 @@ static char *gdbwrap_extract_from_packet(const char *strtoparse,
if (strsize > maxsize)
strsize = maxsize;
strncpy (strret, charbegin + strtorem, strsize);
//strncpy (strret, charbegin + strtorem, strsize);
{
char *p = charbegin+strtorem;
memmove (strret, p, R_MIN (strlen (p), strsize)+1);
strret[strsize] = GDBWRAP_NULL_CHAR;
}
return strret;
}
@ -392,7 +396,7 @@ static char *gdbwrap_get_packet(gdbwrap_t *desc) {
static char *gdbwrap_send_data(gdbwrap_t *desc, const char *query) {
int rval = 0;
char *mes;
char *mes = NULL;
if (desc == NULL || query == NULL)
return NULL;
@ -488,14 +492,16 @@ IRAPI gdbwrap_t *gdbwrap_current_get(void) {
*/
IRAPI gdbwrap_t *gdbwrap_init(int fd, ut32 num_regs, ut32 reg_size) {
gdbwrap_t *desc;
if (fd == -1)
if (fd == -1) {
eprintf ("fd is minus wan\n");
return NULL;
}
desc = malloc (sizeof (gdbwrap_t));
if (!desc) return NULL;
desc->reg_size = reg_size;
desc->num_registers = num_regs;
desc->regs = malloc(4*desc->reg_size*desc->num_registers);
if (desc->regs) {
if (!desc->regs) {
free (desc);
return NULL;
}
@ -503,6 +509,7 @@ IRAPI gdbwrap_t *gdbwrap_init(int fd, ut32 num_regs, ut32 reg_size) {
desc->max_packet_size = 2500;
desc->packet = malloc((desc->max_packet_size + 1) * sizeof (char));
if (desc->packet == NULL) {
eprintf ("cant apack\n");
free (desc->regs);
free (desc);
return NULL;

View File

@ -40,13 +40,16 @@ static RIODesc *__open(RIO *io, const char *file, int rw, int mode) {
p = strchr (port, '/');
if (p) *p=0;
_fd = r_socket_new (R_FALSE);
if (_fd) {
if (r_socket_connect_tcp (_fd, host, port)) {
if (_fd && r_socket_connect_tcp (_fd, host, port)) {
riog = R_NEW (RIOGdb);
riog->fd = _fd;
riog->desc = gdbwrap_init (_fd->fd, NUM_REGS, 4);
return r_io_desc_new (&r_io_plugin_gdb, _fd->fd, file, rw, mode, riog);
if (!riog->desc) {
r_socket_free (_fd);
free (riog);
return NULL;
}
return r_io_desc_new (&r_io_plugin_gdb, _fd->fd, file, rw, mode, riog);
}
eprintf ("gdb.io.open: Cannot connect to host.\n");
return NULL;