sd-bus: fix encoding/decoding gvariant root container
authorDavid Herrmann <dh.herrmann@gmail.com>
Wed, 29 Jul 2015 13:58:25 +0000 (15:58 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Wed, 29 Jul 2015 14:46:24 +0000 (16:46 +0200)
commit03ebf5e89bf63a32a2ffe253bec9e506f6917c80
tree87a4a1bacbf8f737981a8cb2f114469a47676bbb
parente53d21d00740a1dfc2090cb5f1ac29b11b2baa27
sd-bus: fix encoding/decoding gvariant root container

The gvariant root container contains a 'variant' at the end, which embeds
the whole message body. This variant *must* contain a structure so we are
compatible to dbus1. Otherwise, it could encode at most 1 type, instead
of a full signature.

Our gvariant message parser already parses the variant-content as a
structure, so we're mostly good. However, it does *not* include the
opening and closing parantheses, nor does it parse them.

This patch fixes the decoder to verify a message contains the
parantheses, and also make the encoder add those parantheses into the
marshaled message.
src/libsystemd/sd-bus/bus-message.c