P
Pieter Claassen
I am baffled. I get the following error when I try to free some memory
obtained with calloc.
Error:
LEN is 36
STR SIZE BEFORE 0
STR SIZE AFTER 36
1234567890abcdefghijklmnopqrstuvwxyzJUST BEFORE FREE
Segmentation fault
......code start........
void handle_data(u_int32_t total_hdr_len, const struct pcap_pkthdr* pkthdr, const u_char* packet){
char *str;
u_int32_t len;
int n;
len = packet_length - total_hdr_len;
printf("LEN is %d\n",len);
str = (char*)calloc(len + 1,1);
printf("STR SIZE BEFORE %d\n", strlen(str));
if (str == NULL){
printf("Failed to calloc memory\n");
exit(1);
}
str=(char*)(packet + total_hdr_len);
printf("STR SIZE AFTER %d\n", strlen(str));
# ifdef DEBUG
fprintf(stderr,"DATA:\n");
for (n=0;n<len; n++){
printf("%c",str[n]);
}
dump("DATA",(void*)str,len);
# endif
printf("JUST BEFORE FREE\n");
free(str);
printf("JUST AFTER FREE\n");
}
......code end.......
Where am I cocking up? I have tried it with malloc as well with similar
results.
Pieter
obtained with calloc.
Error:
LEN is 36
STR SIZE BEFORE 0
STR SIZE AFTER 36
1234567890abcdefghijklmnopqrstuvwxyzJUST BEFORE FREE
Segmentation fault
......code start........
void handle_data(u_int32_t total_hdr_len, const struct pcap_pkthdr* pkthdr, const u_char* packet){
char *str;
u_int32_t len;
int n;
len = packet_length - total_hdr_len;
printf("LEN is %d\n",len);
str = (char*)calloc(len + 1,1);
printf("STR SIZE BEFORE %d\n", strlen(str));
if (str == NULL){
printf("Failed to calloc memory\n");
exit(1);
}
str=(char*)(packet + total_hdr_len);
printf("STR SIZE AFTER %d\n", strlen(str));
# ifdef DEBUG
fprintf(stderr,"DATA:\n");
for (n=0;n<len; n++){
printf("%c",str[n]);
}
dump("DATA",(void*)str,len);
# endif
printf("JUST BEFORE FREE\n");
free(str);
printf("JUST AFTER FREE\n");
}
......code end.......
Where am I cocking up? I have tried it with malloc as well with similar
results.
Pieter