Expand|Select|Wrap|Line Numbers
- while (1)
- {
- if((kfp = kd_open(kd_filename, READ, NULL , INIT_YES))== NULL) {
- printf("%s: File not found ...\n", kd_filename);
- if (!forceflag) {
- sleep(5);
- }
- else {
- exit(0);
- }
- }
- else
- {
- kd_fileid.capture_session_start_epoch_second = kfp->header.file_id.capture_session_start_epoch_second;
- kd_fileid.file_sequence_counter = kfp->header.file_id.file_sequence_counter;
- if ( (kfp->header.file_type & END_FILE)== END_FILE )
- kd_end_flag = 1;
- else
- kd_end_flag = 0;
- for(i=0;i<kfp->header.total_packet_count;i++)
- {
- if((err=kd_read_next_packet(kfp,(PACKET_t *)kd_row))>0)
- {
- pktCount++;
- pktlen = sizeof(PACKET_HEADER_t) + ((PACKET_t *)kd_row)->kph.kipd.ip_description_str ing_len + ((PACKET_t *)kd_row)->kph.kipd.ip_packet_len ;
- send_packets_to_card(kd_row, pktlen);
- }
- else
- {
- printf("-->%d\n",((PACKET_t *)kd_row)->kph.kipd.ip_packet_len);
- printf("Error in File:%d\n",err);
- break;
- }
- }
- kd_close(kfp, CAPTURE_END);
- if (!forceflag) {
- if ( (kd_fileid.file_sequence_counter % max_kd_files_per_dir) == 0 ) {
- dircnt += 1;
- }
- kd_fileid.file_sequence_counter += 1;
- memset((void *)kd_filename, 0, 1024);
- memset((void *)dir_fname, 0, 512);
- getdfname(kd_fid, dircnt, kd_fileid.file_sequence_counter, dir_fname);
- getfilename(kbasedir, dir_fname, kd_filename);
- }
- if (kd_end_flag){
- memcpy(kd_row, FLUSH_SESSION_STR, sizeof(FLUSH_SESSION_STR));
- printf("Sending Flush sessions command to card\n");
- send_cntl_cmds_to_card(FLUSH_SESSIONS, FLUSH_SESSION_STR, sizeof(FLUSH_SESSION_STR));
- return 0;
- }
- }
- if (forceflag) {
- break;
- }
- }
- free(kd_row);
- return 0;
- }
This will always be in infinite loop the pointer kfp is created on stack.Does the above error suggest that it is due to corruption of pointer kfp or kd_row.these two pointers do not have any problems they are malloced kfp returns a pointer to a file structure which is fine.