(/home/sate/Testcases/c/cve/wireshark-1.2.0/plugins/wimax/msg_rng_req.c) |
| |
| 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 | | | |
| 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 | | | { |
| 515 | | | |
| 516 | | | |
| 517 | | | tvb_len = tvb_reported_length(tvb); |
| 518 | | | |
| 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 | | | |
| 521 | | | rng_req_tree = proto_item_add_subtree(rng_req_item, ett_mac_mgmt_msg_rng_req_decoder); |
| 522 | | | |
| 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) |
Event 3:
Continuing from loop body. Leaving loop. offset < tvb_len evaluates to false.
hide
|
|
| 528 | | | { |
| 529 | | | |
| 530 | | | init_tlv_info(&tlv_info, tvb, offset); |
| 531 | | | |
| 532 | | | tlv_type = get_tlv_type(&tlv_info); |
| 533 | | | |
| 534 | | | tlv_len = get_tlv_length(&tlv_info); |
| 535 | | | if(tlv_type == -1 || tlv_len > MAX_TLV_LEN || tlv_len < 1) |
| 536 | | | { |
| 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 | | | |
| 545 | | | tlv_offset = offset + get_tlv_value_offset(&tlv_info); |
Ignored Return Value
The return value of get_tlv_value_offset() is never checked in the highlighted execution scenario. - If the return value can indicate an error, the error will be ignored if the highlighted code executes.
- The return value of get_tlv_value_offset() is checked 98% of the time in this project. CodeSonar is configured to enforce Ignored Return Value checks for any function whose return value is checked at least 96% of the time, unless the function is used fewer than 20 times. (To modify these thresholds, use configuration file parameters RETURN_CHECKER_SAMPLE_SIZE and RETURN_CHECKER_RATIO. To exempt get_tlv_value_offset() from the Ignored Return Value check, use configuration file parameter RETURN_CHECKER_IGNORED_FUNCS).
Show: All events | Only primary events |
|
| 546 | | | |
| 547 | | | switch (tlv_type) { |
Event 2:
tlv_type evaluates to 148.
hide
|
|
| 548 | | | case RNG_REQ_DL_BURST_PROFILE: |
| 549 | | | |
| 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 | | | |
| 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 | | | |
| 575 | | | |
| 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 | | | |
| 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 | | | |
| 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 | | | |
| 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 | | | |
| 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 | | | |
| 632 | | | offset = tlv_len + tlv_offset; |
| 633 | | | } |
| 634 | | | } |
| 635 | | | } |
| |