Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ktemo en 14 Marzo 2012, 03:02 am



Título: ayuda, serializar c*
Publicado por: ktemo en 14 Marzo 2012, 03:02 am
Hola

estoy trabajando con una libreria para lectores de huella y en una de las funciones me escribe la huella leida en un objeto de este tipo:

unsigned char* fprint;

como necesito utilizarlo en python estoy haciendo los wrappers y necesito serializar esa variable
para poder guardarla o manipularla mas adelante, sin embargo todo lo que intento me produce errores de segmentacion, tengo esta funcion:

void pydp_fmd_get_data(char **fmd_data, char* data, int length)
{
*fmd_data = (char *) malloc(length);
memcpy(fmd_data, data, length);
}

length es la dimension de la variable fprint, asi es como me lo devuelve el api.

Espero puedan ayudarme.


Título: Re: ayuda, serializar c*
Publicado por: Eternal Idol en 14 Marzo 2012, 10:07 am
No entiendo muy bien para que hacer un copia pero:

Código
  1. memcpy(*fmd_data, data, length);


Título: Re: ayuda, serializar c*
Publicado por: ktemo en 14 Marzo 2012, 16:08 pm
hacia una copia porque lo hiba manipular despues pero queria conservar el original para otros propositos, corregi lo que me comentas pero aun asi obtenia fallos de segmentacion, ya no con memcpy sino con swig, asi que al final cambie algunas cosas y puse un estructura con __attribute__((__packed__))

al final quedo asi:

struct dp_fmd_data {
   unsigned char* data;
   unsigned int size;
} __attribute__((__packed__));

size_t dp_fmd_get_data(char *data, int length, unsigned char **ret){
   struct dp_fmd_data *buf;
   size_t buflen;
   buflen = sizeof(*buf) + length;
   buf = malloc(buflen);
   if (!buf)
      return 0;

   *ret = (unsigned char *) buf;
   buf->size = length;
   buf->data = data;
   return buflen;
}

gracias por la ayuda de todas formas :), soy newbie en C y la verdad es que me cuesta trabajar con punteros y cosas de memoria n_n