diff options
Diffstat (limited to 'src/firstboot/firstboot.c')
-rw-r--r-- | src/firstboot/firstboot.c | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index 3805b29437..e2a1c00a75 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -386,12 +386,13 @@ static int prompt_hostname(void) { break; } - if (!hostname_is_valid(h)) { + if (!hostname_is_valid(h, true)) { log_error("Specified hostname invalid."); continue; } - arg_hostname = h; + /* Get rid of the trailing dot that we allow, but don't want to see */ + arg_hostname = hostname_cleanup(h); h = NULL; break; } @@ -715,10 +716,8 @@ static int parse_argv(int argc, char *argv[]) { path_kill_slashes(arg_root); - if (path_equal(arg_root, "/")) { - free(arg_root); - arg_root = NULL; - } + if (path_equal(arg_root, "/")) + arg_root = mfree(arg_root); break; @@ -728,9 +727,8 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_locale); - arg_locale = strdup(optarg); - if (!arg_locale) + r = free_and_strdup(&arg_locale, optarg); + if (r < 0) return log_oom(); break; @@ -741,9 +739,8 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_locale_messages); - arg_locale_messages = strdup(optarg); - if (!arg_locale_messages) + r = free_and_strdup(&arg_locale_messages, optarg); + if (r < 0) return log_oom(); break; @@ -754,24 +751,20 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_timezone); - arg_timezone = strdup(optarg); - if (!arg_timezone) + r = free_and_strdup(&arg_timezone, optarg); + if (r < 0) return log_oom(); break; case ARG_ROOT_PASSWORD: - free(arg_root_password); - arg_root_password = strdup(optarg); - if (!arg_root_password) + r = free_and_strdup(&arg_root_password, optarg); + if (r < 0) return log_oom(); - break; case ARG_ROOT_PASSWORD_FILE: - free(arg_root_password); - arg_root_password = NULL; + arg_root_password = mfree(arg_root_password); r = read_one_line_file(optarg, &arg_root_password); if (r < 0) @@ -780,14 +773,14 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_HOSTNAME: - if (!hostname_is_valid(optarg)) { + if (!hostname_is_valid(optarg, true)) { log_error("Host name %s is not valid.", optarg); return -EINVAL; } - free(arg_hostname); - arg_hostname = strdup(optarg); - if (!arg_hostname) + hostname_cleanup(optarg); + r = free_and_strdup(&arg_hostname, optarg); + if (r < 0) return log_oom(); break; |