aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadopenembedded-core-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch')
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch
new file mode 100644
index 0000000000..dbd5e4e934
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.2/wpa_supplicant-fix-deprecated-dbus-function.patch
@@ -0,0 +1,187 @@
+--- dbus_dict_helpers.c.array-fix 2006-12-18 12:31:11.000000000 -0500
++++ dbus_dict_helpers.c 2006-12-20 03:17:08.000000000 -0500
+@@ -629,36 +629,55 @@ dbus_bool_t wpa_dbus_dict_open_read(DBus
+ }
+
+
++#define BYTE_ARRAY_CHUNK_SIZE 34
++#define BYTE_ARRAY_ITEM_SIZE (sizeof (char))
++
+ static dbus_bool_t _wpa_dbus_dict_entry_get_byte_array(
+- DBusMessageIter *iter, int array_len, int array_type,
++ DBusMessageIter *iter, int array_type,
+ struct wpa_dbus_dict_entry *entry)
+ {
+- dbus_uint32_t i = 0;
++ dbus_uint32_t count = 0;
+ dbus_bool_t success = FALSE;
+- char byte;
++ char * buffer;
+
+- /* Zero-length arrays are valid. */
+- if (array_len == 0) {
+- entry->bytearray_value = NULL;
+- entry->array_type = DBUS_TYPE_BYTE;
+- success = TRUE;
+- goto done;
+- }
++ entry->bytearray_value = NULL;
++ entry->array_type = DBUS_TYPE_BYTE;
+
+- entry->bytearray_value = wpa_zalloc(array_len * sizeof(char));
+- if (!entry->bytearray_value) {
++ buffer = wpa_zalloc(BYTE_ARRAY_ITEM_SIZE * BYTE_ARRAY_CHUNK_SIZE);
++ if (!buffer) {
+ perror("_wpa_dbus_dict_entry_get_byte_array[dbus]: out of "
+ "memory");
+ goto done;
+ }
+
+- entry->array_type = DBUS_TYPE_BYTE;
+- entry->array_len = array_len;
++ entry->bytearray_value = buffer;
++ entry->array_len = 0;
+ while (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_BYTE) {
++ char byte;
++
++ if ((count % BYTE_ARRAY_CHUNK_SIZE) == 0 && count != 0) {
++ buffer = realloc(buffer, BYTE_ARRAY_ITEM_SIZE * (count + BYTE_ARRAY_CHUNK_SIZE));
++ if (buffer == NULL) {
++ perror("_wpa_dbus_dict_entry_get_byte_array["
++ "dbus] out of memory trying to "
++ "retrieve the string array");
++ goto done;
++ }
++ }
++ entry->bytearray_value = buffer;
++
+ dbus_message_iter_get_basic(iter, &byte);
+- entry->bytearray_value[i++] = byte;
++ entry->bytearray_value[count] = byte;
++ entry->array_len = ++count;
+ dbus_message_iter_next(iter);
+ }
++
++ /* Zero-length arrays are valid. */
++ if (entry->array_len == 0) {
++ free(entry->bytearray_value);
++ entry->strarray_value = NULL;
++ }
++
+ success = TRUE;
+
+ done:
+@@ -666,8 +685,11 @@ done:
+ }
+
+
++#define STR_ARRAY_CHUNK_SIZE 8
++#define STR_ARRAY_ITEM_SIZE (sizeof (char *))
++
+ static dbus_bool_t _wpa_dbus_dict_entry_get_string_array(
+- DBusMessageIter *iter, int array_len, int array_type,
++ DBusMessageIter *iter, int array_type,
+ struct wpa_dbus_dict_entry *entry)
+ {
+ dbus_uint32_t count = 0;
+@@ -677,13 +699,7 @@ static dbus_bool_t _wpa_dbus_dict_entry_
+ entry->strarray_value = NULL;
+ entry->array_type = DBUS_TYPE_STRING;
+
+- /* Zero-length arrays are valid. */
+- if (array_len == 0) {
+- success = TRUE;
+- goto done;
+- }
+-
+- buffer = wpa_zalloc(sizeof (char *) * 8);
++ buffer = wpa_zalloc(STR_ARRAY_ITEM_SIZE * STR_ARRAY_CHUNK_SIZE);
+ if (buffer == NULL) {
+ perror("_wpa_dbus_dict_entry_get_string_array[dbus] out of "
+ "memory trying to retrieve a string array");
+@@ -696,18 +712,14 @@ static dbus_bool_t _wpa_dbus_dict_entry_
+ const char *value;
+ char *str;
+
+- if ((count % 8) == 0 && count != 0) {
+- char **tmp;
+- tmp = realloc(buffer, sizeof(char *) * (count + 8));
+- if (tmp == NULL) {
++ if ((count % STR_ARRAY_CHUNK_SIZE) == 0 && count != 0) {
++ buffer = realloc(buffer, STR_ARRAY_ITEM_SIZE * (count + STR_ARRAY_CHUNK_SIZE));
++ if (buffer == NULL) {
+ perror("_wpa_dbus_dict_entry_get_string_array["
+ "dbus] out of memory trying to "
+ "retrieve the string array");
+- free(buffer);
+- buffer = NULL;
+ goto done;
+ }
+- buffer = tmp;
+ }
+ entry->strarray_value = buffer;
+
+@@ -723,6 +735,13 @@ static dbus_bool_t _wpa_dbus_dict_entry_
+ entry->array_len = ++count;
+ dbus_message_iter_next(iter);
+ }
++
++ /* Zero-length arrays are valid. */
++ if (entry->array_len == 0) {
++ free(entry->strarray_value);
++ entry->strarray_value = NULL;
++ }
++
+ success = TRUE;
+
+ done:
+@@ -734,7 +753,6 @@ static dbus_bool_t _wpa_dbus_dict_entry_
+ DBusMessageIter *iter_dict_val, struct wpa_dbus_dict_entry *entry)
+ {
+ int array_type = dbus_message_iter_get_element_type(iter_dict_val);
+- int array_len;
+ dbus_bool_t success = FALSE;
+ DBusMessageIter iter_array;
+
+@@ -743,20 +761,14 @@ static dbus_bool_t _wpa_dbus_dict_entry_
+
+ dbus_message_iter_recurse(iter_dict_val, &iter_array);
+
+- array_len = dbus_message_iter_get_array_len(&iter_array);
+- if (array_len < 0)
+- return FALSE;
+-
+ switch (array_type) {
+ case DBUS_TYPE_BYTE:
+ success = _wpa_dbus_dict_entry_get_byte_array(&iter_array,
+- array_len,
+ array_type,
+ entry);
+ break;
+ case DBUS_TYPE_STRING:
+ success = _wpa_dbus_dict_entry_get_string_array(&iter_array,
+- array_len,
+ array_type,
+ entry);
+ break;
+@@ -943,9 +955,17 @@ void wpa_dbus_dict_entry_clear(struct wp
+ break;
+ case DBUS_TYPE_ARRAY:
+ switch (entry->array_type) {
+- case DBUS_TYPE_BYTE:
+- free(entry->bytearray_value);
+- break;
++ case DBUS_TYPE_BYTE: {
++ free(entry->bytearray_value);
++ break;
++ }
++ case DBUS_TYPE_STRING: {
++ int i;
++ for (i = 0; i < entry->array_len; i++)
++ free (entry->strarray_value[i]);
++ free (entry->strarray_value);
++ break;
++ }
+ }
+ break;
+ }