performance improvements for the LDAP ASN.1 analyzer

This commit is contained in:
Paul Dokas 2023-10-13 16:44:48 -04:00
parent 738c39379f
commit 07a010a643

View file

@ -167,28 +167,29 @@ type ASN1ObjectIdentifierNibble = unit {
} &convert=self.data; } &convert=self.data;
type ASN1ObjectIdentifier = unit(len: uint64) { type ASN1ObjectIdentifier = unit(len: uint64) {
var oid: vector<uint64>; var oidbytes: bytes;
var temp: uint64; var temp: uint64;
var oidstring: string; var oidstring: string;
: uint8 if ( len >= 1 ) { : uint8 if ( len >= 1 ) {
self.temp = $$ / 40; self.temp = $$ / 40;
self.oid.push_back( self.temp ); self.oidbytes += ("%d" % (self.temp)).encode();
self.oidstring = "%d" % (self.temp);
self.temp = $$ % 40; self.temp = $$ % 40;
self.oid.push_back( self.temp ); self.oidbytes += (".%d" % (self.temp)).encode();
self.oidstring = self.oidstring + ".%d" % (self.temp);
self.temp = 0; self.temp = 0;
} }
sublist: ASN1ObjectIdentifierNibble[len - 1] foreach { sublist: ASN1ObjectIdentifierNibble[len - 1] foreach {
self.temp = ( self.temp<<7 ) | $$.num; self.temp = ( self.temp<<7 ) | $$.num;
if ( $$.more != 1 ) { if ( $$.more != 1 ) {
self.oid.push_back(self.temp); self.oidbytes += (".%d" % (self.temp)).encode();
self.oidstring = self.oidstring + ".%d" % (self.temp);
self.temp = 0; self.temp = 0;
} }
} }
on %done {
self.oidstring = self.oidbytes.decode();
}
}; };