diff options
author | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-04-08 14:24:16 +0200 |
---|---|---|
committer | Mark Ryan <mark.d.ryan@intel.com> | 2013-04-08 15:18:15 +0200 |
commit | efe4c711bc1e470d77f2b5cc4cc6c75f301b1032 (patch) | |
tree | 156512f09654d5edd23825d2ba82e361ca144947 | |
parent | 541f912da75d75b2e41eeb680e53e9b29600474d (diff) | |
download | dleyna-server-efe4c711bc1e470d77f2b5cc4cc6c75f301b1032.tar.gz |
[Property] Fix a potential bug when setting Boolean gvariant
When setting a gboolean as the result of a bitfield operation,
the result could not be used directly in GVariant, using
g_variant_new_boolean or a call like
g_variant_builder_add(vb, "{sv}", key, g_variant_new_boolean(value));
gboolean is defined as gint
g_variant_new_boolean call internal function that only copy the first
byte of the gboolean.
ex:
gboolean x = 0x00000010 will work, and the GVariant = 0x10
gboolean x = 0x01000000 won't work. GVariant = 0;
We should not do: gboolean x = (x & y)
We must do: gboolean x = (x & y) != 0
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
-rw-r--r-- | libdleyna/server/props.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libdleyna/server/props.c b/libdleyna/server/props.c index 92c3dc8..983002e 100644 --- a/libdleyna/server/props.c +++ b/libdleyna/server/props.c @@ -1169,19 +1169,19 @@ static GVariant *prv_props_get_dlna_managed_dict(GUPnPOCMFlags flags) g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sb}")); - managed = (flags & GUPNP_OCM_FLAGS_UPLOAD); + managed = (flags & GUPNP_OCM_FLAGS_UPLOAD) != 0; g_variant_builder_add(&builder, "{sb}", "Upload", managed); - managed = (flags & GUPNP_OCM_FLAGS_CREATE_CONTAINER); + managed = (flags & GUPNP_OCM_FLAGS_CREATE_CONTAINER) != 0; g_variant_builder_add(&builder, "{sb}", "CreateContainer", managed); - managed = (flags & GUPNP_OCM_FLAGS_DESTROYABLE); + managed = (flags & GUPNP_OCM_FLAGS_DESTROYABLE) != 0; g_variant_builder_add(&builder, "{sb}", "Delete", managed); - managed = (flags & GUPNP_OCM_FLAGS_UPLOAD_DESTROYABLE); + managed = (flags & GUPNP_OCM_FLAGS_UPLOAD_DESTROYABLE) != 0; g_variant_builder_add(&builder, "{sb}", "UploadDelete", managed); - managed = (flags & GUPNP_OCM_FLAGS_CHANGE_METADATA); + managed = (flags & GUPNP_OCM_FLAGS_CHANGE_METADATA) != 0; g_variant_builder_add(&builder, "{sb}", "ChangeMeta", managed); return g_variant_builder_end(&builder); |