DBusMessage: Stop using _dbus_check_is_valid_signature()
authorSimon McVittie <smcv@collabora.com>
Mon, 3 Jul 2017 18:27:14 +0000 (19:27 +0100)
committerSimon McVittie <smcv@collabora.com>
Tue, 4 Jul 2017 16:06:59 +0000 (17:06 +0100)
commit2f7afd16cf6a5961908363290cd70a190dd934fc
tree78232b2aa4c5499a13a53d26992508b0af0f95d8
parentc507fb01c0e7f58bc016c182279cafddaad50e21
DBusMessage: Stop using _dbus_check_is_valid_signature()

This function looks appealing, but it is a trap, particularly in
_dbus_return_val_if_fail() checks. It returns a boolean result, which
cannot distinguish between "failed because we ran out of memory" and
"failed because the string is actually invalid"; but
_dbus_validate_signature_with_reason() allocates memory. Use the
over-complicated version directly, so libdbus can continue to
bend over backwards to support the (possibly mythical) operating systems
that limit memory consumption and do not overcommit, such that malloc()
can genuinely return NULL.

Bug detected by running the DBusVariant unit test (fd.o #101568) under
dbus' failing-malloc() instrumentation.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Reviewed-by: Philip Withnall <withnall@endlessm.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101568
dbus/dbus-message.c