summaryrefslogtreecommitdiff
path: root/lib/command.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2022-04-21 14:13:01 -0400
committerDonald Sharp <sharpd@nvidia.com>2022-04-21 14:13:01 -0400
commita7141b85c8ded6f05edf51d5a61e063493fc85c7 (patch)
treeea5fecfa5a5f06623beec644a148af2908f902c2 /lib/command.c
parent60d296518b48c75ab4d21ed696e970b8d987a5ac (diff)
lib: Ensure an empty string does not get printed for host/domain
End operator is showing: ! frr version 8.0.1 frr defaults traditional hostname test.example.com domainname domainname should not be printed in this case at all. I do not see any mechanism in current code that this could happen, but what do I know? Put some extra stupid insurance in place to prevent bad config from being generated. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'lib/command.c')
-rw-r--r--lib/command.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/command.c b/lib/command.c
index 1989668bf0..a429510059 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -445,11 +445,15 @@ static bool full_cli;
/* This function write configuration of this host. */
static int config_write_host(struct vty *vty)
{
- if (cmd_hostname_get())
- vty_out(vty, "hostname %s\n", cmd_hostname_get());
+ const char *name;
- if (cmd_domainname_get())
- vty_out(vty, "domainname %s\n", cmd_domainname_get());
+ name = cmd_hostname_get();
+ if (name && name[0] != '\0')
+ vty_out(vty, "hostname %s\n", name);
+
+ name = cmd_domainname_get();
+ if (name && name[0] != '\0')
+ vty_out(vty, "domainname %s\n", name);
/* The following are all configuration commands that are not sent to
* watchfrr. For instance watchfrr is hardcoded to log to syslog so