diff --git a/scripts/base/protocols/krb/main.bro b/scripts/base/protocols/krb/main.bro index e45ce92cd5..076ea0e171 100644 --- a/scripts/base/protocols/krb/main.bro +++ b/scripts/base/protocols/krb/main.bro @@ -140,7 +140,8 @@ event krb_as_request(c: connection, msg: KDC_Request) &priority=5 c$krb$request_type = "AS"; c$krb$client = fmt("%s/%s", msg?$client_name ? msg$client_name : "", msg$service_realm); - c$krb$service = msg$service_name; + if ( msg?$service_name ) + c$krb$service = msg$service_name; if ( msg?$from ) c$krb$from = msg$from; @@ -183,7 +184,8 @@ event krb_tgs_request(c: connection, msg: KDC_Request) &priority=5 return; c$krb$request_type = "TGS"; - c$krb$service = msg$service_name; + if ( msg?$service_name ) + c$krb$service = msg$service_name; if ( msg?$from ) c$krb$from = msg$from; c$krb$till = msg$till; diff --git a/testing/btest/Traces/krb/optional-service-name.pcap b/testing/btest/Traces/krb/optional-service-name.pcap new file mode 100755 index 0000000000..85df6b2ae2 Binary files /dev/null and b/testing/btest/Traces/krb/optional-service-name.pcap differ diff --git a/testing/btest/core/leaks/krb-service-name.test b/testing/btest/core/leaks/krb-service-name.test new file mode 100644 index 0000000000..a0d8a84322 --- /dev/null +++ b/testing/btest/core/leaks/krb-service-name.test @@ -0,0 +1,8 @@ +# Needs perftools support. +# +# @TEST-REQUIRES: bro --help 2>&1 | grep -q mem-leaks +# +# @TEST-GROUP: leaks +# +# @TEST-EXEC: HEAP_CHECK_DUMP_DIRECTORY=. HEAPCHECK=local btest-bg-run bro bro -m -r $TRACES/krb/optional-service-name.pcap +# @TEST-EXEC: btest-bg-wait 60