diff options
author | Dan Williams <dcbw@redhat.com> | 2014-08-27 13:02:26 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2015-01-29 10:11:14 -0600 |
commit | b547b946f7c2202de1408f90cf0307678ec4c2a1 (patch) | |
tree | b6921afef424a7cab606172ebf6fd6463a641ea2 | |
parent | 9167b7d66b414be31a29dee53bf8ba9f2c5282e5 (diff) | |
download | NetworkManager-b547b946f7c2202de1408f90cf0307678ec4c2a1.tar.gz |
settings: make nm_settings_connection_check_permission() private
It's only used in one place; make it private and simplify it a bit.
-rw-r--r-- | src/settings/nm-settings-connection.c | 90 | ||||
-rw-r--r-- | src/settings/nm-settings-connection.h | 3 |
2 files changed, 38 insertions, 55 deletions
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index ef993c39c4..3ebdf74e53 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -291,57 +291,6 @@ session_changed_cb (NMSessionMonitor *self, gpointer user_data) /**************************************************************/ -/* Return TRUE if any active user in the connection's ACL has the given - * permission without having to authorize for it via PolicyKit. Connections - * visible to everyone automatically pass the check. - */ -gboolean -nm_settings_connection_check_permission (NMSettingsConnection *self, - const char *permission) -{ - NMSettingsConnectionPrivate *priv; - NMSettingConnection *s_con; - guint32 num, i; - const char *puser; - - g_return_val_if_fail (NM_IS_SETTINGS_CONNECTION (self), FALSE); - - priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); - - if (priv->visible == FALSE) - return FALSE; - - s_con = nm_connection_get_setting_connection (NM_CONNECTION (self)); - g_assert (s_con); - - /* Check every user in the ACL for a session */ - num = nm_setting_connection_get_num_permissions (s_con); - if (num == 0) { - /* Visible to all so it's OK to auto-activate */ - return TRUE; - } - - for (i = 0; i < num; i++) { - /* For each user get their secret agent and check if that agent has the - * required permission. - * - * FIXME: what if the user isn't running an agent? PolKit needs a bus - * name or a PID but if the user isn't running an agent they won't have - * either. - */ - if (nm_setting_connection_get_permission (s_con, i, NULL, &puser, NULL)) { - NMSecretAgent *agent = nm_agent_manager_get_agent_by_user (priv->agent_mgr, puser); - - if (agent && nm_secret_agent_has_permission (agent, permission)) - return TRUE; - } - } - - return FALSE; -} - -/**************************************************************/ - static gboolean secrets_filter_cb (NMSetting *setting, const char *secret, @@ -2134,6 +2083,43 @@ nm_settings_connection_set_autoconnect_blocked_reason (NMSettingsConnection *con NM_SETTINGS_CONNECTION_GET_PRIVATE (connection)->autoconnect_blocked_reason = reason; } +/**************************************************************/ + +/* Return TRUE if any active user in the connection's ACL has the given + * permission without having to authorize for it via PolicyKit. Connections + * visible to everyone automatically pass the check. + */ +static gboolean +_connection_check_permission (NMSettingsConnection *self, const char *permission) +{ + NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + NMSettingConnection *s_con; + guint32 num, i; + const char *puser; + + s_con = nm_connection_get_setting_connection (NM_CONNECTION (self)); + g_assert (s_con); + + /* Check every user in the ACL for a session */ + num = nm_setting_connection_get_num_permissions (s_con); + if (num == 0) { + /* Visible to all = allowed */ + return TRUE; + } + + for (i = 0; i < num; i++) { + /* Ensure at least one secret agent has the permission */ + if (nm_setting_connection_get_permission (s_con, i, NULL, &puser, NULL)) { + NMSecretAgent *agent = nm_agent_manager_get_agent_by_user (priv->agent_mgr, puser); + + if (agent && nm_secret_agent_has_permission (agent, permission)) + return TRUE; + } + } + + return FALSE; +} + gboolean nm_settings_connection_can_autoconnect (NMSettingsConnection *connection) { @@ -2152,7 +2138,7 @@ nm_settings_connection_can_autoconnect (NMSettingsConnection *connection) permission = nm_utils_get_shared_wifi_permission (NM_CONNECTION (connection)); if (permission) { - if (nm_settings_connection_check_permission (connection, permission) == FALSE) + if (_connection_check_permission (connection, permission) == FALSE) return FALSE; } diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h index 49661f38c6..b680fc4d0d 100644 --- a/src/settings/nm-settings-connection.h +++ b/src/settings/nm-settings-connection.h @@ -158,9 +158,6 @@ gboolean nm_settings_connection_is_visible (NMSettingsConnection *self); void nm_settings_connection_recheck_visibility (NMSettingsConnection *self); -gboolean nm_settings_connection_check_permission (NMSettingsConnection *self, - const char *permission); - void nm_settings_connection_signal_remove (NMSettingsConnection *self); gboolean nm_settings_connection_get_unsaved (NMSettingsConnection *self); |