diff options
author | Ross Burton <ross@openedhand.com> | 2007-09-28 14:50:50 +0000 |
---|---|---|
committer | Ross Burton <ross@openedhand.com> | 2007-09-28 14:50:50 +0000 |
commit | cdafd8b8c839d010fc8e99a11292a17932ab428e (patch) | |
tree | 3047814ad994e1314f43e7588b1450e3d4d04745 | |
parent | f2287f417a884fcd839666d6a8de73ec78ab410a (diff) | |
download | poky-cdafd8b8c839d010fc8e99a11292a17932ab428e.tar.gz |
wpa-supplicant: add some patches from redhat
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2818 311d38ba-8fff-0310-9ca6-ca027cbcb966
4 files changed, 202 insertions, 1 deletions
diff --git a/meta/packages/wpa-supplicant/files/wpa_supplicant-0.5.7-always-scan.patch b/meta/packages/wpa-supplicant/files/wpa_supplicant-0.5.7-always-scan.patch new file mode 100644 index 0000000000..25afd07a11 --- /dev/null +++ b/meta/packages/wpa-supplicant/files/wpa_supplicant-0.5.7-always-scan.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | diff -up wpa_supplicant-0.5.7/wpa_supplicant.c.always-scan wpa_supplicant-0.5.7/wpa_supplicant.c | ||
2 | --- wpa_supplicant-0.5.7/wpa_supplicant.c.always-scan 2007-09-25 15:51:35.000000000 -0400 | ||
3 | +++ wpa_supplicant-0.5.7/wpa_supplicant.c 2007-09-25 16:31:27.000000000 -0400 | ||
4 | @@ -972,7 +972,7 @@ static void wpa_supplicant_scan(void *el | ||
5 | struct wpa_ssid *ssid; | ||
6 | int enabled, scan_req = 0, ret; | ||
7 | |||
8 | - if (wpa_s->disconnected) | ||
9 | + if (wpa_s->disconnected && !wpa_s->scan_req) | ||
10 | return; | ||
11 | |||
12 | enabled = 0; | ||
diff --git a/meta/packages/wpa-supplicant/files/wpa_supplicant-fix-deprecated-dbus-function.patch b/meta/packages/wpa-supplicant/files/wpa_supplicant-fix-deprecated-dbus-function.patch new file mode 100644 index 0000000000..dbd5e4e934 --- /dev/null +++ b/meta/packages/wpa-supplicant/files/wpa_supplicant-fix-deprecated-dbus-function.patch | |||
@@ -0,0 +1,187 @@ | |||
1 | --- dbus_dict_helpers.c.array-fix 2006-12-18 12:31:11.000000000 -0500 | ||
2 | +++ dbus_dict_helpers.c 2006-12-20 03:17:08.000000000 -0500 | ||
3 | @@ -629,36 +629,55 @@ dbus_bool_t wpa_dbus_dict_open_read(DBus | ||
4 | } | ||
5 | |||
6 | |||
7 | +#define BYTE_ARRAY_CHUNK_SIZE 34 | ||
8 | +#define BYTE_ARRAY_ITEM_SIZE (sizeof (char)) | ||
9 | + | ||
10 | static dbus_bool_t _wpa_dbus_dict_entry_get_byte_array( | ||
11 | - DBusMessageIter *iter, int array_len, int array_type, | ||
12 | + DBusMessageIter *iter, int array_type, | ||
13 | struct wpa_dbus_dict_entry *entry) | ||
14 | { | ||
15 | - dbus_uint32_t i = 0; | ||
16 | + dbus_uint32_t count = 0; | ||
17 | dbus_bool_t success = FALSE; | ||
18 | - char byte; | ||
19 | + char * buffer; | ||
20 | |||
21 | - /* Zero-length arrays are valid. */ | ||
22 | - if (array_len == 0) { | ||
23 | - entry->bytearray_value = NULL; | ||
24 | - entry->array_type = DBUS_TYPE_BYTE; | ||
25 | - success = TRUE; | ||
26 | - goto done; | ||
27 | - } | ||
28 | + entry->bytearray_value = NULL; | ||
29 | + entry->array_type = DBUS_TYPE_BYTE; | ||
30 | |||
31 | - entry->bytearray_value = wpa_zalloc(array_len * sizeof(char)); | ||
32 | - if (!entry->bytearray_value) { | ||
33 | + buffer = wpa_zalloc(BYTE_ARRAY_ITEM_SIZE * BYTE_ARRAY_CHUNK_SIZE); | ||
34 | + if (!buffer) { | ||
35 | perror("_wpa_dbus_dict_entry_get_byte_array[dbus]: out of " | ||
36 | "memory"); | ||
37 | goto done; | ||
38 | } | ||
39 | |||
40 | - entry->array_type = DBUS_TYPE_BYTE; | ||
41 | - entry->array_len = array_len; | ||
42 | + entry->bytearray_value = buffer; | ||
43 | + entry->array_len = 0; | ||
44 | while (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_BYTE) { | ||
45 | + char byte; | ||
46 | + | ||
47 | + if ((count % BYTE_ARRAY_CHUNK_SIZE) == 0 && count != 0) { | ||
48 | + buffer = realloc(buffer, BYTE_ARRAY_ITEM_SIZE * (count + BYTE_ARRAY_CHUNK_SIZE)); | ||
49 | + if (buffer == NULL) { | ||
50 | + perror("_wpa_dbus_dict_entry_get_byte_array[" | ||
51 | + "dbus] out of memory trying to " | ||
52 | + "retrieve the string array"); | ||
53 | + goto done; | ||
54 | + } | ||
55 | + } | ||
56 | + entry->bytearray_value = buffer; | ||
57 | + | ||
58 | dbus_message_iter_get_basic(iter, &byte); | ||
59 | - entry->bytearray_value[i++] = byte; | ||
60 | + entry->bytearray_value[count] = byte; | ||
61 | + entry->array_len = ++count; | ||
62 | dbus_message_iter_next(iter); | ||
63 | } | ||
64 | + | ||
65 | + /* Zero-length arrays are valid. */ | ||
66 | + if (entry->array_len == 0) { | ||
67 | + free(entry->bytearray_value); | ||
68 | + entry->strarray_value = NULL; | ||
69 | + } | ||
70 | + | ||
71 | success = TRUE; | ||
72 | |||
73 | done: | ||
74 | @@ -666,8 +685,11 @@ done: | ||
75 | } | ||
76 | |||
77 | |||
78 | +#define STR_ARRAY_CHUNK_SIZE 8 | ||
79 | +#define STR_ARRAY_ITEM_SIZE (sizeof (char *)) | ||
80 | + | ||
81 | static dbus_bool_t _wpa_dbus_dict_entry_get_string_array( | ||
82 | - DBusMessageIter *iter, int array_len, int array_type, | ||
83 | + DBusMessageIter *iter, int array_type, | ||
84 | struct wpa_dbus_dict_entry *entry) | ||
85 | { | ||
86 | dbus_uint32_t count = 0; | ||
87 | @@ -677,13 +699,7 @@ static dbus_bool_t _wpa_dbus_dict_entry_ | ||
88 | entry->strarray_value = NULL; | ||
89 | entry->array_type = DBUS_TYPE_STRING; | ||
90 | |||
91 | - /* Zero-length arrays are valid. */ | ||
92 | - if (array_len == 0) { | ||
93 | - success = TRUE; | ||
94 | - goto done; | ||
95 | - } | ||
96 | - | ||
97 | - buffer = wpa_zalloc(sizeof (char *) * 8); | ||
98 | + buffer = wpa_zalloc(STR_ARRAY_ITEM_SIZE * STR_ARRAY_CHUNK_SIZE); | ||
99 | if (buffer == NULL) { | ||
100 | perror("_wpa_dbus_dict_entry_get_string_array[dbus] out of " | ||
101 | "memory trying to retrieve a string array"); | ||
102 | @@ -696,18 +712,14 @@ static dbus_bool_t _wpa_dbus_dict_entry_ | ||
103 | const char *value; | ||
104 | char *str; | ||
105 | |||
106 | - if ((count % 8) == 0 && count != 0) { | ||
107 | - char **tmp; | ||
108 | - tmp = realloc(buffer, sizeof(char *) * (count + 8)); | ||
109 | - if (tmp == NULL) { | ||
110 | + if ((count % STR_ARRAY_CHUNK_SIZE) == 0 && count != 0) { | ||
111 | + buffer = realloc(buffer, STR_ARRAY_ITEM_SIZE * (count + STR_ARRAY_CHUNK_SIZE)); | ||
112 | + if (buffer == NULL) { | ||
113 | perror("_wpa_dbus_dict_entry_get_string_array[" | ||
114 | "dbus] out of memory trying to " | ||
115 | "retrieve the string array"); | ||
116 | - free(buffer); | ||
117 | - buffer = NULL; | ||
118 | goto done; | ||
119 | } | ||
120 | - buffer = tmp; | ||
121 | } | ||
122 | entry->strarray_value = buffer; | ||
123 | |||
124 | @@ -723,6 +735,13 @@ static dbus_bool_t _wpa_dbus_dict_entry_ | ||
125 | entry->array_len = ++count; | ||
126 | dbus_message_iter_next(iter); | ||
127 | } | ||
128 | + | ||
129 | + /* Zero-length arrays are valid. */ | ||
130 | + if (entry->array_len == 0) { | ||
131 | + free(entry->strarray_value); | ||
132 | + entry->strarray_value = NULL; | ||
133 | + } | ||
134 | + | ||
135 | success = TRUE; | ||
136 | |||
137 | done: | ||
138 | @@ -734,7 +753,6 @@ static dbus_bool_t _wpa_dbus_dict_entry_ | ||
139 | DBusMessageIter *iter_dict_val, struct wpa_dbus_dict_entry *entry) | ||
140 | { | ||
141 | int array_type = dbus_message_iter_get_element_type(iter_dict_val); | ||
142 | - int array_len; | ||
143 | dbus_bool_t success = FALSE; | ||
144 | DBusMessageIter iter_array; | ||
145 | |||
146 | @@ -743,20 +761,14 @@ static dbus_bool_t _wpa_dbus_dict_entry_ | ||
147 | |||
148 | dbus_message_iter_recurse(iter_dict_val, &iter_array); | ||
149 | |||
150 | - array_len = dbus_message_iter_get_array_len(&iter_array); | ||
151 | - if (array_len < 0) | ||
152 | - return FALSE; | ||
153 | - | ||
154 | switch (array_type) { | ||
155 | case DBUS_TYPE_BYTE: | ||
156 | success = _wpa_dbus_dict_entry_get_byte_array(&iter_array, | ||
157 | - array_len, | ||
158 | array_type, | ||
159 | entry); | ||
160 | break; | ||
161 | case DBUS_TYPE_STRING: | ||
162 | success = _wpa_dbus_dict_entry_get_string_array(&iter_array, | ||
163 | - array_len, | ||
164 | array_type, | ||
165 | entry); | ||
166 | break; | ||
167 | @@ -943,9 +955,17 @@ void wpa_dbus_dict_entry_clear(struct wp | ||
168 | break; | ||
169 | case DBUS_TYPE_ARRAY: | ||
170 | switch (entry->array_type) { | ||
171 | - case DBUS_TYPE_BYTE: | ||
172 | - free(entry->bytearray_value); | ||
173 | - break; | ||
174 | + case DBUS_TYPE_BYTE: { | ||
175 | + free(entry->bytearray_value); | ||
176 | + break; | ||
177 | + } | ||
178 | + case DBUS_TYPE_STRING: { | ||
179 | + int i; | ||
180 | + for (i = 0; i < entry->array_len; i++) | ||
181 | + free (entry->strarray_value[i]); | ||
182 | + free (entry->strarray_value); | ||
183 | + break; | ||
184 | + } | ||
185 | } | ||
186 | break; | ||
187 | } | ||
diff --git a/meta/packages/wpa-supplicant/wpa-supplicant-0.5.inc b/meta/packages/wpa-supplicant/wpa-supplicant-0.5.inc index bc8cb80e8e..f56f060151 100644 --- a/meta/packages/wpa-supplicant/wpa-supplicant-0.5.inc +++ b/meta/packages/wpa-supplicant/wpa-supplicant-0.5.inc | |||
@@ -5,6 +5,8 @@ HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/" | |||
5 | DEPENDS = "gnutls dbus" | 5 | DEPENDS = "gnutls dbus" |
6 | 6 | ||
7 | SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \ | 7 | SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \ |
8 | file://wpa_supplicant-0.5.7-always-scan.patch;patch=1 \ | ||
9 | file://wpa_supplicant-fix-deprecated-dbus-function.patch;patch=1;pnum=0 \ | ||
8 | file://defconfig-gnutls \ | 10 | file://defconfig-gnutls \ |
9 | file://init.sh \ | 11 | file://init.sh \ |
10 | file://defaults-sane \ | 12 | file://defaults-sane \ |
diff --git a/meta/packages/wpa-supplicant/wpa-supplicant_0.5.8.bb b/meta/packages/wpa-supplicant/wpa-supplicant_0.5.8.bb index 68eceea918..ce744b3fe7 100644 --- a/meta/packages/wpa-supplicant/wpa-supplicant_0.5.8.bb +++ b/meta/packages/wpa-supplicant/wpa-supplicant_0.5.8.bb | |||
@@ -1,3 +1,3 @@ | |||
1 | require wpa-supplicant-0.5.inc | 1 | require wpa-supplicant-0.5.inc |
2 | 2 | ||
3 | PR = "r2" | 3 | PR = "r3" |