Herbert Falk wrote:
Problem in code fragment, corrected below....
...which should also have gone to ethereal-dev.
Herbert Falk wrote:
Guy,
I have successfully integrated the IEC 61850 protocols with Ethereal.
It is in limited use (trying to find bugs), but it looks fairly
stable. I am now in the situation where I am preparing the modified
modules for submission back to Ethereal. I am attaching a document
that lets you understand where the modification have been made. I
still have major concerns about packet-pres.c and packet-acse.c since
they do not handle indefinite length encodings and I might need to
re-write both modules in their entirety.
I would like to discuss changing the ASN1.c module to make use of
asn1_helper.c (at least the length decode function so that indefinite
lengths can be handle by any ASN1 parser). I have figured out how to
do this transparently except I also need to change the asn1_tag_get
function to skip 0x00 0x00.
I haven't fully figured it out, but the replacement function would be
something like:
asn1_tag_get(ASN1_SCK *asn1, guint *tag)
{
int ret;
guchar ch;
do {
ret = asn1_octet_decode (asn1, &ch);
if (ret != ASN1_ERR_NOERROR)
return ret;
*tag <<= 7;
*tag |= ch & 0x7F;
} while ((ch & 0x80) == 0x80);
/* added to skip indefinite length encodings */
if ( *tag==0x0)
ret = asn1_tag_get(asn,tag);
return ASN1_ERR_NOERROR;
}
I believe that this will work properly since I believe that no BER
encoded tag can be 0x00. In the ASN1.h file 0x00 would be a universal
ASN1_EOC which is the value of the termination of indefinite length
encodings.
What do you think?
I am attaching a *.pdf that has information regarding what modules
will be forthcoming to Ethereal. I need feedback from you in regards
to what order you want the modules submitted (and point me to the
appropriate submission proceedure).