diff options
author | Colin Walters <walters@verbum.org> | 2004-11-09 06:11:33 +0000 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2004-11-09 06:11:33 +0000 |
commit | 935a41a04c3f638134fa905503fc41ddbd18902f (patch) | |
tree | 0f6dee53c28bba5a8ce6658b634c66ba1cc5abda /dbus | |
parent | 2f5e949851f7704b296f55ce1d1fcc4480176107 (diff) |
2004-11-09 Colin Walters <walters@verbum.org>
* dbus/dbus-string.c (_dbus_string_get_length): New
function, writes DBusString to C buffer.
* dbus/dbus-string.h: Prototype it.
* dbus/dbus-message.c (dbus_message_type_to_string): New
function, converts message type into C string.
* dbus/dbus-message.h: Prototype it.
* bus/selinux.c (bus_selinux_check): Take source pid,
target pid, and audit data. Pass audit data to
avc_has_perm.
(log_audit_callback): New function, appends extra
audit information.
(bus_selinux_allows_acquire_service): Also take
service name, add it to audit data.
(bus_selinux_allows_send): Also take message
type, interface, method member, error name,
and destination, and add them to audit data.
(log_cb): Initialize func_audit.
* bus/selinux.h (bus_selinux_allows_acquire_service)
(bus_selinux_allows_send): Update prototypes
* bus/services.c (bus_registry_acquire_service): Pass
service name to bus_selinux_allows_acquire_service.
* bus/bus.c (bus_context_check_security_policy): Pass
additional audit data. Move assignment of dest
to its own line.
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-message.c | 31 | ||||
-rw-r--r-- | dbus/dbus-message.h | 1 | ||||
-rw-r--r-- | dbus/dbus-string.c | 24 | ||||
-rw-r--r-- | dbus/dbus-string.h | 3 |
4 files changed, 59 insertions, 0 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index b191337e..df0ade26 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -5778,6 +5778,37 @@ dbus_message_type_from_string (const char *type_str) return DBUS_MESSAGE_TYPE_INVALID; } +/** + * Utility function to convert a D-BUS message type into a + * machine-readable string (not translated). + * + * @code + * DBUS_MESSAGE_TYPE_METHOD_CALL -> "method_call" + * DBUS_MESSAGE_TYPE_METHOD_RETURN -> "method_return" + * DBUS_MESSAGE_TYPE_SIGNAL -> "signal" + * DBUS_MESSAGE_TYPE_ERROR -> "error" + * DBUS_MESSAGE_TYPE_INVALID -> "invalid" + * @endcode + * + */ +const char * +dbus_message_type_to_string (int type) +{ + switch (type) + { + case DBUS_MESSAGE_TYPE_METHOD_CALL: + return "method_call"; + case DBUS_MESSAGE_TYPE_METHOD_RETURN: + return "method_return"; + case DBUS_MESSAGE_TYPE_SIGNAL: + return "signal"; + case DBUS_MESSAGE_TYPE_ERROR: + return "error"; + default: + return "invalid"; + } +} + /** @} */ #ifdef DBUS_BUILD_TESTS #include "dbus-test.h" diff --git a/dbus/dbus-message.h b/dbus/dbus-message.h index 50ec22c1..e1894c72 100644 --- a/dbus/dbus-message.h +++ b/dbus/dbus-message.h @@ -295,6 +295,7 @@ void* dbus_message_get_data (DBusMessage *message, dbus_int32_t slot); int dbus_message_type_from_string (const char *type_str); +const char * dbus_message_type_to_string (int type); DBUS_END_DECLS diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 2061e8be..7381dab2 100644 --- a/dbus/dbus-string.c +++ b/dbus/dbus-string.c @@ -757,6 +757,30 @@ _dbus_string_copy_data_len (const DBusString *str, } /** + * Copies the contents of a DBusString into a different + * buffer. The resulting buffer will be nul-terminated. + * + * @param str a string + * @param buffer a C buffer to copy data to + * @param len maximum length of C buffer + */ +void +_dbus_string_copy_to_buffer (const DBusString *str, + char *buffer, + int avail_len) +{ + int copy_len; + DBUS_CONST_STRING_PREAMBLE (str); + + _dbus_assert (avail_len >= 0); + + copy_len = MIN (avail_len, real->len+1); + memcpy (buffer, real->str, copy_len); + if (avail_len > 0 && avail_len == copy_len) + buffer[avail_len-1] = '\0'; +} + +/** * Gets the length of a string (not including nul termination). * * @returns the length. diff --git a/dbus/dbus-string.h b/dbus/dbus-string.h index 2dda2b0f..1a0236d4 100644 --- a/dbus/dbus-string.h +++ b/dbus/dbus-string.h @@ -88,6 +88,9 @@ dbus_bool_t _dbus_string_copy_data_len (const DBusString *str, char **data_return, int start, int len); +void _dbus_string_copy_to_buffer (const DBusString *str, + char *buffer, + int len); int _dbus_string_get_length (const DBusString *str); dbus_bool_t _dbus_string_lengthen (DBusString *str, int additional_length); |