Is this a proprietary dissector  or a dissector you plan to contribute
to wirehsark?


On 3/27/07, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
>
> Hi,
>
>
>
> We are using a 32 bit machine and dissector is working fine. The same
> dissector when used in a 64 bit m/c is giving problems. I would like to
> know how is it going to get affected in the change of environment,
> because initially it did not even compile properly .While testing in a
> 64 bit machine the wireshark is getting crashed giving the following
> error:
>
>
>
> Inside unpack digits , length = 29 and offset is = 18
>
>
>
>
>
> Program received signal SIGSEGV, Segmentation fault.
>
> [Switching to Thread 182924546464 (LWP 1776)]
>
> 0x0000002a9b46afb7 in unpack_digits (tvb=0x10dfbd8, offset=18,
> dgt=0x2a9b588e78) at packet-xxx.c:4488
>
> 4488                    digit_str[i] = dgt->out[octet & 0x0f];
>
> (gdb)
>
>
>
>
>
> The code for unpack digits is as follows:
>
>
>
> static char*
>
> unpack_digits(tvbuff_t *tvb, int offset, dgt_set_t *dgt){
>
>
>
>         int length, length_fake, offset_fake, counter=0;
>
>         guint8 octet, num_of_digits_imsi;
>
>         int i=0;
>
>         char *digit_str;
>
>
>
>         length = tvb_length(tvb);
>
>         printf("\n\nInside unpack digits , length = %d and offset is =
> %d\n\n",length,offset);
>
>         if (length < offset)
>
>                 return "";
>
>         digit_str = ep_alloc((length - offset)*2+1);
>
>
>
>         offset_fake = offset-1;
>
>         num_of_digits_imsi = tvb_get_guint8(tvb,offset_fake);
>
>         if( (num_of_digits_imsi % 2) == 0 )
>
>                         length_fake = num_of_digits_imsi / 2;
>
>         else
>
>                         length_fake = (num_of_digits_imsi+1)/2;
>
>
>
>         printf("\noffset_fake = %d\tnum_of_digits_imsi = %d\tlength_fake
> =  %d",offset_fake,num_of_digits_imsi,length_fake);
>
>         while ( counter < length_fake ){
>
>
>
>                 octet = tvb_get_guint8(tvb,offset);
>
>
>
>                 digit_str[i] = dgt->out[octet & 0x0f];
>
>                 i++;
>
>
>
>                 /* unpack second value in byte */
>
>                 octet = octet >> 4;
>
>
>
>                 if (octet == 0x0f)      /* odd number bytes - hit filler
> */
>
>                         break;
>
>
>
>                 digit_str[i] = dgt->out[octet & 0x0f];
>
>                 i++;
>
>                 offset++;
>
>                 counter++;
>
>
>
>         }
>
>         digit_str[i]= '\0';
>
>         return digit_str;
>
> }
>
>
>
>
>
> Can anybody please help???
>
>
>
> Regards,
>
> Bhavani.
>
>
>
>
> The information contained in this electronic message and any attachments to
> this message are intended for the exclusive use of the addressee(s) and may
> contain proprietary, confidential or privileged information. If you are not
> the intended recipient, you should not disseminate, distribute or copy this
> e-mail. Please notify the sender immediately and destroy all copies of this
> message and any attachments.
>
> WARNING: Computer viruses can be transmitted via email. The recipient should
> check this email and any attachments for the presence of viruses. The
> company accepts no liability for any damage caused by any virus transmitted
> by this email.
>
> www.wipro.com
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to