analyzer/protocol/dns: fix memory leak

If `dns_TSIG_addl` is not set, then the BroString allocated by
ExtractOctets() leaks.  Therefore, don't ask ExtractOctets() to copy
the data to a BroString if we're not going to use it.

Yet another memory leak (out of way too many) which would have been
prevented by using smart pointers.
This commit is contained in:
Max Kellermann 2020-02-16 19:11:08 +01:00
parent 2a7f2e0217
commit dd377fffba

View file

@ -769,7 +769,7 @@ int DNS_Interpreter::ParseRR_TSIG(DNS_MsgInfo* msg,
unsigned int sign_time_msec = ExtractShort(data, len); unsigned int sign_time_msec = ExtractShort(data, len);
unsigned int fudge = ExtractShort(data, len); unsigned int fudge = ExtractShort(data, len);
BroString* request_MAC; BroString* request_MAC;
ExtractOctets(data, len, &request_MAC); ExtractOctets(data, len, dns_TSIG_addl ? &request_MAC : nullptr);
unsigned int orig_id = ExtractShort(data, len); unsigned int orig_id = ExtractShort(data, len);
unsigned int rr_error = ExtractShort(data, len); unsigned int rr_error = ExtractShort(data, len);
ExtractOctets(data, len, 0); // Other Data ExtractOctets(data, len, 0); // Other Data