From 2bef1105f2540ed94edaeb58d51116b9d2764c46 Mon Sep 17 00:00:00 2001 From: Paul Dokas Date: Fri, 13 Oct 2023 16:44:48 -0400 Subject: [PATCH] performance improvements for the LDAP ASN.1 analyzer From zeek/zeek@07a010a64373a1b9a387a28b9752c322bfe0e9c8 --- analyzer/asn1.spicy | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/analyzer/asn1.spicy b/analyzer/asn1.spicy index 5a3f0b1..0674067 100644 --- a/analyzer/asn1.spicy +++ b/analyzer/asn1.spicy @@ -186,28 +186,29 @@ type ASN1ObjectIdentifierNibble = unit { } &convert=self.data; type ASN1ObjectIdentifier = unit(len: uint64) { - var oid: vector; + var oidbytes: bytes; var temp: uint64; var oidstring: string; : uint8 if ( len >= 1 ) { self.temp = $$ / 40; - self.oid.push_back( self.temp ); - self.oidstring = "%d" % (self.temp); + self.oidbytes += ("%d" % (self.temp)).encode(); self.temp = $$ % 40; - self.oid.push_back( self.temp ); - self.oidstring = self.oidstring + ".%d" % (self.temp); + self.oidbytes += (".%d" % (self.temp)).encode(); self.temp = 0; } sublist: ASN1ObjectIdentifierNibble[len - 1] foreach { self.temp = ( self.temp<<7 ) | $$.num; if ( $$.more != 1 ) { - self.oid.push_back(self.temp); - self.oidstring = self.oidstring + ".%d" % (self.temp); + self.oidbytes += (".%d" % (self.temp)).encode(); self.temp = 0; } } + + on %done { + self.oidstring = self.oidbytes.decode(); + } };