Text   |  XML   |  ReML   |   Visible Warnings:

Null Pointer Dereference  at pcapng.c:730

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

pcapng_open

(/home/sate/Testcases/c/cve/wireshark-1.2.0/wiretap/pcapng.c)expand/collapse
Show more  
 1110  pcapng_open(wtap *wth, int *err, gchar **err_info)
 1111  {
 1112          int bytes_read;
 1113          pcapng_t pn;
 1114          wtapng_block_t wblock;
 1115   
 1116   
 1117          /* we don't know the byte swapping of the file yet */
 1118          pn.byte_swapped = FALSE;
 1119          pn.if_fcslen = -1;
 1120          pn.version_major = -1;
 1121          pn.version_minor = -1;
 1122          pn.interface_data = NULL;
 1123          pn.number_of_interfaces = 0;
 1124   
 1125          /* we don't expect any packet blocks yet */
 1126          wblock.frame_buffer = NULL;
 1127          wblock.pseudo_header = NULL;
 1128   
 1129   
 1130          pcapng_debug0("pcapng_open: opening file");
 1131          /* read first block */
 1132[+]         bytes_read = pcapng_read_block(wth->fh, &pn, &wblock, err, err_info);
expand/collapse

pcapng_read_block

(/home/sate/Testcases/c/cve/wireshark-1.2.0/wiretap/pcapng.c)expand/collapse
Show more  
 1027  pcapng_read_block(FILE_T fh, pcapng_t *pn, wtapng_block_t *wblock, int *err, gchar **err_info)
 1028  {
 1029          int     block_read;
 1030          int     bytes_read;
 1031          pcapng_block_header_t bh;
 1032          guint32 block_total_length;
 1033   
 1034   
 1035          /* Try to read the (next) block header */
 1036          errno = WTAP_ERR_CANT_READ;
 1037          bytes_read = file_read(&bh, 1, sizeof bh, fh);
 1038          if (bytes_read != sizeof bh) {
 1039                  pcapng_debug0("pcapng_read_block: end of file");
 1040                  *err = file_error(fh);
 1041                  if (*err != 0)
 1042                          return -1;
 1043                  return 0;
 1044          }
 1045   
 1046          block_read = bytes_read;
 1047          if(pn->byte_swapped) {
 1048                  bh.block_type           = BSWAP32(bh.block_type);
 1049                  bh.block_total_length   = BSWAP32(bh.block_total_length);
 1050          }
 1051   
 1052          wblock->type = bh.block_type;
 1053   
 1054          pcapng_debug1("pcapng_read_block: block_type 0x%x", bh.block_type);
 1055   
 1056          switch(bh.block_type) {
 1057                  case(BLOCK_TYPE_SHB):
 1058                          bytes_read = pcapng_read_section_header_block(fh, &bh, pn, wblock, err, err_info);
 1059                          break;
 1060                  case(BLOCK_TYPE_IDB):
 1061                          bytes_read = pcapng_read_if_descr_block(fh, &bh, pn, wblock, err, err_info);
 1062                          break;
 1063                  case(BLOCK_TYPE_PB):
 1064[+]                         bytes_read = pcapng_read_packet_block(fh, &bh, pn, wblock, err, err_info, FALSE);
expand/collapse

pcapng_read_packet_block

(/home/sate/Testcases/c/cve/wireshark-1.2.0/wiretap/pcapng.c)expand/collapse
Show more  
 656  pcapng_read_packet_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn, wtapng_block_t *wblock,int *err, gchar **err_info _U_, gboolean enhanced)
 657  {
 658          int bytes_read;
 659          int block_read;
 660          int to_read;
 661          guint64 file_offset64;
 662          pcapng_enhanced_packet_block_t epb;
 663          pcapng_packet_block_t pb;
 664          guint32 block_total_length;
 665          pcapng_option_header_t oh;
 666          char option_content[100]; /* XXX - size might need to be increased, if we see longer options */
 667   
 668   
 669          /* "(Enhanced) Packet Block" read fixed part */
 670          errno = WTAP_ERR_CANT_READ;
 671          if (enhanced) {
 672                  bytes_read = file_read(&epb, 1, sizeof epb, fh);
 673                  if (bytes_read != sizeof epb) {
 674                          pcapng_debug0("pcapng_read_packet_block: failed to read packet data");
 675                          *err = file_error(fh);
 676                          return 0;
 677                  }
 678                  block_read = bytes_read;
 679   
 680                  if (pn->byte_swapped) {
 681                          wblock->data.packet.interface_id        = BSWAP32(epb.interface_id);
 682                          wblock->data.packet.drops_count         = -1; /* invalid */
 683                          wblock->data.packet.ts_high             = BSWAP32(epb.timestamp_high);
 684                          wblock->data.packet.ts_low              = BSWAP32(epb.timestamp_low);
 685                          wblock->data.packet.cap_len             = BSWAP32(epb.captured_len);
 686                          wblock->data.packet.packet_len          = BSWAP32(epb.packet_len);
 687                  } else {
 688                          wblock->data.packet.interface_id        = epb.interface_id;
 689                          wblock->data.packet.drops_count         = -1; /* invalid */
 690                          wblock->data.packet.ts_high             = epb.timestamp_high;
 691                          wblock->data.packet.ts_low              = epb.timestamp_low;
 692                          wblock->data.packet.cap_len             = epb.captured_len;
 693                          wblock->data.packet.packet_len          = epb.packet_len;
 694                  }
 695          } else {
 696                  bytes_read = file_read(&pb, 1, sizeof pb, fh);
 697                  if (bytes_read != sizeof pb) {
 698                          pcapng_debug0("pcapng_read_packet_block: failed to read packet data");
 699                          *err = file_error(fh);
 700                          return 0;
 701                  }
 702                  block_read = bytes_read;
 703   
 704                  if (pn->byte_swapped) {
 705                          wblock->data.packet.interface_id        = BSWAP16(pb.interface_id);
 706                          wblock->data.packet.drops_count         = BSWAP16(pb.drops_count);
 707                          wblock->data.packet.ts_high             = BSWAP32(pb.timestamp_high);
 708                          wblock->data.packet.ts_low              = BSWAP32(pb.timestamp_low);
 709                          wblock->data.packet.cap_len             = BSWAP32(pb.captured_len);
 710                          wblock->data.packet.packet_len          = BSWAP32(pb.packet_len);
 711                  } else {
 712                          wblock->data.packet.interface_id        = pb.interface_id;
 713                          wblock->data.packet.drops_count         = pb.drops_count;
 714                          wblock->data.packet.ts_high             = pb.timestamp_high;
 715                          wblock->data.packet.ts_low              = pb.timestamp_low;
 716                          wblock->data.packet.cap_len             = pb.captured_len;
 717                          wblock->data.packet.packet_len          = pb.packet_len;
 718                  }
 719          }
 720   
 721          pcapng_debug3("pcapng_read_packet_block: packet data: packet_len %u captured_len %u interface_id %u",
 722                        wblock->data.packet.packet_len,
 723                        wblock->data.packet.cap_len,
 724                        wblock->data.packet.interface_id);
 725   
 726          /* XXX - implement other linktypes then Ethernet */
 727          /* (or even better share the code with libpcap.c) */
 728   
 729          /* Ethernet FCS length, might be overwritten by "per packet" options */
 730          ((union wtap_pseudo_header *) wblock->pseudo_header)->eth.fcs_len = pn->if_fcslen;
Show more  
Show more  
Show more  




Change Warning 1047.30250 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: