dbus_message_iter_append_basic: check string-like arguments for validity
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 16 Feb 2011 17:44:48 +0000 (17:44 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 4 Mar 2011 12:39:59 +0000 (12:39 +0000)
commitb1d29497d6076c40fed8e151c0b2226e4f86ef62
tree04cbb0930652e5d4ab249447fc032255228d192c
parentf1ba52066cadb90edb192ea93d55ba775bdb73d7
dbus_message_iter_append_basic: check string-like arguments for validity

Strings: UTF-8 with no embedded NULs, by adding a new internal function,
_dbus_check_is_valid_utf8

Object paths, signatures: the obvious syntactic checks

This moves some of the burden of validation to the sender.

When sending <http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt>
10240 times with up to 1024 parallel calls pending, on a single-core ARM
Linux device, I found that user CPU time in dbus-spam increased by up to 80%
as a result of the validation. However, when sending messages to dbus-daemon,
overall throughput only reduced by 15%, and when sending messages to an echo
service, overall throughput actually improved by around 14% (presumably
because making the sender CPU-bound influenced kernel scheduling).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=16338
Bug-NB: NB#223152
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
dbus/dbus-marshal-validate.c
dbus/dbus-marshal-validate.h
dbus/dbus-message.c