Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Control Flow  at msg_rng_req.c:621

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

dissect_mac_mgmt_msg_rng_req_decoder

(/home/sate/Testcases/c/cve/wireshark-1.2.0/plugins/wimax/msg_rng_req.c)expand/collapse
Show more  
 494  void dissect_mac_mgmt_msg_rng_req_decoder(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 495  {
 496          guint offset = 0;
 497          guint tlv_offset;
 498          guint tvb_len, payload_type;
 499          proto_item *rng_req_item = NULL;
 500          proto_tree *rng_req_tree = NULL;
 501          proto_tree *tlv_tree = NULL;
 502          tlv_info_t tlv_info;
 503          gint tlv_type;
 504          gint tlv_len;
 505   
 506          /* Ensure the right payload type */
 507          payload_type = tvb_get_guint8(tvb, offset);
 508          if(payload_type != MAC_MGMT_MSG_RNG_REQ)
 509          {
 510                  return;
 511          }
 512   
 513          if (tree)
 514          {       /* we are being asked for details */
 515   
 516                  /* Get the tvb reported length */
 517                  tvb_len =  tvb_reported_length(tvb);
 518                  /* display MAC payload type RNG-REQ */
 519                  rng_req_item = proto_tree_add_protocol_format(tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, offset, tvb_len, "MAC Management Message, RNG-REQ (4)");
 520                  /* add MAC RNG-REQ subtree */
 521                  rng_req_tree = proto_item_add_subtree(rng_req_item, ett_mac_mgmt_msg_rng_req_decoder);
 522                  /* display the Message Type */
 523                  proto_tree_add_item(rng_req_tree, hf_rng_req_message_type, tvb, offset, 1, FALSE);
 524                  proto_tree_add_item(rng_req_tree, hf_rng_req_reserved, tvb, 1, 1, FALSE);
 525                  offset += 2;
 526   
 527                  while(offset < tvb_len)
 528                  {
 529                          /* Get the TLV data. */
 530                          init_tlv_info(&tlv_info, tvb, offset);
 531                          /* get the TLV type */
 532                          tlv_type = get_tlv_type(&tlv_info);
 533                          /* get the TLV length */
 534                          tlv_len = get_tlv_length(&tlv_info);
 535                          if(tlv_type == -1 || tlv_len > MAX_TLV_LEN || tlv_len < 1)
 536                          {       /* invalid tlv info */
 537                                  if(check_col(pinfo->cinfo, COL_INFO))
 538                                  {
 539                                          col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "RNG-REQ TLV error");
 540                                  }
 541                                  proto_tree_add_item(rng_req_tree, hf_rng_invalid_tlv, tvb, offset, (tvb_len - offset), FALSE);
 542                                  break;
 543                          }
 544                          /* get the offset to the TLV data */
 545                          tlv_offset = offset + get_tlv_value_offset(&tlv_info);
 546   
 547                          switch (tlv_type) {
 548                                  case RNG_REQ_DL_BURST_PROFILE:
 549                                          /* add TLV subtree */
 550                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Requested Downlink Burst Profile 0x%02x", tvb_get_guint8(tvb, tlv_offset));
 551                                          proto_tree_add_item(tlv_tree, hf_rng_req_dl_burst_profile_diuc, tvb, tlv_offset, 1, FALSE);
 552                                          proto_tree_add_item(tlv_tree, hf_rng_req_dl_burst_profile_lsb_ccc, tvb, tlv_offset, 1, FALSE);
 553                                          break;
 554                                  case RNG_REQ_SS_MAC_ADDRESS:
 555                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_ss_mac_address, tvb, tlv_offset, 6, FALSE);
 556                                          proto_tree_add_item(tlv_tree, hf_rng_req_ss_mac_address, tvb, tlv_offset, 6, FALSE);
 557                                          break;
 558                                  case RNG_REQ_RANGING_ANOMALIES:
 559                                          /* add TLV subtree */
 560                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Ranging Anomalies %d", tvb_get_guint8(tvb, tlv_offset));
 561                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_anomalies_max_power, tvb, tlv_offset, 1, FALSE);
 562                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_anomalies_min_power, tvb, tlv_offset, 1, FALSE);
 563                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_anomalies_timing_adj, tvb, tlv_offset, 1, FALSE);
 564                                          break;
 565                                  case RNG_REQ_AAS_BROADCAST:
 566                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_aas_broadcast, tvb, tlv_offset, 1, FALSE);
 567                                          proto_tree_add_item(tlv_tree, hf_rng_req_aas_broadcast, tvb, tlv_offset, 1, FALSE);
 568                                          break;
 569                                  case RNG_REQ_SERVING_BS_ID:
 570                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_serving_bs_id, tvb, tlv_offset, 6, FALSE);
 571                                          proto_tree_add_item(tlv_tree, hf_rng_req_serving_bs_id, tvb, tlv_offset, 6, FALSE);
 572                                          break;
 573                                  case RNG_REQ_RANGING_PURPOSE_INDICATION:
 574                                          /* display the Ranging Purpose Flags */
 575                                          /* add subtree */
 576                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Ranging Purpose Flags (%u byte(s))", tlv_len);
 577                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_purpose_ho_indication, tvb, tlv_offset, 1, FALSE);
 578                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_purpose_location_update_request, tvb, tlv_offset, 1, FALSE);
 579                                          proto_tree_add_item(tlv_tree, hf_rng_req_ranging_purpose_reserved, tvb, tlv_offset, 1, FALSE);
 580                                          break;
 581                                  case RNG_REQ_HO_ID:
 582                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_ho_id, tvb, tlv_offset, 1, FALSE);
 583                                          proto_tree_add_item(tlv_tree, hf_rng_req_ho_id, tvb, tlv_offset, 1, FALSE);
 584                                          break;
 585                                  case RNG_REQ_POWER_DOWN_INDICATOR:
 586                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_power_down_indicator, tvb, tlv_offset, 1, FALSE);
 587                                          proto_tree_add_item(tlv_tree, hf_rng_req_power_down_indicator, tvb, tlv_offset, 1, FALSE);
 588                                          break;
 589                                  case RNG_REQ_REQUESTED_DNLK_REP_CODING_LEVEL:
 590                                          /* add subtree */
 591                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Requested downlink repetition coding level (%u byte(s))", tlv_len);
 592                                          proto_tree_add_item(tlv_tree, hf_rng_req_repetition_coding_level, tvb, tlv_offset, 1, FALSE);
 593                                          proto_tree_add_item(tlv_tree, hf_rng_req_requested_downlink_repetition_coding_level_reserved, tvb, tlv_offset, 1, FALSE);
 594                                          break;
 595                                  case RNG_REQ_CMAC_KEY_COUNT:
 596                                          if (include_cor2_changes) {
 597                                                  tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_rng_req_cmac_key_count, tvb, tlv_offset, tlv_len, FALSE);
 598                                                  proto_tree_add_item(tlv_tree, hf_rng_req_cmac_key_count, tvb, tlv_offset, 2, FALSE);
 599                                          } else {
 600                                                  /* Unknown TLV type */
 601                                                  tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 602                                                  proto_tree_add_item(tlv_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 603                                          }
 604                                          break;
 605                                  case SHORT_HMAC_TUPLE:
 606                                  case SHORT_HMAC_TUPLE_COR2:
 607                                          if ((!include_cor2_changes && (tlv_type == SHORT_HMAC_TUPLE)) ||
 608                                                  (include_cor2_changes && (tlv_type == SHORT_HMAC_TUPLE_COR2))) {
 609                                                  /* decode and display the Short HMAC Tuple */
 610                                                  tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Short HMAC Tuple (%u byte(s))", tlv_len);
 611                                                  wimax_short_hmac_tuple_decoder(tlv_tree, tvb, tlv_offset, tvb_len - offset);
 612                                          } else {
 613                                                  /* Unknown TLV Type */
 614                                                  tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 615                                                  proto_tree_add_item(tlv_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 616                                          }
 617                                          break;
 618                                  case MAC_VERSION_ENCODING:
 619                                          offset += wimax_common_tlv_encoding_decoder(tvb_new_subset(tvb, offset, (tvb_len - offset), (tvb_len - offset)), pinfo, rng_req_tree);
 620                                          continue;
 621                                          break;
 622                                  case RNG_REQ_POWER_SAVING_CLASS_PARAMETERS:
 623                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, proto_mac_mgmt_msg_rng_req_decoder, tvb, tlv_offset, tlv_len, "Power Saving Class Parameters (%u byte(s))", tlv_len);
 624                                          dissect_power_saving_class(tlv_tree, tlv_type, tvb, tlv_len, pinfo, tlv_offset);
 625                                          break;
 626                                  default:
 627                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_rng_req_decoder, rng_req_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 628                                          proto_tree_add_item(tlv_tree, hf_tlv_type, tvb, tlv_offset, tlv_len, FALSE);
 629                                          break;
 630                          }
 631                          /* update the offset */
 632                          offset = tlv_len + tlv_offset;
 633                  }       /* end of TLV process while loop */
 634          }
 635  }
Show more  




Change Warning 3906.34905 : Unreachable Control Flow

Priority:
State:
Finding:
Owner:
Note: