diff options
author | Thomas Haller <thaller@redhat.com> | 2021-06-24 15:14:45 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-06-28 14:32:05 +0200 |
commit | 05aa7519572d0c6985944a617b469e3fb3eb3095 (patch) | |
tree | c932f6e83130980f759daaca6746ecd5c5dffda5 | |
parent | dbe4803d846638fa65b1a735595341d5a5423cf6 (diff) | |
download | NetworkManager-05aa7519572d0c6985944a617b469e3fb3eb3095.tar.gz |
core,glib-aux: move nm_hostname_manager_validate_hostname() to shared-utils
This function is badly named, because it has no NMHostnameManager self
argument. It's just a simple function that entirely operates on a string
argument.
Move it away from "nm-hostname-manager.h" to "libnm-glib-aux/nm-shared-utils.h".
Hostname handling is complicated enough. Simple string validation
functions should not obscure the view on the complicated parts.
-rw-r--r-- | src/core/devices/nm-device.c | 2 | ||||
-rw-r--r-- | src/core/nm-hostname-manager.c | 27 | ||||
-rw-r--r-- | src/core/nm-hostname-manager.h | 2 | ||||
-rw-r--r-- | src/core/settings/nm-settings.c | 2 | ||||
-rw-r--r-- | src/libnm-glib-aux/nm-shared-utils.c | 29 | ||||
-rw-r--r-- | src/libnm-glib-aux/nm-shared-utils.h | 2 |
6 files changed, 33 insertions, 31 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index d963863353..1dd998badd 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -17653,7 +17653,7 @@ hostname_dns_lookup_callback(GObject *source, GAsyncResult *result, gpointer use gboolean valid; resolver->hostname = g_steal_pointer(&output); - valid = nm_hostname_manager_validate_hostname(resolver->hostname); + valid = nm_utils_validate_hostname(resolver->hostname); _LOGD(LOGD_DNS, "hostname-from-dns: lookup done for %s, result %s%s%s%s", diff --git a/src/core/nm-hostname-manager.c b/src/core/nm-hostname-manager.c index e79cb5274d..12610c0c0f 100644 --- a/src/core/nm-hostname-manager.c +++ b/src/core/nm-hostname-manager.c @@ -389,33 +389,6 @@ nm_hostname_manager_write_hostname(NMHostnameManager *self, const char *hostname return TRUE; } -gboolean -nm_hostname_manager_validate_hostname(const char *hostname) -{ - const char *p; - gboolean dot = TRUE; - - if (!hostname || !hostname[0]) - return FALSE; - - for (p = hostname; *p; p++) { - if (*p == '.') { - if (dot) - return FALSE; - dot = TRUE; - } else { - if (!g_ascii_isalnum(*p) && (*p != '-') && (*p != '_')) - return FALSE; - dot = FALSE; - } - } - - if (dot) - return FALSE; - - return (p - hostname <= HOST_NAME_MAX); -} - static void hostname_file_changed_cb(GFileMonitor * monitor, GFile * file, diff --git a/src/core/nm-hostname-manager.h b/src/core/nm-hostname-manager.h index c13167e7f1..ff109e7e89 100644 --- a/src/core/nm-hostname-manager.h +++ b/src/core/nm-hostname-manager.h @@ -45,6 +45,4 @@ void nm_hostname_manager_set_transient_hostname(NMHostnameManager * s gboolean nm_hostname_manager_get_transient_hostname(NMHostnameManager *self, char **hostname); -gboolean nm_hostname_manager_validate_hostname(const char *hostname); - #endif /* __NM_HOSTNAME_MANAGER_H__ */ diff --git a/src/core/settings/nm-settings.c b/src/core/settings/nm-settings.c index c876ea148c..ee6ac59314 100644 --- a/src/core/settings/nm-settings.c +++ b/src/core/settings/nm-settings.c @@ -3441,7 +3441,7 @@ impl_settings_save_hostname(NMDBusObject * obj, g_variant_get(parameters, "(&s)", &hostname); /* Minimal validation of the hostname */ - if (!nm_hostname_manager_validate_hostname(hostname)) { + if (!nm_utils_validate_hostname(hostname)) { error_code = NM_SETTINGS_ERROR_INVALID_HOSTNAME; error_reason = "The hostname was too long or contained invalid characters"; goto err; diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c index 908f6bec8e..68598728cb 100644 --- a/src/libnm-glib-aux/nm-shared-utils.c +++ b/src/libnm-glib-aux/nm-shared-utils.c @@ -6356,3 +6356,32 @@ nm_utils_get_process_exit_status_desc(int status) else return g_strdup_printf("exited with unknown status 0x%x", status); } + +/*****************************************************************************/ + +gboolean +nm_utils_validate_hostname(const char *hostname) +{ + const char *p; + gboolean dot = TRUE; + + if (!hostname || !hostname[0]) + return FALSE; + + for (p = hostname; *p; p++) { + if (*p == '.') { + if (dot) + return FALSE; + dot = TRUE; + } else { + if (!g_ascii_isalnum(*p) && (*p != '-') && (*p != '_')) + return FALSE; + dot = FALSE; + } + } + + if (dot) + return FALSE; + + return (p - hostname <= HOST_NAME_MAX); +} diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 49de9e12b9..803a730c6a 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -2992,4 +2992,6 @@ void nm_crypto_md5_hash(const guint8 *salt, char *nm_utils_get_process_exit_status_desc(int status); +gboolean nm_utils_validate_hostname(const char *hostname); + #endif /* __NM_SHARED_UTILS_H__ */ |