fix uninitialized variable causing segfaults.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 30 Dec 2009 15:03:13 +0000 (15:03 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 30 Dec 2009 15:03:13 +0000 (15:03 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@44789 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/connman/e_connman_element.c
src/lib/dbus/e_dbus_signal.c

index e1e780e..1a40204 100644 (file)
@@ -580,6 +580,10 @@ _e_connman_element_array_print(FILE *fp, E_Connman_Array *array)
         EINA_ARRAY_ITER_NEXT(array->array, i, item, iterator)
           fprintf(fp, "\"%s\", ", (const char *)item);
         break;
+      case DBUS_TYPE_STRING:
+        EINA_ARRAY_ITER_NEXT(array->array, i, item, iterator)
+          fprintf(fp, "\"%s\", ", (const char *)item);
+        break;
       case DBUS_TYPE_BYTE:
         EINA_ARRAY_ITER_NEXT(array->array, i, item, iterator)
           fprintf(fp, "%#02hhx (\"%c\"), ", (unsigned char)(long)item,
@@ -890,6 +894,15 @@ _e_connman_element_iter_get_array(DBusMessageIter *itr, const char *key)
                _e_connman_element_item_register(key, path);
             }
             break;
+          case DBUS_TYPE_STRING:
+            {
+               const char *str;
+
+               dbus_message_iter_get_basic(&e_itr, &str);
+               str = eina_stringshare_add(str);
+               eina_array_push(array->array, str);
+            }
+            break;
           case DBUS_TYPE_BYTE:
             {
                unsigned char byte;
@@ -928,7 +941,7 @@ _e_connman_element_get_properties_callback(void *user_data, DBusMessage *msg, DB
      {
        DBusMessageIter e_itr, v_itr;
        const char *key;
-       void *value;
+       void *value = NULL;
        int r;
 
        t = dbus_message_iter_get_arg_type(&s_itr);
@@ -951,8 +964,13 @@ _e_connman_element_get_properties_callback(void *user_data, DBusMessage *msg, DB
        t = dbus_message_iter_get_arg_type(&v_itr);
        if (t == DBUS_TYPE_ARRAY)
          value = _e_connman_element_iter_get_array(&v_itr, key);
-       else if (t != DBUS_TYPE_INVALID)
+       else if (t != DBUS_TYPE_INVALID) {
          dbus_message_iter_get_basic(&v_itr, &value);
+       } else {
+          ERR("E-Dbus connman: property has invalid type %s", key);
+          continue;
+       }
+
        r = _e_connman_element_property_value_add(element, key, t, value);
        if (r < 0)
          ERR("E-Dbus connman: failed to add property value %s (%c)", key, t);
index 567e5f5..37d2f9b 100644 (file)
@@ -182,6 +182,7 @@ e_dbus_signal_handler_add(E_DBus_Connection *conn, const char *sender, const cha
      sh->sender = NULL;        
 
   sh->cb_signal = cb_signal;
+  sh->get_name_owner_pending = NULL;
   sh->data = data;
   sh->delete_me = 0;