summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-sysdeps.h
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2007-06-09 21:53:20 +0000
committerHavoc Pennington <hp@redhat.com>2007-06-09 21:53:20 +0000
commit23832672266bb4ff23b66247c0cfa1a2ed0cc97b (patch)
tree119e37411f14923780de3ca7a759707508f1ec63 /dbus/dbus-sysdeps.h
parentb80a8fe6b364543aa4b32a02a5ad913faf97173b (diff)
2007-06-09 Havoc Pennington <hp@redhat.com>
* bus/dispatch.c (check_get_connection_unix_process_id): adapt since sysdeps-unix.h stuff isn't included anymore * bus/bus.c (bus_context_new): use more abstract functions to change user, so they can be no-ops on Windows * dbus/dbus-credentials.c, dbus/dbus-credentials.h, dbus/dbus-credentials-util.c: new files containing a fully opaque DBusCredentials data type to replace the old not opaque one. * configure.in (DBUS_UNIX): define DBUS_UNIX to match DBUS_WIN on windows * dbus/dbus-userdb.h: prohibit on Windows, next step is to clean up the uses of it in bus/*.c and factor out the parts of cookie auth that depend on it
Diffstat (limited to 'dbus/dbus-sysdeps.h')
-rw-r--r--dbus/dbus-sysdeps.h98
1 files changed, 23 insertions, 75 deletions
diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h
index c89d35f0..f83c17ca 100644
--- a/dbus/dbus-sysdeps.h
+++ b/dbus/dbus-sysdeps.h
@@ -55,6 +55,9 @@ typedef struct DBusString DBusString;
/** An opaque list type */
typedef struct DBusList DBusList;
+/** Object that contains a list of credentials such as UNIX or Windows user ID */
+typedef struct DBusCredentials DBusCredentials;
+
/**
* @addtogroup DBusSysdeps
*
@@ -151,79 +154,25 @@ int _dbus_listen_tcp_socket (const char *host,
DBusError *error);
int _dbus_accept (int listen_fd);
-/**
- * Struct representing socket credentials
- */
-typedef struct
-{
- dbus_pid_t pid; /**< process ID or DBUS_PID_UNSET */
- dbus_uid_t uid; /**< user ID or DBUS_UID_UNSET */
- dbus_gid_t gid; /**< group ID or DBUS_GID_UNSET */
-} DBusCredentials;
-
-/* FIXME these read/send credentials should get moved to sysdeps-unix.h,
- * or renamed to reflect what they mean cross-platform
- */
-dbus_bool_t _dbus_read_credentials_unix_socket (int client_fd,
- DBusCredentials *credentials,
- DBusError *error);
-dbus_bool_t _dbus_send_credentials_unix_socket (int server_fd,
- DBusError *error);
-
-
-void _dbus_credentials_clear (DBusCredentials *credentials);
-void _dbus_credentials_from_current_process (DBusCredentials *credentials);
-dbus_bool_t _dbus_credentials_match (const DBusCredentials *expected_credentials,
- const DBusCredentials *provided_credentials);
-
-
-/** Information about a UNIX user */
-typedef struct DBusUserInfo DBusUserInfo;
-/** Information about a UNIX group */
-typedef struct DBusGroupInfo DBusGroupInfo;
-
-/**
- * Information about a UNIX user
- */
-struct DBusUserInfo
-{
- dbus_uid_t uid; /**< UID */
- dbus_gid_t primary_gid; /**< GID */
- dbus_gid_t *group_ids; /**< Groups IDs, *including* above primary group */
- int n_group_ids; /**< Size of group IDs array */
- char *username; /**< Username */
- char *homedir; /**< Home directory */
-};
-
-/**
- * Information about a UNIX group
- */
-struct DBusGroupInfo
-{
- dbus_gid_t gid; /**< GID */
- char *groupname; /**< Group name */
-};
-dbus_bool_t _dbus_user_info_fill (DBusUserInfo *info,
- const DBusString *username,
- DBusError *error);
-dbus_bool_t _dbus_user_info_fill_uid (DBusUserInfo *info,
- dbus_uid_t uid,
- DBusError *error);
-void _dbus_user_info_free (DBusUserInfo *info);
+dbus_bool_t _dbus_read_credentials_socket (int client_fd,
+ DBusCredentials *credentials,
+ DBusError *error);
+dbus_bool_t _dbus_send_credentials_socket (int server_fd,
+ DBusError *error);
-dbus_bool_t _dbus_group_info_fill (DBusGroupInfo *info,
- const DBusString *groupname,
- DBusError *error);
-dbus_bool_t _dbus_group_info_fill_gid (DBusGroupInfo *info,
- dbus_gid_t gid,
- DBusError *error);
-void _dbus_group_info_free (DBusGroupInfo *info);
+dbus_bool_t _dbus_credentials_add_from_username (DBusCredentials *credentials,
+ const DBusString *username);
+dbus_bool_t _dbus_credentials_add_from_current_process (DBusCredentials *credentials);
+dbus_bool_t _dbus_credentials_parse_and_add_desired (DBusCredentials *credentials,
+ const DBusString *desired_identity);
+dbus_bool_t _dbus_username_from_current_process (const DBusString **username);
+dbus_bool_t _dbus_append_desired_identity (DBusString *str);
-unsigned long _dbus_getpid (void);
-dbus_uid_t _dbus_getuid (void);
-dbus_gid_t _dbus_getgid (void);
+dbus_bool_t _dbus_homedir_from_current_process (const DBusString **homedir);
+dbus_bool_t _dbus_homedir_from_username (const DBusString *username,
+ DBusString *homedir);
/** Opaque type representing an atomically-modifiable integer
* that can be used from multiple threads.
@@ -398,9 +347,9 @@ dbus_bool_t _dbus_become_daemon (const DBusString *pidfile,
dbus_bool_t _dbus_write_pid_file (const DBusString *filename,
unsigned long pid,
DBusError *error);
-dbus_bool_t _dbus_change_identity (unsigned long uid,
- unsigned long gid,
- DBusError *error);
+dbus_bool_t _dbus_verify_daemon_user (const char *user);
+dbus_bool_t _dbus_change_to_daemon_user (const char *user,
+ DBusError *error);
/** A UNIX signal handler */
typedef void (* DBusSignalHandler) (int sig);
@@ -446,9 +395,6 @@ dbus_bool_t _dbus_user_at_console (const char *username,
_DBUS_BYTE_OF_PRIMITIVE (a, 6) == _DBUS_BYTE_OF_PRIMITIVE (b, 6) && \
_DBUS_BYTE_OF_PRIMITIVE (a, 7) == _DBUS_BYTE_OF_PRIMITIVE (b, 7))
-dbus_bool_t _dbus_parse_uid (const DBusString *uid_str,
- dbus_uid_t *uid);
-
dbus_bool_t _dbus_get_autolaunch_address (DBusString *address,
DBusError *error);
@@ -472,6 +418,8 @@ dbus_bool_t _dbus_split_paths_and_append (DBusString *dirs,
const char *suffix,
DBusList **dir_list);
+unsigned long _dbus_pid_for_log (void);
+
/** @} */
DBUS_END_DECLS