bus: dont broadcast process-metadata on faked credentials
authorDavid Herrmann <dh.herrmann@gmail.com>
Sun, 11 Jan 2015 11:39:05 +0000 (12:39 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Sun, 11 Jan 2015 11:39:05 +0000 (12:39 +0100)
For unicasts, we correctly suppress process metadata if they are faked.
They ought to be read via GET_CONN_INFO. However, for broadcasts and
eavesdropping we didn't do this, yet. Fix that!

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
bus.c

diff --git a/bus.c b/bus.c
index f7c0ce48d104520a13d631d196bf491afca2f56a..ffcde832116c0c8f6359f36caed20c575670728e 100644 (file)
--- a/bus.c
+++ b/bus.c
@@ -415,7 +415,9 @@ void kdbus_bus_broadcast(struct kdbus_bus *bus,
                         * requested metadata. It's up to the receiver to drop
                         * messages that lack expected metadata.
                         */
-                       kdbus_meta_proc_collect(kmsg->proc_meta, attach_flags);
+                       if (!conn_src->faked_meta)
+                               kdbus_meta_proc_collect(kmsg->proc_meta,
+                                                       attach_flags);
                        kdbus_meta_conn_collect(kmsg->conn_meta, kmsg, conn_src,
                                                attach_flags);
                } else {
@@ -471,7 +473,9 @@ void kdbus_bus_eavesdrop(struct kdbus_bus *bus,
 
                        attach_flags = kdbus_meta_calc_attach_flags(conn_src,
                                                                    conn_dst);
-                       kdbus_meta_proc_collect(kmsg->proc_meta, attach_flags);
+                       if (!conn_src->faked_meta)
+                               kdbus_meta_proc_collect(kmsg->proc_meta,
+                                                       attach_flags);
                        kdbus_meta_conn_collect(kmsg->conn_meta, kmsg, conn_src,
                                                attach_flags);
                }