On Wed, 06 Jan 2016 20:05:12 +0100, Aitor Czr wrote:
> On 01/06/2016 07:59 PM, Edward Bartolo <edb...@gmail.com> wrote:
>> Hi,
>>
>> I can't free the memory of some pointers ( *cad2 and *res) in 
>> netman-gtk3. This is what i get:
>>
>> ~$ gcc main.c -o main
>>
>> ~$ ./main
>> *** Error in `./main': munmap_chunk(): invalid pointer: 
>> 0x0000000001bfdab4 ***
>> Aborted

[...]

Note: I didn't try to undertand what the code is intended
to do, just commenting on some obvious flaws.

> void scan_buffer (char **ptr, char *command, char *name, char *str1, char 
> *str2)
> {
>   FILE *fp;
>   char *cad1, *cad2, *res;
>  
>   cad1=(char*)malloc(1024*sizeof(char));

Better C style would've been:

    cad1=malloc(1024);

Casting malloc()'s return value is nonsense and potentially dangerous, 
sizeof(char) is always guaranteed to equal 1.

[...]

>          cad2 = strstr((char *) cad1, name); 
>          res  = strstr((char *) cad2, str1);


Now you assigned to cad2 and res and lost your only reference 
to your meticulously allocated buffers! (More bogus casts, BTW.)

[...]

And then you tried to free something that was not a pointer value 
returned by any of the *alloc() functions:

>   // free(cad2);
>   // free(res);

[...]

As I said, I didn't try to guess the intention - if you want to 
work in-place an the string or if you're actually looking for strcpy().

HTH, regards
Irrwahn

 
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to