Text   |  XML   |  ReML   |   Visible Warnings:

Uninitialized Variable  at packet-per.c:702

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

dissect_per_restricted_character_string

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-per.c)expand/collapse
Show more  
 742  dissect_per_restricted_character_string(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, const char *alphabet, int alphabet_length, tvbuff_t **value_tvb)
 743  {
 744    const char *alphabet_ptr;
 745    char sorted_alphabet[128];
 746   
 747    if (alphabet_length > 127) {
 748      alphabet_ptr = alphabet;
 749    } else {
 750[+]     alphabet_ptr = sort_alphabet(sorted_alphabet, alphabet, alphabet_length);
 751    }
 752[+]   return dissect_per_restricted_character_string_sorted(tvb, offset, actx, tree, hf_index, min_len, max_len, alphabet_ptr, alphabet_length, value_tvb);
expand/collapse

dissect_per_restricted_character_string_sorted

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-per.c)expand/collapse
Show more  
 592  dissect_per_restricted_character_string_sorted(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, const char *alphabet, int alphabet_length, tvbuff_t **value_tvb)
 593  {
 594          guint32 length;
 595          gboolean byte_aligned;
 596          guint8 *buf;
 597          guint char_pos;
 598          int bits_per_char;
 599          guint32 old_offset;
 600   
 601  DEBUG_ENTRY("dissect_per_restricted_character_string");
 602   
 603          /* xx.x if the length is 0 bytes there will be no encoding */
 604          if(max_len==0){
 605                  if (value_tvb) {
 606                          *value_tvb = tvb_new_child_real_data(tvb, NULL, 0, 0);  
 607                  }
 608                  return offset;
 609          }
 610   
 611   
 612          if (min_len == NO_BOUND) {
 613                  min_len=0;
 614          }
 615   
 616   
 617          /* 27.5.2 depending of the alphabet length, find how many bits
 618             are used to encode each character */
 619  /* unaligned PER */
 620          if (actx->aligned){
 621   
 622                  if(alphabet_length<=2){
 623                          bits_per_char=1;
 624                  } else if(alphabet_length<=4){
 625                          bits_per_char=2;
 626                  } else if(alphabet_length<=16){
 627                          bits_per_char=4;
 628                  } else {
 629                          bits_per_char=8;
 630                  }
 631          }else{
 632                  if(alphabet_length<=2){
 633                          bits_per_char=1;
 634                  } else if(alphabet_length<=4){
 635                          bits_per_char=2;
 636                  } else if(alphabet_length<=8){
 637                          bits_per_char=3;
 638                  } else if(alphabet_length<=16){
 639                          bits_per_char=4;
 640                  } else if(alphabet_length<=32){
 641                          bits_per_char=5;
 642                  } else if(alphabet_length<=64){
 643                          bits_per_char=6;
 644                  } else if(alphabet_length<=128){
 645                          bits_per_char=7;
 646                  } else {
 647                          bits_per_char=8;
 648                  }
 649          }
 650   
 651          byte_aligned=TRUE;
 652          if((min_len==max_len)&&(max_len<=2)){
 653                  byte_aligned=FALSE;
 654          }
 655          if ((max_len != NO_BOUND) && (max_len < 2)) {
 656                  byte_aligned=FALSE;
 657          }
 658   
 659          /* xx.x */
 660          length=max_len;
 661          if (max_len == NO_BOUND) {
 662                  offset = dissect_per_length_determinant(tvb, offset, actx, tree, hf_per_octet_string_length, &length);
 663                  /* the unconstrained strings are always byte aligned (27.6.3)*/
 664                  byte_aligned=TRUE;
 665          } else if(min_len!=max_len){
 666                  offset=dissect_per_constrained_integer(tvb, offset, actx,
 667                          tree, hf_per_octet_string_length, min_len, max_len,
 668                          &length, FALSE);
 669                          if (!display_internal_per_fields) PROTO_ITEM_SET_HIDDEN(actx->created_item);
 670          }
 671   
 672          if(!length){
 673                  /* there is no string at all, so dont do any byte alignment */
 674                  /* byte_aligned=FALSE; */
 675                  /* Advance offset to next 'element' */
 676                  offset = offset + 1;    }
 677   
 678          if((byte_aligned)&&(actx->aligned)){
 679                  BYTE_ALIGN_OFFSET(offset);
 680          }
 681   
 682   
 683          buf = g_malloc(length+1);
 684          old_offset=offset;
 685          for(char_pos=0;char_pos<length;char_pos++){
 686                  guchar val;
 687                  int i;
 688                  gboolean bit;
 689   
 690                  val=0;
 691                  for(i=0;i<bits_per_char;i++){
 692                          offset=dissect_per_boolean(tvb, offset, actx, tree, -1, &bit);
 693                          val=(val<<1)|bit;
 694                  }
 695                  /* ALIGNED PER does not do any remapping of chars if  
 696                     bitsperchar is 8  
 697                  */
 698                  if(bits_per_char==8){
 699                          buf[char_pos]=val;
 700                  } else {
 701                          if (val < alphabet_length){
 702                                  buf[char_pos]=alphabet[val];
 703                          } else {
 704                                  buf[char_pos] = '?';    /* XXX - how to mark this? */
Show more  
Show more  




Change Warning 2880.32217 : Uninitialized Variable

Priority:
State:
Finding:
Owner:
Note: