diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-08-05 21:01:06 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-08-05 21:02:41 -0400 |
commit | 73974f6768ef5314a572eb93f5cfc7f0f29c9549 (patch) | |
tree | e95c0a5626290c79e7c31ac143e6c75a0f167d9d /src/hostname | |
parent | 4306d66f594722a2fe44b034d3c68bfb864c6a76 (diff) | |
parent | 90365b043ab6a0d8100e0c37dea4ca9d6fdb4695 (diff) |
Merge branch 'hostnamectl-dot-v2'
Manual merge of https://github.com/systemd/systemd/pull/751.
Diffstat (limited to 'src/hostname')
-rw-r--r-- | src/hostname/hostnamectl.c | 21 | ||||
-rw-r--r-- | src/hostname/hostnamed.c | 4 |
2 files changed, 12 insertions, 13 deletions
diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index c996fc04a0..dcbad99ae9 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -252,7 +252,7 @@ static int set_simple_string(sd_bus *bus, const char *method, const char *value) static int set_hostname(sd_bus *bus, char **args, unsigned n) { _cleanup_free_ char *h = NULL; - const char *hostname = args[1]; + char *hostname = args[1]; int r; assert(args); @@ -270,17 +270,16 @@ static int set_hostname(sd_bus *bus, char **args, unsigned n) { * just set the passed hostname as static/dynamic * hostname. */ - h = strdup(hostname); - if (!h) - return log_oom(); - - hostname_cleanup(h, true); - - if (arg_static && streq(h, hostname)) + if (arg_static && hostname_is_valid(hostname, true)) { p = ""; - else { - p = hostname; - hostname = h; + /* maybe get rid of trailing dot */ + hostname = hostname_cleanup(hostname); + } else { + p = h = strdup(hostname); + if (!p) + return log_oom(); + + hostname_cleanup(hostname); } r = set_simple_string(bus, "SetPrettyHostname", p); diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index e52b872a8c..a78516c8b5 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -424,7 +424,7 @@ static int method_set_hostname(sd_bus_message *m, void *userdata, sd_bus_error * if (isempty(name)) name = "localhost"; - if (!hostname_is_valid(name)) + if (!hostname_is_valid(name, false)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid hostname '%s'", name); if (streq_ptr(name, c->data[PROP_HOSTNAME])) @@ -501,7 +501,7 @@ static int method_set_static_hostname(sd_bus_message *m, void *userdata, sd_bus_ } else { char *h; - if (!hostname_is_valid(name)) + if (!hostname_is_valid(name, false)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid static hostname '%s'", name); h = strdup(name); |