Ethereal

[Ethereal-dev] Malformed packet
Google
 
Web Ethereal.com

Home | Introduction | Documentation | Lists | FAQ | Development | Wiki | Bugs

Ethereal-dev: March 2003


Hi!

I continuos working on the DSR (Dynamic Source Route) protocol. The report Malformed packet is in every packet. It will be caused by the offset declaration, I don't know really. Perhaps you can take a look to the code and see the problem.

This is the dissector code:

guint8 optdatalen,offset= 0x00;
guint16 header_len;

while ((header_len-offset)!=0)
           {

           pdu_type = tvb_get_guint8(tvb,4+offset);
           optdatalen = tvb_get_guint8(tvb,5+offset);

           switch (pdu_type)
               {

case DSR_ROUTE_REQ:
tf = proto_tree_add_uint(dsr_tree, hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf, ett_dsr); proto_tree_add_uint(pdutype_tree, hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break;
case DSR_SRC_ROUTE:
tf = proto_tree_add_uint(dsr_tree, hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf, ett_dsr); proto_tree_add_uint(pdutype_tree, hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break; case DSR_ROUTE_REPLY:
tf = proto_tree_add_uint(dsr_tree, hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf, ett_dsr);


proto_tree_add_uint(pdutype_tree, hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break; }
header_len-=(optdatalen+2);


           if (pdu_type==DSR_PAD0)
               optdatalen+=1;
           else
               optdatalen+=2;

offset+=optdatalen;
}


Hope toy can help me.
Thanks in advanced,

Ana Rodriguez
Spain






Powered by MHonArc 2.6.10