Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Control Flow  at packet-image-jfif.c:853

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

dissect_jfif

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-image-jfif.c)expand/collapse
Show more  
 775  dissect_jfif(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
 776  {
 777          proto_tree *subtree = NULL;
 778          proto_item *ti;
 779          guint tvb_len = tvb_reported_length(tvb);
 780          guint32 offset = 0;
 781          tvbuff_t *tmp_tvb;
 782          guint32 len;
 783          guint16 marker;
 784   
 785          /* Add summary to INFO column if it is enabled */
 786          if (check_col(pinfo->cinfo, COL_INFO))
 787                  col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "(JPEG JFIF image)");
 788   
 789          if (tree) {
 790                  ti = proto_tree_add_item(tree, proto_jfif,
 791                                  tvb, 0, -1, FALSE);
 792                  subtree = proto_item_add_subtree(ti, ett_jfif);
 793          }
 794   
 795          marker = tvb_get_ntohs(tvb, 0);
 796          if (marker != MARKER_SOI) {
 797                  if (tree) {
 798                          proto_tree_add_text(subtree, tvb, 0, 2, ErrorInvalidJFIF);
 799                          return;
 800                  }
 801          }
 802          if (tree)
 803                  proto_tree_add_item(subtree, hf_marker, tvb, 0, 2, FALSE);
 804   
 805          offset = 2;
 806   
 807          /*
 808           * Process the remaining markers and marker segments 
 809           */
 810          while (offset < tvb_len) {
 811                  const char *str;
 812                  marker = tvb_get_ntohs(tvb, offset);
 813                  str = match_strval(marker, vals_marker);
 814                  if (str) { /* Known marker */
 815                          if (marker_has_length(marker)) { /* Marker segment */
 816                                  /* Length of marker segment = 2 + len */
 817                                  len = tvb_get_ntohs(tvb, offset + 2);
 818                                  tmp_tvb = tvb_new_subset(tvb, offset, 2 + len, 2 + len);
 819                                  switch (marker) {
 820                                          case MARKER_APP0:
 821                                                  process_app0_segment(subtree, tmp_tvb, len, marker, str);
 822                                                  break;
 823                                          case MARKER_APP1:
 824                                                  process_app1_segment(subtree, tmp_tvb, len, marker, str);
 825                                                  break;
 826                                          case MARKER_APP2:
 827                                                  process_app2_segment(subtree, tmp_tvb, len, marker, str);
 828                                                  break;
 829                                          case MARKER_SOF0:
 830                                          case MARKER_SOF1:
 831                                          case MARKER_SOF2:
 832                                          case MARKER_SOF3:
 833                                          case MARKER_SOF5:
 834                                          case MARKER_SOF6:
 835                                          case MARKER_SOF7:
 836                                          case MARKER_SOF8:
 837                                          case MARKER_SOF9:
 838                                          case MARKER_SOF10:
 839                                          case MARKER_SOF11:
 840                                          case MARKER_SOF13:
 841                                          case MARKER_SOF14:
 842                                          case MARKER_SOF15:
 843                                                  process_sof_header(subtree, tmp_tvb, len, marker, str);
 844                                                  break;
 845                                          case MARKER_SOS:
 846                                                  process_sos_header(subtree, tmp_tvb, len, marker, str);
 847                                                  /*
 848                                                   * TODO - dissect a scan; the scan data is encoded.
 849                                                   */
 850                                                  proto_tree_add_text(subtree, tvb, offset + 2 + len, -1,
 851                                                                  "JFIF dissection stops here (dissection of a scan is not yet implemented)");
 852                                                  return;
 853                                                  break;
 854                                          default:
 855                                                  process_marker_segment(subtree, tmp_tvb, len, marker, str);
 856                                                  break;
 857                                  }
 858                                  offset += 2 + len;
 859                          } else { /* Marker but no segment */
 860                                  /* Length = 2 */
 861                                  proto_tree_add_item(subtree, hf_marker,
 862                                                  tvb, offset, 2, FALSE);
 863                                  offset += 2;
 864                          }
 865                  } else { /* Reserved! */
 866                          ti = proto_tree_add_item(subtree, hf_marker,
 867                                          tvb, offset, 2, FALSE);
 868                          proto_item_append_text(ti, " (Reserved)");
 869                          return;
 870                  }
 871          }
 872   
 873          return;
 874  }
Show more  




Change Warning 2672.33418 : Unreachable Control Flow

Priority:
State:
Finding:
Owner:
Note: