mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-06-19 11:18:28 +02:00
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.
This commit is contained in:
parent
dbe4803d84
commit
05aa751957
6 changed files with 33 additions and 31 deletions
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue