summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-08-27 13:02:26 -0500
committerDan Williams <dcbw@redhat.com>2015-01-29 10:11:14 -0600
commitb547b946f7c2202de1408f90cf0307678ec4c2a1 (patch)
treeb6921afef424a7cab606172ebf6fd6463a641ea2
parent9167b7d66b414be31a29dee53bf8ba9f2c5282e5 (diff)
downloadNetworkManager-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.c90
-rw-r--r--src/settings/nm-settings-connection.h3
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);