dbus/dbus dbus-connection.c, 1.82, 1.83 dbus-connection.h, 1.30,
1.31 dbus-transport-protected.h, 1.11,
1.12 dbus-transport-unix.c, 1.38, 1.39 dbus-transport.c, 1.39,
1.40 dbus-transport.h, 1.15, 1.16
Havoc Pennington
hp at freedesktop.org
Thu Jul 29 22:59:37 PDT 2004
- Previous message: dbus/bus Makefile.am, 1.29, 1.30 bus.c, 1.52, 1.53 bus.h, 1.23,
1.24 config-parser.c, 1.30, 1.31 config-parser.h, 1.14,
1.15 connection.c, 1.54, 1.55 connection.h, 1.19,
1.20 dbus-daemon-1.1.in, 1.7, 1.8 main.c, 1.23, 1.24 policy.c,
1.19, 1.20 selinux.c, NONE, 1.1 selinux.h, NONE,
1.1 services.c, 1.21, 1.22 services.h, 1.10, 1.11 test-main.c,
1.16, 1.17
- Next message: dbus/dbus
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvs/dbus/dbus/dbus
In directory pdx:/tmp/cvs-serv30925/dbus
Modified Files:
dbus-connection.c dbus-connection.h dbus-transport-protected.h
dbus-transport-unix.c dbus-transport.c dbus-transport.h
Log Message:
2004-07-24 Havoc Pennington <hp at redhat.com>
SELinux support from Matthew Rickard <mjricka at epoch.ncsc.mil>
* bus/selinux.c, bus/selinux.h: new file encapsulating selinux
functionality
* configure.in: add --enable-selinux
* bus/policy.c (bus_policy_merge): add FIXME to a comment
* bus/main.c (main): initialize and shut down selinux
* bus/connection.c: store SELinux ID on each connection, to avoid
repeated getting of the string context and converting it into
an ID
* bus/bus.c (bus_context_get_policy): new accessor, though it
isn't used
(bus_context_check_security_policy): check whether the security
context of sender connection can send to the security context of
recipient connection
* bus/config-parser.c: add parsing for <selinux> and <associate>
* dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
implement dbus_connection_get_unix_fd()
* dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
function, used by the selinux stuff
Index: dbus-connection.c
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-connection.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -d -r1.82 -r1.83
--- dbus-connection.c 19 Jul 2004 20:55:58 -0000 1.82
+++ dbus-connection.c 30 Jul 2004 05:59:34 -0000 1.83
@@ -2953,6 +2953,37 @@
}
/**
+ * Get the UNIX file descriptor of the connection, if any. This can
+ * be used for SELinux access control checks with getpeercon() for
+ * example. DO NOT read or write to the file descriptor, or try to
+ * select() on it; use DBusWatch for main loop integration. Not all
+ * connections will have a file descriptor. So for adding descriptors
+ * to the main loop, use dbus_watch_get_fd() and so forth.
+ *
+ * @param connection the connection
+ * @param fd return location for the file descriptor.
+ * @returns #TRUE if fd is successfully obtained.
+ */
+dbus_bool_t
+dbus_connection_get_unix_fd (DBusConnection *connection,
+ int *fd)
+{
+ dbus_bool_t retval;
+
+ _dbus_return_val_if_fail (connection != NULL, FALSE);
+ _dbus_return_val_if_fail (connection->transport != NULL, FALSE);
+
+ CONNECTION_LOCK (connection);
+
+ retval = _dbus_transport_get_unix_fd (connection->transport,
+ fd);
+
+ CONNECTION_UNLOCK (connection);
+
+ return retval;
+}
+
+/**
* Gets the UNIX user ID of the connection if any.
* Returns #TRUE if the uid is filled in.
* Always returns #FALSE on non-UNIX platforms.
Index: dbus-connection.h
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-connection.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- dbus-connection.h 19 Jul 2004 20:55:58 -0000 1.30
+++ dbus-connection.h 30 Jul 2004 05:59:34 -0000 1.31
@@ -242,6 +242,9 @@
const char *parent_path,
char ***child_entries);
+dbus_bool_t dbus_connection_get_unix_fd (DBusConnection *connection,
+ int *fd);
+
DBUS_END_DECLS;
#endif /* DBUS_CONNECTION_H */
Index: dbus-transport-protected.h
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-transport-protected.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- dbus-transport-protected.h 2 Dec 2003 10:44:21 -0000 1.11
+++ dbus-transport-protected.h 30 Jul 2004 05:59:34 -0000 1.12
@@ -71,6 +71,10 @@
void (* live_messages_changed) (DBusTransport *transport);
/**< Outstanding messages counter changed */
+
+ dbus_bool_t (* get_unix_fd) (DBusTransport *transport,
+ int *fd_p);
+ /**< Get UNIX file descriptor */
};
/**
@@ -102,6 +106,7 @@
DBusAllowUnixUserFunction unix_user_function; /**< Function for checking whether a user is authorized. */
void *unix_user_data; /**< Data for unix_user_function */
+
DBusFreeFunction free_unix_user_data; /**< Function to free unix_user_data */
unsigned int disconnected : 1; /**< #TRUE if we are disconnected. */
Index: dbus-transport-unix.c
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-transport-unix.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- dbus-transport-unix.c 29 Jul 2004 08:00:45 -0000 1.38
+++ dbus-transport-unix.c 30 Jul 2004 05:59:34 -0000 1.39
@@ -948,6 +948,18 @@
check_read_watch (transport);
}
+
+static dbus_bool_t
+unix_get_unix_fd (DBusTransport *transport,
+ int *fd_p)
+{
+ DBusTransportUnix *unix_transport = (DBusTransportUnix*) transport;
+
+ *fd_p = unix_transport->fd;
+
+ return TRUE;
+}
+
static DBusTransportVTable unix_vtable = {
unix_finalize,
unix_handle_watch,
@@ -955,7 +967,8 @@
unix_connection_set,
unix_messages_pending,
unix_do_iteration,
- unix_live_messages_changed
+ unix_live_messages_changed,
+ unix_get_unix_fd
};
/**
Index: dbus-transport.c
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-transport.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- dbus-transport.c 19 Jul 2004 20:55:58 -0000 1.39
+++ dbus-transport.c 30 Jul 2004 05:59:34 -0000 1.40
@@ -637,6 +637,35 @@
}
/**
+ * Get the UNIX file descriptor, if any.
+ *
+ * @param transport the transport
+ * @param fd_p pointer to fill in with the descriptor
+ * @returns #TRUE if a descriptor was available
+ */
+dbus_bool_t
+_dbus_transport_get_unix_fd (DBusTransport *transport,
+ int *fd_p)
+{
+ dbus_bool_t retval;
+
+ if (transport->vtable->get_unix_fd == NULL)
+ return FALSE;
+
+ if (transport->disconnected)
+ return FALSE;
+
+ _dbus_transport_ref (transport);
+
+ retval = (* transport->vtable->get_unix_fd) (transport,
+ fd_p);
+
+ _dbus_transport_unref (transport);
+
+ return retval;
+}
+
+/**
* Performs a single poll()/select() on the transport's file
* descriptors and then reads/writes data as appropriate,
* queueing incoming messages and sending outgoing messages.
Index: dbus-transport.h
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-transport.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- dbus-transport.h 19 Jul 2004 20:55:58 -0000 1.15
+++ dbus-transport.h 30 Jul 2004 05:59:34 -0000 1.16
@@ -59,6 +59,9 @@
long _dbus_transport_get_max_received_size (DBusTransport *transport);
dbus_bool_t _dbus_transport_get_unix_user (DBusTransport *transport,
unsigned long *uid);
+dbus_bool_t _dbus_transport_get_unix_fd (DBusTransport *transport,
+ int *fd_p);
+
dbus_bool_t _dbus_transport_get_unix_process_id (DBusTransport *transport,
unsigned long *pid);
void _dbus_transport_set_unix_user_function (DBusTransport *transport,
- Previous message: dbus/bus Makefile.am, 1.29, 1.30 bus.c, 1.52, 1.53 bus.h, 1.23,
1.24 config-parser.c, 1.30, 1.31 config-parser.h, 1.14,
1.15 connection.c, 1.54, 1.55 connection.h, 1.19,
1.20 dbus-daemon-1.1.in, 1.7, 1.8 main.c, 1.23, 1.24 policy.c,
1.19, 1.20 selinux.c, NONE, 1.1 selinux.h, NONE,
1.1 services.c, 1.21, 1.22 services.h, 1.10, 1.11 test-main.c,
1.16, 1.17
- Next message: dbus/dbus
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dbus-commit
mailing list