Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Call  at tvbuff.c:1005

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

composite_memcpy

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/tvbuff.c)expand/collapse
Show more  
 951  static void*
 952  composite_memcpy(tvbuff_t *tvb, guint8* target, guint abs_offset, size_t abs_length)
 953  {
 954          guint           i, num_members;
 955          tvb_comp_t      *composite;
 956          tvbuff_t        *member_tvb = NULL;
 957          guint           member_offset, member_length;
 958          gboolean        retval;
 959          GSList          *slist;
 960   
 961          DISSECTOR_ASSERT(tvb->type == TVBUFF_COMPOSITE);
 962   
 963          /* Maybe the range specified by offset/length
 964           * is contiguous inside one of the member tvbuffs */
 965          composite = &tvb->tvbuffs.composite;
 966          num_members = g_slist_length(composite->tvbs);
 967   
 968          for (i = 0; i < num_members; i++) {
 969                  if (abs_offset <= composite->end_offsets[i]) {
 970                          slist = g_slist_nth(composite->tvbs, i);
 971                          member_tvb = slist->data;
 972                          break;
 973                  }
 974          }
 975          DISSECTOR_ASSERT(member_tvb);
 976   
 977          if (check_offset_length_no_exception(member_tvb, abs_offset - composite->start_offsets[i],
 978                                  (gint) abs_length, &member_offset, &member_length, NULL)) {
 979   
 980                  DISSECTOR_ASSERT(!tvb->real_data);
 981                  return tvb_memcpy(member_tvb, target, member_offset, member_length);
 982          }
 983          else {
 984                  /* The requested data is non-contiguous inside 
 985                   * the member tvb. We have to memcpy() the part that's in the member tvb,
 986                   * then iterate across the other member tvb's, copying their portions 
 987                   * until we have copied all data.
 988                   */
 989                  retval = compute_offset_length(member_tvb, abs_offset - composite->start_offsets[i], -1,
 990                                  &member_offset, &member_length, NULL);
 991                  DISSECTOR_ASSERT(retval);
 992   
 993                  tvb_memcpy(member_tvb, target, member_offset, member_length);
 994                  abs_offset      += member_length;
 995                  abs_length      -= member_length;
 996   
 997                  /* Recurse */
 998                  if (abs_length > 0) {
 999                          composite_memcpy(tvb, target + member_length, abs_offset, abs_length);
 1000                  }
 1001   
 1002                  return target;
 1003          }
 1004   
 1005          DISSECTOR_ASSERT_NOT_REACHED();
 1006          return NULL;
 1007  }
Show more  




Change Warning 1122.30589 : Unreachable Call

Priority:
State:
Finding:
Owner:
Note: