From: Lukasz Skalski Date: Wed, 26 Nov 2014 15:06:15 +0000 (+0000) Subject: [kdbus] sync with kdbus (kdbus.h - commit: b024fb43c66b) X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd643b87ab7bc232274c5cd6f9c175d5f6f9ecb9;p=platform%2Fupstream%2Fglib.git [kdbus] sync with kdbus (kdbus.h - commit: b024fb43c66b) --- diff --git a/gio/gkdbus.c b/gio/gkdbus.c index fabeba0..622011f 100644 --- a/gio/gkdbus.c +++ b/gio/gkdbus.c @@ -1234,14 +1234,16 @@ g_kdbus_GetConnInfo_internal (GDBusConnection *connection, { switch (item->type) { - case KDBUS_ITEM_CREDS: + case KDBUS_ITEM_PIDS: if (flag == G_BUS_CREDS_PID) { - guint pid = item->creds.pid; + guint pid = item->pids.pid; result = g_variant_new ("(u)", pid); goto exit; - } + } + + case KDBUS_ITEM_CREDS: if (flag == G_BUS_CREDS_UID) { @@ -1257,8 +1259,10 @@ g_kdbus_GetConnInfo_internal (GDBusConnection *connection, case KDBUS_ITEM_CMDLINE: case KDBUS_ITEM_CGROUP: case KDBUS_ITEM_CAPS: - case KDBUS_ITEM_NAME: case KDBUS_ITEM_AUDIT: + case KDBUS_ITEM_CONN_DESCRIPTION: + case KDBUS_ITEM_AUXGROUPS: + case KDBUS_ITEM_OWNED_NAME: break; } } @@ -1988,6 +1992,7 @@ g_kdbus_decode_dbus_msg (GKdbus *kdbus) case KDBUS_ITEM_AUXGROUPS: case KDBUS_ITEM_OWNED_NAME: case KDBUS_ITEM_NAME: + case KDBUS_ITEM_PIDS: break; default: diff --git a/gio/kdbus.h b/gio/kdbus.h index 03954cd..7137fc9 100644 --- a/gio/kdbus.h +++ b/gio/kdbus.h @@ -58,22 +58,43 @@ struct kdbus_notify_name_change { /** * struct kdbus_creds - process credentials * @uid: User ID + * @euid: Effective UID + * @suid: Saved UID + * @fsuid: Filesystem UID * @gid: Group ID + * @egid: Effective GID + * @sgid: Saved GID + * @fsgid: Filesystem GID + * + * Attached to: + * KDBUS_ITEM_CREDS + */ +struct kdbus_creds { + __u32 uid; + __u32 euid; + __u32 suid; + __u32 fsuid; + __u32 gid; + __u32 egid; + __u32 sgid; + __u32 fsgid; +}; + +/** + * struct kdbus_pids - process identifiers * @pid: Process ID * @tid: Thread ID * @starttime: Starttime of the process * - * The starttime of the process PID. This is useful to detect PID overruns - * from the client side. i.e. if you use the PID to look something up in - * /proc/$PID/ you can afterwards check the starttime field of it, to ensure - * you didn't run into a PID overrun. + * The PID, TID and starttime of a process. The start tmie is useful to detect + * PID overruns from the client side. i.e. if you use the PID to look something + * up in /proc/$PID/ you can afterwards check the starttime field of it, to + * ensure you didn't run into a PID overrun. * * Attached to: - * KDBUS_ITEM_CREDS + * KDBUS_ITEM_PIDS */ -struct kdbus_creds { - __u64 uid; - __u64 gid; +struct kdbus_pids { __u64 pid; __u64 tid; __u64 starttime; @@ -103,8 +124,8 @@ struct kdbus_caps { * KDBUS_ITEM_AUDIT */ struct kdbus_audit { - __u64 sessionid; - __u64 loginuid; + __u32 sessionid; + __u32 loginuid; }; /** @@ -229,14 +250,19 @@ struct kdbus_policy_access { * @KDBUS_ITEM_NAME: Well-know name with flags * @_KDBUS_ITEM_ATTACH_BASE: Start of metadata attach items * @KDBUS_ITEM_TIMESTAMP: Timestamp - * @KDBUS_ITEM_CREDS: Process credential + * @KDBUS_ITEM_CREDS: Process credentials + * @KDBUS_ITEM_PIDS: Process identifiers * @KDBUS_ITEM_AUXGROUPS: Auxiliary process groups * @KDBUS_ITEM_OWNED_NAME: A name owned by the associated * connection * @KDBUS_ITEM_TID_COMM: Thread ID "comm" identifier + * (Don't trust this, see below.) * @KDBUS_ITEM_PID_COMM: Process ID "comm" identifier + * (Don't trust this, see below.) * @KDBUS_ITEM_EXE: The path of the executable + * (Don't trust this, see below.) * @KDBUS_ITEM_CMDLINE: The process command line + * (Don't trust this, see below.) * @KDBUS_ITEM_CGROUP: The croup membership * @KDBUS_ITEM_CAPS: The process capabilities * @KDBUS_ITEM_SECLABEL: The security label @@ -253,6 +279,12 @@ struct kdbus_policy_access { * @KDBUS_ITEM_ID_REMOVE: Notification in kdbus_notify_id_change * @KDBUS_ITEM_REPLY_TIMEOUT: Timeout has been reached * @KDBUS_ITEM_REPLY_DEAD: Destination died + * + * N.B: The process and thread COMM fields, as well as the CMDLINE and + * EXE fields may be altered by unprivileged processes und should + * hence *not* used for security decisions. Peers should make use of + * these items only for informational purposes, such as generating log + * records. */ enum kdbus_item_type { _KDBUS_ITEM_NULL, @@ -275,6 +307,7 @@ enum kdbus_item_type { _KDBUS_ITEM_ATTACH_BASE = 0x1000, KDBUS_ITEM_TIMESTAMP = _KDBUS_ITEM_ATTACH_BASE, KDBUS_ITEM_CREDS, + KDBUS_ITEM_PIDS, KDBUS_ITEM_AUXGROUPS, KDBUS_ITEM_OWNED_NAME, KDBUS_ITEM_TID_COMM, @@ -336,6 +369,7 @@ struct kdbus_item { __u64 id; struct kdbus_vec vec; struct kdbus_creds creds; + struct kdbus_pids pids; struct kdbus_audit audit; struct kdbus_caps caps; struct kdbus_timestamp timestamp; @@ -459,6 +493,12 @@ enum kdbus_recv_flags { * -EOVERFLOW, this field will contain the number of * broadcast messages that have been lost since the * last call. + * @msg_size: Filled by the kernel with the actual message size. This + * is the full size of the slice placed at @offset. It + * includes the memory used for the kdbus_msg object, but + * also for all appended VECs. By using @msg_size and + * @offset, you can map a single message, instead of + * mapping the whole pool. * * This struct is used with the KDBUS_CMD_MSG_RECV ioctl. */ @@ -470,6 +510,7 @@ struct kdbus_cmd_recv { __u64 offset; __u64 dropped_msgs; }; + __u64 msg_size; } __attribute__((aligned(8))); /** @@ -554,6 +595,7 @@ enum kdbus_hello_flags { * enum kdbus_attach_flags - flags for metadata attachments * @KDBUS_ATTACH_TIMESTAMP: Timestamp * @KDBUS_ATTACH_CREDS: Credentials + * @KDBUS_ATTACH_PIDS: PIDs * @KDBUS_ATTACH_AUXGROUPS: Auxiliary groups * @KDBUS_ATTACH_NAMES: Well-known names * @KDBUS_ATTACH_TID_COMM: The "comm" process identifier of the TID @@ -572,18 +614,19 @@ enum kdbus_hello_flags { enum kdbus_attach_flags { KDBUS_ATTACH_TIMESTAMP = 1ULL << 0, KDBUS_ATTACH_CREDS = 1ULL << 1, - KDBUS_ATTACH_AUXGROUPS = 1ULL << 2, - KDBUS_ATTACH_NAMES = 1ULL << 3, - KDBUS_ATTACH_TID_COMM = 1ULL << 4, - KDBUS_ATTACH_PID_COMM = 1ULL << 5, - KDBUS_ATTACH_EXE = 1ULL << 6, - KDBUS_ATTACH_CMDLINE = 1ULL << 7, - KDBUS_ATTACH_CGROUP = 1ULL << 8, - KDBUS_ATTACH_CAPS = 1ULL << 9, - KDBUS_ATTACH_SECLABEL = 1ULL << 10, - KDBUS_ATTACH_AUDIT = 1ULL << 11, - KDBUS_ATTACH_CONN_DESCRIPTION = 1ULL << 12, - _KDBUS_ATTACH_ALL = (1ULL << 13) - 1, + KDBUS_ATTACH_PIDS = 1ULL << 2, + KDBUS_ATTACH_AUXGROUPS = 1ULL << 3, + KDBUS_ATTACH_NAMES = 1ULL << 4, + KDBUS_ATTACH_TID_COMM = 1ULL << 5, + KDBUS_ATTACH_PID_COMM = 1ULL << 6, + KDBUS_ATTACH_EXE = 1ULL << 7, + KDBUS_ATTACH_CMDLINE = 1ULL << 8, + KDBUS_ATTACH_CGROUP = 1ULL << 9, + KDBUS_ATTACH_CAPS = 1ULL << 10, + KDBUS_ATTACH_SECLABEL = 1ULL << 11, + KDBUS_ATTACH_AUDIT = 1ULL << 12, + KDBUS_ATTACH_CONN_DESCRIPTION = 1ULL << 13, + _KDBUS_ATTACH_ALL = (1ULL << 14) - 1, _KDBUS_ATTACH_ANY = ~0ULL };