[kdbus] sync with kdbus (kdbus.h - commit: b024fb43c66b)
authorLukasz Skalski <l.skalski@samsung.com>
Wed, 26 Nov 2014 15:06:15 +0000 (15:06 +0000)
committerMaciej Wereski <m.wereski@partner.samsung.com>
Fri, 10 Jul 2015 09:47:44 +0000 (11:47 +0200)
gio/gkdbus.c
gio/kdbus.h

index fabeba0..622011f 100644 (file)
@@ -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:
index 03954cd..7137fc9 100644 (file)
@@ -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
 };