diff --git a/ChangeLog b/ChangeLog index 84e65b6bd2..7701abe272 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-06-17 Dan Williams + + * libnm-util/dbus-dict-helpers.[ch] + test/libnm-util/test-dbus-dict-helpers.c + - Fixes for zero-length byte arrays + - Replace return values of 0 with FALSE for clarity + - Test zero-length byte arrays + 2006-06-17 Dan Williams * libnm-util/dbus-dict-helpers.[ch] diff --git a/libnm-util/dbus-dict-helpers.c b/libnm-util/dbus-dict-helpers.c index 61253b341a..074a78aeaf 100644 --- a/libnm-util/dbus-dict-helpers.c +++ b/libnm-util/dbus-dict-helpers.c @@ -40,7 +40,7 @@ dbus_bool_t nmu_dbus_dict_open_write (DBusMessageIter *iter, DBusMessageIter *iter_dict) { if (!iter || !iter_dict) - return 0; + return FALSE; return dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, @@ -66,7 +66,7 @@ dbus_bool_t nmu_dbus_dict_close_write (DBusMessageIter *iter, DBusMessageIter *iter_dict) { if (!iter || !iter_dict) - return 0; + return FALSE; return dbus_message_iter_close_container (iter, iter_dict); } @@ -230,7 +230,7 @@ nmu_dbus_dict_append_string (DBusMessageIter *iter_dict, const char * key, const char * value) { - if (!key || !value) return 0; + if (!key || !value) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_STRING, &value); } @@ -248,7 +248,7 @@ nmu_dbus_dict_append_byte (DBusMessageIter *iter_dict, const char * key, const char value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_BYTE, &value); } @@ -266,7 +266,7 @@ nmu_dbus_dict_append_bool (DBusMessageIter *iter_dict, const char * key, const dbus_bool_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_BOOLEAN, &value); } @@ -284,7 +284,7 @@ nmu_dbus_dict_append_int16 (DBusMessageIter *iter_dict, const char * key, const dbus_int16_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT16, &value); } @@ -302,7 +302,7 @@ nmu_dbus_dict_append_uint16 (DBusMessageIter *iter_dict, const char * key, const dbus_uint16_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT16, &value); } @@ -320,7 +320,7 @@ nmu_dbus_dict_append_int32 (DBusMessageIter *iter_dict, const char * key, const dbus_int32_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT32, &value); } @@ -338,7 +338,7 @@ nmu_dbus_dict_append_uint32 (DBusMessageIter *iter_dict, const char * key, const dbus_uint32_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT32, &value); } @@ -356,7 +356,7 @@ nmu_dbus_dict_append_int64 (DBusMessageIter *iter_dict, const char * key, const dbus_int64_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT64, &value); } @@ -374,7 +374,7 @@ nmu_dbus_dict_append_uint64 (DBusMessageIter *iter_dict, const char * key, const dbus_uint64_t value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT64, &value); } @@ -392,7 +392,7 @@ nmu_dbus_dict_append_double (DBusMessageIter *iter_dict, const char * key, const double value) { - if (!key) return 0; + if (!key) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_DOUBLE, &value); } @@ -410,7 +410,7 @@ nmu_dbus_dict_append_object_path (DBusMessageIter *iter_dict, const char * key, const char * value) { - if (!key || !value) return 0; + if (!key || !value) return FALSE; return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_OBJECT_PATH, &value); } @@ -430,7 +430,8 @@ nmu_dbus_dict_append_byte_array (DBusMessageIter *iter_dict, const char * value, const dbus_uint32_t value_len) { - if (!key || !value) return 0; + if (!key) return FALSE; + if (!value && (value_len != 0)) return FALSE; return _nmu_dbus_add_dict_entry_byte_array (iter_dict, key, value, value_len); } @@ -476,6 +477,7 @@ _nmu_dbus_dict_entry_get_byte_array (DBusMessageIter *iter, if (array_len == 0) { entry->bytearray_value = NULL; + entry->array_type = DBUS_TYPE_BYTE; success = TRUE; goto done; } diff --git a/test/libnm-util/test-dbus-dict-helpers.c b/test/libnm-util/test-dbus-dict-helpers.c index 4358cd870b..6c216f22ca 100644 --- a/test/libnm-util/test-dbus-dict-helpers.c +++ b/test/libnm-util/test-dbus-dict-helpers.c @@ -64,34 +64,37 @@ struct DictEntries { struct DoubleEntry dbl; struct OPEntry op; struct ByteArrayEntry bytearr; + struct ByteArrayEntry zlbytearr; }; -#define TEST_KEY_STRING "String" -#define TEST_KEY_BYTE "Byte" -#define TEST_KEY_BOOL "Bool" -#define TEST_KEY_INT16 "Int16" -#define TEST_KEY_UINT16 "UInt16" -#define TEST_KEY_INT32 "Int32" -#define TEST_KEY_UINT32 "UInt32" -#define TEST_KEY_INT64 "Int64" -#define TEST_KEY_UINT64 "UInt64" -#define TEST_KEY_DOUBLE "Double" -#define TEST_KEY_OP "ObjectPath" -#define TEST_KEY_BYTEARR "ByteArray" +#define TEST_KEY_STRING "String" +#define TEST_KEY_BYTE "Byte" +#define TEST_KEY_BOOL "Bool" +#define TEST_KEY_INT16 "Int16" +#define TEST_KEY_UINT16 "UInt16" +#define TEST_KEY_INT32 "Int32" +#define TEST_KEY_UINT32 "UInt32" +#define TEST_KEY_INT64 "Int64" +#define TEST_KEY_UINT64 "UInt64" +#define TEST_KEY_DOUBLE "Double" +#define TEST_KEY_OP "ObjectPath" +#define TEST_KEY_BYTEARR "ByteArray" +#define TEST_KEY_ZLBYTEARR "ZLByteArray" struct DictEntries entries = { - { TEST_KEY_STRING, "foobar22", FALSE, DBUS_TYPE_STRING }, - { TEST_KEY_BYTE, 0x78, FALSE, DBUS_TYPE_BYTE }, - { TEST_KEY_BOOL, TRUE, FALSE, DBUS_TYPE_BOOLEAN }, - { TEST_KEY_INT16, -28567, FALSE, DBUS_TYPE_INT16 }, - { TEST_KEY_UINT16, 12345, FALSE, DBUS_TYPE_UINT16 }, - { TEST_KEY_INT32, -5987654, FALSE, DBUS_TYPE_INT32 }, - { TEST_KEY_UINT32, 45678912, FALSE, DBUS_TYPE_UINT32 }, - { TEST_KEY_INT64, -12491340761ll, FALSE, DBUS_TYPE_INT64 }, - { TEST_KEY_UINT64, 8899223582883ll, FALSE, DBUS_TYPE_UINT64 }, - { TEST_KEY_DOUBLE, 54.3355632f, FALSE, DBUS_TYPE_DOUBLE }, - { TEST_KEY_OP, "/com/it/foobar", FALSE, DBUS_TYPE_OBJECT_PATH }, - { TEST_KEY_BYTEARR, "qazwsxedcrfvtgb",FALSE, DBUS_TYPE_BYTE } + { TEST_KEY_STRING, "foobar22", FALSE, DBUS_TYPE_STRING }, + { TEST_KEY_BYTE, 0x78, FALSE, DBUS_TYPE_BYTE }, + { TEST_KEY_BOOL, TRUE, FALSE, DBUS_TYPE_BOOLEAN }, + { TEST_KEY_INT16, -28567, FALSE, DBUS_TYPE_INT16 }, + { TEST_KEY_UINT16, 12345, FALSE, DBUS_TYPE_UINT16 }, + { TEST_KEY_INT32, -5987654, FALSE, DBUS_TYPE_INT32 }, + { TEST_KEY_UINT32, 45678912, FALSE, DBUS_TYPE_UINT32 }, + { TEST_KEY_INT64, -12491340761ll, FALSE, DBUS_TYPE_INT64 }, + { TEST_KEY_UINT64, 8899223582883ll, FALSE, DBUS_TYPE_UINT64 }, + { TEST_KEY_DOUBLE, 54.3355632f, FALSE, DBUS_TYPE_DOUBLE }, + { TEST_KEY_OP, "/com/it/foobar", FALSE, DBUS_TYPE_OBJECT_PATH }, + { TEST_KEY_BYTEARR, "qazwsxedcrfvtgb",FALSE, DBUS_TYPE_BYTE }, + { TEST_KEY_ZLBYTEARR,NULL, FALSE, DBUS_TYPE_BYTE } }; @@ -158,6 +161,10 @@ test_write_dict (DBusMessage *message) err_string = "failed to append byte array entry"; goto done; } + if (!nmu_dbus_dict_append_byte_array (&iter_dict, entries.zlbytearr.key, entries.zlbytearr.val, 0)) { + err_string = "failed to append zero-length byte array entry"; + goto done; + } if (!nmu_dbus_dict_close_write (&iter, &iter_dict)) { err_string = "failed to close dictionary"; goto done; @@ -245,6 +252,8 @@ test_read_dict (DBusMessage *message) TEST_CASE (TEST_KEY_OP, entries.op, !strcmp (entry.str_value, entries.op.val)) TEST_CASE_ARRAY (TEST_KEY_BYTEARR, entries.bytearr, bytearr_len, !memcmp (entry.bytearray_value, entries.bytearr.val, bytearr_len)) + TEST_CASE_ARRAY (TEST_KEY_ZLBYTEARR, entries.zlbytearr, 0, + entry.bytearray_value == entries.zlbytearr.val) err_string = "Unknown dict entry encountered."; goto done; @@ -256,7 +265,7 @@ test_read_dict (DBusMessage *message) if (!entries.string.found || !entries.byte.found || !entries.bool.found || !entries.int16.found || !entries.uint16.found || !entries.int32.found || !entries.uint32.found || !entries.int64.found || !entries.uint64.found || !entries.dbl.found - || !entries.op.found || !entries.bytearr.found) { + || !entries.op.found || !entries.bytearr.found || !entries.zlbytearr.found) { err_string = "A required entry was not found in the dict."; goto done; }