[libvirt] [PATCH 1/2] virdbus: don't force users to pass int for bool values

Ian Campbell Ian.Campbell at citrix.com
Mon Nov 24 09:43:51 UTC 2014


On Fri, 2014-11-21 at 17:16 -0700, Eric Blake wrote:
> On 11/20/2014 04:17 PM, Eric Blake wrote:
> > On 11/20/2014 08:12 AM, Conrad Meyer wrote:
> >> Hi Eric,
> >>
> >> I think this change breaks build on FreeBSD:
> >>
> >>   CC       util/libvirt_util_la-virdbus.lo
> >> util/virdbus.c:956:13: error: cast from 'bool *' to 'dbus_bool_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
> >>             GET_NEXT_VAL(dbus_bool_t, bool_val, bool, "%d");
> >>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> util/virdbus.c:858:17: note: expanded from macro 'GET_NEXT_VAL'
> >>             x = (dbustype *)(*xptrptr + (*narrayptr - 1));              \
> >>                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated.
> > 
> > Valid complaint, so I'll have to figure something out to avoid it.  :(
> > Thanks for the heads up.
> 
> Thanks again for flagging this!
> 
> We had a pre-existing bug.  Even something like "a&n" was broken on
> encoding, because even though type 'n' (int16_t) promotes to a full
> 'int' when parsed via varargs, passing an array of shorts and then
> dereferencing it via (int*) will read beyond array bounds.  We had a
> hole in our testsuite for never testing arrayref with sub-int types,
> even before my commit added 'bool *' to the list of sub-int types that
> we now need to support.

I'm, guessing that this is the same underlying issue as:
        util/virdbus.c: In function 'virDBusMessageIterDecode':
        util/virdbus.c:956:346: error: cast increases required alignment of target type [-Werror=cast-align]
        
which we are seeing in the Xen automated tests [0, 1] (on armhf only,
probably compiler dependent?).

Ian.

[0] http://www.chiark.greenend.org.uk/~xensrcts/logs/31787/build-armhf-libvirt/5.ts-libvirt-build.log
[1] http://www.chiark.greenend.org.uk/~xensrcts/logs/31787/build-armhf-libvirt/info.html





More information about the libvir-list mailing list