Skip to content

Not setting hostname results in `.localhost.local` in STHostName EFI var

The hostname to be written to the STHostName EFI variable is set like this:

optHostName = fmt.Sprintf("%s.%s", optHostName, options.DefHostname)
if optFullHostName != "" {
  optHostName = optFullHostName
}

See https://git.glasklar.is/system-transparency/core/stprov/-/blob/main/subcmd/remote/remote.go?ref_type=heads#L185

The variable options.DefHostname is by default localhost.local. The Makefile by default also sets it to the same value, except it comes from a confusingly named variable DEFAULT_DOMAIN=localhost.local, which of course can be overridden.

So if user does not pass -h, the resulting hostname will be .localhost.local. This is perhaps not ideal. A small fix to avoid the issue caused by not passing -h could be to instead:

if optHostName == "" {
  optHostName = options.DefHostname
} else {
  optHostName = fmt.Sprintf("%s.%s", optHostName, options.DefHostname)
}
if optFullHostName != "" {
  optHostName = optFullHostName
}

But, it might also be that the intention of options.DefHostname from the beginning was to contain a domain name, to be unconditionally added to the (non-FQDN) hostname passed by the user using -h. The DEFAULT_DOMAIN could indicate that, along with the -H option for setting optFullHostName (a FQDN) which, if set, goes into optHostName without any suffix.

It is a bit confusing.

Edited by Daniel Lublin