diff --git a/.cvsignore b/.cvsignore
index fa08f7c..bae267c 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -5,3 +5,4 @@ wpa_supplicant-0.4.8.tar.gz
madwifi-headers-r1475.tar.bz2
wpa_supplicant-0.4.9.tar.gz
wpa_supplicant-0.5.7.tar.gz
+wpa_supplicant-0.6.3.tar.gz
diff --git a/fi.epitest.hostap.WPASupplicant.service b/fi.epitest.hostap.WPASupplicant.service
deleted file mode 100644
index 0856d64..0000000
--- a/fi.epitest.hostap.WPASupplicant.service
+++ /dev/null
@@ -1,5 +0,0 @@
-[D-BUS Service]
-Name=fi.epitest.hostap.WPASupplicant
-Exec=/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f
-User=root
-
diff --git a/sources b/sources
index e7b590b..55e8083 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
b82289b140cc1c66db11564bde248d8a madwifi-headers-r1475.tar.bz2
-bd2436392ad3c6d2513da701a12f2d27 wpa_supplicant-0.5.7.tar.gz
+b51b2975f21006f85f7297f3fb1acde1 wpa_supplicant-0.6.3.tar.gz
diff --git a/wpa_supplicant-0.5.10-dbus-service-file.patch b/wpa_supplicant-0.5.10-dbus-service-file.patch
new file mode 100644
index 0000000..082a3ec
--- /dev/null
+++ b/wpa_supplicant-0.5.10-dbus-service-file.patch
@@ -0,0 +1,9 @@
+diff -up wpa_supplicant-0.6.3/wpa_supplicant/dbus-wpa_supplicant.service.fedora wpa_supplicant-0.6.3/wpa_supplicant/dbus-wpa_supplicant.service
+--- wpa_supplicant-0.6.3/wpa_supplicant/dbus-wpa_supplicant.service.fedora 2008-03-02 20:58:35.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/dbus-wpa_supplicant.service 2008-03-02 20:58:41.000000000 -0500
+@@ -1,4 +1,4 @@
+ [D-BUS Service]
+ Name=fi.epitest.hostap.WPASupplicant
+-Exec=/sbin/wpa_supplicant -u
++Exec=/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log
+ User=root
diff --git a/wpa_supplicant-0.5.7-always-scan.patch b/wpa_supplicant-0.5.7-always-scan.patch
deleted file mode 100644
index 25afd07..0000000
--- a/wpa_supplicant-0.5.7-always-scan.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up wpa_supplicant-0.5.7/wpa_supplicant.c.always-scan wpa_supplicant-0.5.7/wpa_supplicant.c
---- wpa_supplicant-0.5.7/wpa_supplicant.c.always-scan 2007-09-25 15:51:35.000000000 -0400
-+++ wpa_supplicant-0.5.7/wpa_supplicant.c 2007-09-25 16:31:27.000000000 -0400
-@@ -972,7 +972,7 @@ static void wpa_supplicant_scan(void *el
- struct wpa_ssid *ssid;
- int enabled, scan_req = 0, ret;
-
-- if (wpa_s->disconnected)
-+ if (wpa_s->disconnected && !wpa_s->scan_req)
- return;
-
- enabled = 0;
diff --git a/wpa_supplicant-0.5.7-dbus-blobs.patch b/wpa_supplicant-0.5.7-dbus-blobs.patch
deleted file mode 100644
index e52bd0c..0000000
--- a/wpa_supplicant-0.5.7-dbus-blobs.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-diff --git a/wpa_supplicant/ctrl_iface_dbus.c b/wpa_supplicant/ctrl_iface_dbus.c
-index 1d66c96..8e236e8 100644
---- a/wpa_supplicant/ctrl_iface_dbus.c
-+++ b/wpa_supplicant/ctrl_iface_dbus.c
-@@ -536,6 +536,10 @@ static DBusHandlerResult wpas_iface_message_handler(DBusConnection *connection,
- reply = wpas_dbus_iface_set_ap_scan(message, wpa_s);
- else if (!strcmp(method, "state"))
- reply = wpas_dbus_iface_get_state(message, wpa_s);
-+ else if (!strcmp(method, "setBlobs"))
-+ reply = wpas_dbus_iface_set_blobs(message, wpa_s);
-+ else if (!strcmp(method, "removeBlobs"))
-+ reply = wpas_dbus_iface_remove_blobs(message, wpa_s);
- }
-
- /* If the message was handled, send back the reply */
-diff --git a/wpa_supplicant/ctrl_iface_dbus_handlers.c b/wpa_supplicant/ctrl_iface_dbus_handlers.c
-index 5e952ec..3ece2fe 100644
---- a/wpa_supplicant/ctrl_iface_dbus_handlers.c
-+++ b/wpa_supplicant/ctrl_iface_dbus_handlers.c
-@@ -1203,3 +1203,129 @@ DBusMessage * wpas_dbus_iface_get_state(DBusMessage *message,
-
- return reply;
- }
-+
-+
-+/**
-+ * wpas_dbus_iface_set_blobs - Store named binary blobs (ie, for certificates)
-+ * @message: Pointer to incoming dbus message
-+ * @global: %wpa_supplicant global data structure
-+ * Returns: A dbus message containing a UINT32 indicating success (1) or
-+ * failure (0)
-+ *
-+ * Asks wpa_supplicant to internally store a one or more binary blobs.
-+ */
-+DBusMessage * wpas_dbus_iface_set_blobs(DBusMessage *message,
-+ struct wpa_supplicant *wpa_s)
-+{
-+ DBusMessage *reply = NULL;
-+ struct wpa_dbus_dict_entry entry = { .type = DBUS_TYPE_STRING };
-+ DBusMessageIter iter, iter_dict;
-+
-+ dbus_message_iter_init(message, &iter);
-+
-+ if (!wpa_dbus_dict_open_read(&iter, &iter_dict))
-+ return wpas_dbus_new_invalid_opts_error(message, NULL);
-+
-+ while (wpa_dbus_dict_has_dict_entry(&iter_dict)) {
-+ struct wpa_config_blob *blob;
-+
-+ if (!wpa_dbus_dict_get_entry(&iter_dict, &entry)) {
-+ reply = wpas_dbus_new_invalid_opts_error(message, NULL);
-+ break;
-+ }
-+
-+ if (entry.type != DBUS_TYPE_ARRAY ||
-+ entry.array_type != DBUS_TYPE_BYTE) {
-+ reply = wpas_dbus_new_invalid_opts_error(message,
-+ "Byte array expected.");
-+ break;
-+ }
-+
-+ if ( (entry.array_len <= 0)
-+ || (entry.array_len > 65536)
-+ || !strlen(entry.key)) {
-+ reply = wpas_dbus_new_invalid_opts_error(message,
-+ "Invalid array size.");
-+ break;
-+ }
-+
-+ blob = os_zalloc(sizeof(*blob));
-+ if (blob == NULL) {
-+ reply = dbus_message_new_error(message,
-+ WPAS_ERROR_ADD_ERROR,
-+ "Not enough memory to add blob.");
-+ break;
-+ }
-+ blob->data = os_zalloc(entry.array_len);
-+ if (blob->data == NULL) {
-+ reply = dbus_message_new_error(message,
-+ WPAS_ERROR_ADD_ERROR,
-+ "Not enough memory to add blob data.");
-+ os_free(blob);
-+ break;
-+ }
-+
-+ blob->name = os_strdup(entry.key);
-+ blob->len = entry.array_len;
-+ os_memcpy(blob->data, (u8 *) entry.bytearray_value,
-+ entry.array_len);
-+ if (blob->name == NULL || blob->data == NULL) {
-+ wpa_config_free_blob(blob);
-+ reply = dbus_message_new_error(message,
-+ WPAS_ERROR_ADD_ERROR,
-+ "Error adding blob.");
-+ break;
-+ }
-+
-+ /* Success */
-+ wpa_config_remove_blob(wpa_s->conf, blob->name);
-+ wpa_config_set_blob(wpa_s->conf, blob);
-+ wpa_dbus_dict_entry_clear(&entry);
-+ }
-+ wpa_dbus_dict_entry_clear(&entry);
-+
-+ return reply ? reply : wpas_dbus_new_success_reply(message);;
-+}
-+
-+/**
-+ * wpas_dbus_iface_remove_blob - Remove named binary blobs
-+ * @message: Pointer to incoming dbus message
-+ * @global: %wpa_supplicant global data structure
-+ * Returns: A dbus message containing a UINT32 indicating success (1) or
-+ * failure (0)
-+ *
-+ * Asks wpa_supplicant to remove one or more previously stored binary blobs.
-+ */
-+DBusMessage * wpas_dbus_iface_remove_blobs(DBusMessage *message,
-+ struct wpa_supplicant *wpa_s)
-+{
-+ DBusMessageIter iter, array;
-+ char *err_msg = NULL;
-+
-+ dbus_message_iter_init(message, &iter);
-+
-+ if ((dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_ARRAY)
-+ || (dbus_message_iter_get_element_type (&iter) != DBUS_TYPE_STRING))
-+ return wpas_dbus_new_invalid_opts_error(message, NULL);
-+
-+ dbus_message_iter_recurse(&iter, &array);
-+ while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_STRING) {
-+ const char *name;
-+
-+ dbus_message_iter_get_basic(&array, &name);
-+ if (!strlen(name))
-+ err_msg = "Invalid blob name.";
-+
-+ if (wpa_config_remove_blob(wpa_s->conf, name) != 0)
-+ err_msg = "Error removing blob.";
-+ dbus_message_iter_next(&array);
-+ }
-+
-+ if (err_msg) {
-+ return dbus_message_new_error(message, WPAS_ERROR_REMOVE_ERROR,
-+ err_msg);
-+ }
-+
-+ return wpas_dbus_new_success_reply(message);
-+}
-+
-diff --git a/wpa_supplicant/ctrl_iface_dbus_handlers.h b/wpa_supplicant/ctrl_iface_dbus_handlers.h
-index 0fd1d31..0ae94c4 100644
---- a/wpa_supplicant/ctrl_iface_dbus_handlers.h
-+++ b/wpa_supplicant/ctrl_iface_dbus_handlers.h
-@@ -71,6 +71,12 @@ DBusMessage * wpas_dbus_iface_set_ap_scan(DBusMessage *message,
- DBusMessage * wpas_dbus_iface_get_state(DBusMessage *message,
- struct wpa_supplicant *wpa_s);
-
-+DBusMessage * wpas_dbus_iface_set_blobs(DBusMessage *message,
-+ struct wpa_supplicant *wpa_s);
-+
-+DBusMessage * wpas_dbus_iface_remove_blobs(DBusMessage *message,
-+ struct wpa_supplicant *wpa_s);
-+
- #endif /* CONFIG_CTRL_IFACE_DBUS */
-
- #endif /* CTRL_IFACE_DBUS_HANDLERS_H */
-diff -up wpa_supplicant-0.5.7/config.c.dbus-blobs wpa_supplicant-0.5.7/config.c
---- a/wpa_supplicant-0.5.7/config.c.dbus-blobs 2007-10-24 16:41:37.000000000 -0400
-+++ b/wpa_supplicant-0.5.7/config.c 2007-10-24 16:41:49.000000000 -0400
-@@ -70,13 +70,14 @@ static char * wpa_config_parse_string(co
- if (hlen & 1)
- return NULL;
- *len = hlen / 2;
-- str = os_malloc(*len);
-+ str = os_malloc(*len + 1);
- if (str == NULL)
- return NULL;
- if (hexstr2bin(value, str, *len)) {
- os_free(str);
- return NULL;
- }
-+ str[*len] = '\0';
- return (char *) str;
- }
- }
-
diff --git a/wpa_supplicant-0.5.7-dbus-iface-segfault-fix.patch b/wpa_supplicant-0.5.7-dbus-iface-segfault-fix.patch
deleted file mode 100644
index a2675ed..0000000
--- a/wpa_supplicant-0.5.7-dbus-iface-segfault-fix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up wpa_supplicant-0.5.7/wpa_supplicant.c.global-iface-segfault-fix wpa_supplicant-0.5.7/wpa_supplicant.c
---- wpa_supplicant-0.5.7/wpa_supplicant.c.global-iface-segfault-fix 2007-10-09 17:34:25.000000000 -0400
-+++ wpa_supplicant-0.5.7/wpa_supplicant.c 2007-10-09 17:35:17.000000000 -0400
-@@ -2352,7 +2352,8 @@ static void wpa_supplicant_deinit_iface(
- wpa_clear_keys(wpa_s, NULL);
- }
-
-- wpas_dbus_unregister_iface(wpa_s);
-+ if (wpa_s->global)
-+ wpas_dbus_unregister_iface(wpa_s);
-
- wpa_supplicant_cleanup(wpa_s);
-
diff --git a/wpa_supplicant-0.5.7-dbus-permissions-fix.patch b/wpa_supplicant-0.5.7-dbus-permissions-fix.patch
deleted file mode 100644
index 2132185..0000000
--- a/wpa_supplicant-0.5.7-dbus-permissions-fix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up wpa_supplicant-0.5.7/dbus-wpa_supplicant.conf.permfix wpa_supplicant-0.5.7/dbus-wpa_supplicant.conf
---- wpa_supplicant-0.5.7/dbus-wpa_supplicant.conf.permfix 2007-10-20 07:42:01.000000000 -0400
-+++ wpa_supplicant-0.5.7/dbus-wpa_supplicant.conf 2007-10-20 07:42:22.000000000 -0400
-@@ -8,10 +8,6 @@
-
-
-
--
--
--
--
-
-
-
diff --git a/wpa_supplicant-0.5.7-debug-file.patch b/wpa_supplicant-0.5.7-debug-file.patch
deleted file mode 100644
index 32a1f30..0000000
--- a/wpa_supplicant-0.5.7-debug-file.patch
+++ /dev/null
@@ -1,75 +0,0 @@
---- wpa_supplicant-0.5.7/main.c.debugfile 2007-07-30 21:48:35.000000000 -0400
-+++ wpa_supplicant-0.5.7/main.c 2007-07-30 22:12:06.000000000 -0400
-@@ -45,7 +45,12 @@ static void usage(void)
- "[-p] \\\n"
- " [-b [-N -i -c [-C] "
- "[-D] \\\n"
-- " [-p] [-b] ...]\n"
-+ " [-p] [-b] ...] "
-+#ifdef CONFIG_DEBUG_FILE
-+ "[-f] \\\n"
-+#else
-+ "\n"
-+#endif
- "\n"
- "drivers:\n",
- wpa_supplicant_version, wpa_supplicant_license);
-@@ -65,6 +70,9 @@ static void usage(void)
- " -i = interface name\n"
- " -d = increase debugging verbosity (-dd even more)\n"
- " -D = driver name\n"
-+#ifdef CONFIG_DEBUG_FILE
-+ " -f = Log output to /var/log/wpa_supplicant.log\n"
-+#endif
- " -g = global ctrl_interface\n"
- " -K = include keys (passwords, etc.) in debug output\n"
- " -t = include timestamp in debug messages\n"
-@@ -143,7 +151,7 @@ int main(int argc, char *argv[])
- wpa_supplicant_fd_workaround();
-
- for (;;) {
-- c = getopt(argc, argv, "b:Bc:C:D:dg:hi:KLNp:P:qtuvwW");
-+ c = getopt(argc, argv, "b:Bc:C:D:dfg:hi:KLNp:P:qtuvwW");
- if (c < 0)
- break;
- switch (c) {
-@@ -172,6 +180,11 @@ int main(int argc, char *argv[])
- params.wpa_debug_level--;
- break;
- #endif /* CONFIG_NO_STDOUT_DEBUG */
-+#ifdef CONFIG_DEBUG_FILE
-+ case 'f':
-+ params.wpa_debug_use_file = 1;
-+ break;
-+#endif
- case 'g':
- params.ctrl_interface = optarg;
- break;
---- wpa_supplicant-0.5.7/common.c.debugfile 2007-07-30 21:39:40.000000000 -0400
-+++ wpa_supplicant-0.5.7/common.c 2007-07-30 22:11:11.000000000 -0400
-@@ -354,11 +354,8 @@ int wpa_debug_open_file(void)
- #ifdef _WIN32
- os_snprintf(fname, sizeof(fname), "\\Temp\\wpa_supplicant-log-%d.txt",
- count++);
--#else /* _WIN32 */
-- os_snprintf(fname, sizeof(fname), "/tmp/wpa_supplicant-log-%d.txt",
-- count++);
- #endif /* _WIN32 */
-- out_file = fopen(fname, "w");
-+ out_file = fopen("/var/log/wpa_supplicant.log", "a");
- return out_file == NULL ? -1 : 0;
- #else /* CONFIG_DEBUG_FILE */
- return 0;
---- wpa_supplicant-0.5.7/Makefile.debugfile 2007-07-30 21:44:14.000000000 -0400
-+++ wpa_supplicant-0.5.7/Makefile 2007-07-30 21:44:46.000000000 -0400
-@@ -744,6 +744,10 @@ ifndef LDO
- LDO=$(CC)
- endif
-
-+ifdef CONFIG_DEBUG_FILE
-+CFLAGS += -DCONFIG_DEBUG_FILE
-+endif
-+
- dynamic_eap_methods: $(EAPDYN)
-
- wpa_supplicant: .config $(OBJS)
diff --git a/wpa_supplicant-0.5.7-fix-dynamic-wep-with-mac80211.patch b/wpa_supplicant-0.5.7-fix-dynamic-wep-with-mac80211.patch
deleted file mode 100644
index bf36e9f..0000000
--- a/wpa_supplicant-0.5.7-fix-dynamic-wep-with-mac80211.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Backport from 0.6.x branch; apparently this hasn't even landed on
-the stable 0.5.x branch yet.
-
-diff -up wpa_supplicant-0.5.7/driver_wext.c.dynamic-wep-mac80211 wpa_supplicant-0.5.7/driver_wext.c
---- wpa_supplicant-0.5.7/driver_wext.c.dynamic-wep-mac80211 2007-10-28 00:57:11.000000000 -0400
-+++ wpa_supplicant-0.5.7/driver_wext.c 2007-10-28 00:57:38.000000000 -0400
-@@ -1724,6 +1724,7 @@ static int wpa_driver_wext_keymgmt2wext(
- {
- switch (keymgmt) {
- case KEY_MGMT_802_1X:
-+ case KEY_MGMT_802_1X_NO_WPA:
- return IW_AUTH_KEY_MGMT_802_1X;
- case KEY_MGMT_PSK:
- return IW_AUTH_KEY_MGMT_PSK;
diff --git a/wpa_supplicant-0.5.7-fix-signal-leaks.patch b/wpa_supplicant-0.5.7-fix-signal-leaks.patch
deleted file mode 100644
index 107f8af..0000000
--- a/wpa_supplicant-0.5.7-fix-signal-leaks.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -up wpa_supplicant-0.5.7/ctrl_iface_dbus.c.signal-leak-fix wpa_supplicant-0.5.7/ctrl_iface_dbus.c
---- wpa_supplicant-0.5.7/ctrl_iface_dbus.c.signal-leak-fix 2007-12-06 18:10:22.000000000 -0500
-+++ wpa_supplicant-0.5.7/ctrl_iface_dbus.c 2007-12-06 18:11:38.000000000 -0500
-@@ -649,6 +649,7 @@ void wpa_supplicant_dbus_notify_scan_res
- return;
- }
- dbus_connection_send(iface->con, signal, NULL);
-+ dbus_message_unref (signal);
- }
-
-
-@@ -666,7 +667,7 @@ void wpa_supplicant_dbus_notify_state_ch
- wpa_states old_state)
- {
- struct ctrl_iface_dbus_priv *iface;
-- DBusMessage *signal;
-+ DBusMessage *signal = NULL;
- const char *path;
- const char *new_state_str, *old_state_str;
-
-@@ -711,7 +712,7 @@ void wpa_supplicant_dbus_notify_state_ch
- wpa_printf(MSG_ERROR,
- "wpa_supplicant_dbus_notify_state_change[dbus]: "
- "couldn't convert state strings.");
-- return;
-+ goto out;
- }
-
- if (!dbus_message_append_args(signal,
-@@ -724,8 +725,13 @@ void wpa_supplicant_dbus_notify_state_ch
- "wpa_supplicant_dbus_notify_state_change[dbus]: "
- "not enough memory to construct state change "
- "signal.");
-+ goto out;
- }
-+
- dbus_connection_send(iface->con, signal, NULL);
-+
-+out:
-+ dbus_message_unref (signal);
- }
-
-
diff --git a/wpa_supplicant-0.5.7-flush-debug-output.patch b/wpa_supplicant-0.5.7-flush-debug-output.patch
index 486dbfe..a686851 100644
--- a/wpa_supplicant-0.5.7-flush-debug-output.patch
+++ b/wpa_supplicant-0.5.7-flush-debug-output.patch
@@ -1,5 +1,5 @@
---- wpa_supplicant-0.5.7/common.c.flush-debug 2007-07-30 23:15:34.000000000 -0400
-+++ wpa_supplicant-0.5.7/common.c 2007-07-30 23:17:06.000000000 -0400
+--- wpa_supplicant-0.6.3/src/utils/wpa_debug.c.flush-debug 2007-07-30 23:15:34.000000000 -0400
++++ wpa_supplicant-0.6.3/src/utils/wpa_debug.c 2007-07-30 23:17:06.000000000 -0400
@@ -157,6 +157,7 @@ void wpa_debug_print_timestamp(void)
if (out_file) {
fprintf(out_file, "%ld.%06u: ", (long) tv.sec,
diff --git a/wpa_supplicant-0.5.7-ignore-dup-ca-cert-addition.patch b/wpa_supplicant-0.5.7-ignore-dup-ca-cert-addition.patch
deleted file mode 100644
index 63ea82f..0000000
--- a/wpa_supplicant-0.5.7-ignore-dup-ca-cert-addition.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-diff -up wpa_supplicant-0.5.7/tls_openssl.c.ignore-dup-ca-cert-addition wpa_supplicant-0.5.7/tls_openssl.c
---- wpa_supplicant-0.5.7/tls_openssl.c.ignore-dup-ca-cert-addition 2006-11-29 23:50:28.000000000 -0500
-+++ wpa_supplicant-0.5.7/tls_openssl.c 2007-11-13 11:19:30.000000000 -0500
-@@ -1105,11 +1105,21 @@ static int tls_connection_ca_cert(void *
- }
-
- if (!X509_STORE_add_cert(ssl_ctx->cert_store, cert)) {
-+ unsigned long err = ERR_peek_error();
-+
- tls_show_errors(MSG_WARNING, __func__,
- "Failed to add ca_cert_blob to "
- "certificate store");
-- X509_free(cert);
-- return -1;
-+
-+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
-+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "
-+ "cert already in hash table error",
-+ __func__);
-+ } else {
-+ X509_free(cert);
-+ return -1;
-+ }
- }
- X509_free(cert);
- wpa_printf(MSG_DEBUG, "OpenSSL: %s - added ca_cert_blob "
-@@ -1259,15 +1269,28 @@ static int tls_connection_client_cert(st
- if (client_cert == NULL && client_cert_blob == NULL)
- return 0;
-
-- if (client_cert_blob &&
-- SSL_use_certificate_ASN1(conn->ssl, (u8 *) client_cert_blob,
-+ if (client_cert_blob) {
-+ if (SSL_use_certificate_ASN1(conn->ssl, (u8 *) client_cert_blob,
- client_cert_blob_len) == 1) {
-- wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_certificate_ASN1 --> "
-- "OK");
-- return 0;
-- } else if (client_cert_blob) {
-- tls_show_errors(MSG_DEBUG, __func__,
-- "SSL_use_certificate_ASN1 failed");
-+ wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_certificate_ASN1"
-+ " --> OK");
-+ return 0;
-+ } else {
-+ unsigned long err = ERR_peek_error();
-+
-+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
-+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "
-+ "cert already in hash table error",
-+ __func__);
-+ wpa_printf(MSG_DEBUG, "OpenSSL: "
-+ "SSL_use_certificate_ASN1 --> OK");
-+ return 0;
-+ }
-+
-+ tls_show_errors(MSG_DEBUG, __func__,
-+ "SSL_use_certificate_ASN1 failed");
-+ }
- }
-
- if (client_cert == NULL)
-@@ -1515,40 +1538,73 @@ static int tls_connection_private_key(vo
- while (private_key_blob) {
- if (SSL_use_PrivateKey_ASN1(EVP_PKEY_RSA, conn->ssl,
- (u8 *) private_key_blob,
-- private_key_blob_len) == 1) {
-- wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_PrivateKey_"
-- "ASN1(EVP_PKEY_RSA) --> OK");
-- ok = 1;
-- break;
-- } else {
-+ private_key_blob_len) != 1) {
-+ unsigned long err = ERR_peek_error();
-+
- tls_show_errors(MSG_DEBUG, __func__,
- "SSL_use_PrivateKey_ASN1(EVP_PKEY_RSA)"
- " failed");
-+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
-+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "
-+ "cert already in hash table error",
-+ __func__);
-+ ok = 1;
-+ }
-+ } else
-+ ok = 1;
-+
-+ if (ok == 1) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_PrivateKey_"
-+ "ASN1(EVP_PKEY_RSA) --> OK");
-+ break;
- }
-
- if (SSL_use_PrivateKey_ASN1(EVP_PKEY_DSA, conn->ssl,
- (u8 *) private_key_blob,
-- private_key_blob_len) == 1) {
-- wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_PrivateKey_"
-- "ASN1(EVP_PKEY_DSA) --> OK");
-- ok = 1;
-- break;
-- } else {
-+ private_key_blob_len) != 1) {
-+ unsigned long err = ERR_peek_error();
-+
- tls_show_errors(MSG_DEBUG, __func__,
- "SSL_use_PrivateKey_ASN1(EVP_PKEY_DSA)"
- " failed");
-+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
-+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "
-+ "cert already in hash table error",
-+ __func__);
-+ ok = 1;
-+ }
-+ } else
-+ ok = 1;
-+
-+ if (ok == 1) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_PrivateKey_"
-+ "ASN1(EVP_PKEY_DSA) --> OK");
-+ break;
- }
-
- if (SSL_use_RSAPrivateKey_ASN1(conn->ssl,
- (u8 *) private_key_blob,
-- private_key_blob_len) == 1) {
-+ private_key_blob_len) != 1) {
-+ unsigned long err = ERR_peek_error();
-+
-+ tls_show_errors(MSG_DEBUG, __func__,
-+ "SSL_use_RSAPrivateKey_ASN1 failed");
-+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
-+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {
-+ wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "
-+ "cert already in hash table error",
-+ __func__);
-+ ok = 1;
-+ }
-+ } else
-+ ok = 1;
-+
-+ if (ok == 1) {
- wpa_printf(MSG_DEBUG, "OpenSSL: "
- "SSL_use_RSAPrivateKey_ASN1 --> OK");
-- ok = 1;
- break;
-- } else {
-- tls_show_errors(MSG_DEBUG, __func__,
-- "SSL_use_RSAPrivateKey_ASN1 failed");
- }
-
- if (tls_read_pkcs12_blob(ssl_ctx, conn->ssl, private_key_blob,
diff --git a/wpa_supplicant-0.5.7-include-stdlib.h b/wpa_supplicant-0.5.7-include-stdlib.h
deleted file mode 100644
index 02f4509..0000000
--- a/wpa_supplicant-0.5.7-include-stdlib.h
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up wpa_supplicant-0.5.7/wpa_gui/networkconfig.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/networkconfig.ui.h
---- wpa_supplicant-0.5.7/wpa_gui/networkconfig.ui.h.atoi 2006-12-09 19:38:48.000000000 -0500
-+++ wpa_supplicant-0.5.7/wpa_gui/networkconfig.ui.h 2008-02-22 11:51:28.000000000 -0500
-@@ -10,6 +10,7 @@
- ** destructor.
- *****************************************************************************/
-
-+#include
-
- enum {
- AUTH_NONE = 0,
-diff -up wpa_supplicant-0.5.7/wpa_gui/wpagui.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/wpagui.ui.h
---- wpa_supplicant-0.5.7/wpa_gui/wpagui.ui.h.atoi 2008-02-22 14:39:19.000000000 -0500
-+++ wpa_supplicant-0.5.7/wpa_gui/wpagui.ui.h 2008-02-22 14:39:31.000000000 -0500
-@@ -16,6 +16,7 @@
- #include
- #endif
-
-+#include
-
- void WpaGui::init()
- {
-diff -up wpa_supplicant-0.5.7/wpa_gui/userdatarequest.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/userdatarequest.ui.h
---- wpa_supplicant-0.5.7/wpa_gui/userdatarequest.ui.h.atoi 2008-02-22 14:38:32.000000000 -0500
-+++ wpa_supplicant-0.5.7/wpa_gui/userdatarequest.ui.h 2008-02-22 14:38:56.000000000 -0500
-@@ -10,6 +10,8 @@
- ** destructor.
- *****************************************************************************/
-
-+#include
-+
- int UserDataRequest::setParams(WpaGui *_wpagui, const char *reqMsg)
- {
- char *tmp, *pos, *pos2;
diff --git a/wpa_supplicant-0.5.7-qmake-location.patch b/wpa_supplicant-0.5.7-qmake-location.patch
index fd40c58..e8fcf24 100644
--- a/wpa_supplicant-0.5.7-qmake-location.patch
+++ b/wpa_supplicant-0.5.7-qmake-location.patch
@@ -1,5 +1,5 @@
---- wpa_supplicant-0.5.7/Makefile.qmake 2007-07-30 22:17:29.000000000 -0400
-+++ wpa_supplicant-0.5.7/Makefile 2007-07-30 22:17:46.000000000 -0400
+--- wpa_supplicant-0.6.3/wpa_supplicant/Makefile.qmake 2007-07-30 22:17:29.000000000 -0400
++++ wpa_supplicant-0.6.3/wpa_supplicant/Makefile 2007-07-30 22:17:46.000000000 -0400
@@ -818,7 +818,7 @@ windows-bin: $(WINALL)
$(STRIP) $(WINALL)
diff --git a/wpa_supplicant-0.5.7-sigusr1-changes-debuglevel.patch b/wpa_supplicant-0.5.7-sigusr1-changes-debuglevel.patch
deleted file mode 100644
index ceaa691..0000000
--- a/wpa_supplicant-0.5.7-sigusr1-changes-debuglevel.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- wpa_supplicant-0.5.7/wpa_supplicant.c.sigusr1 2007-08-24 11:24:51.000000000 -0400
-+++ wpa_supplicant-0.5.7/wpa_supplicant.c 2007-08-24 11:43:08.000000000 -0400
-@@ -930,6 +930,22 @@ static void wpa_supplicant_reconfig(int
- }
- }
-
-+static void wpa_supplicant_handle_sigusr1(int sig, void *eloop_ctx,
-+ void *signal_ctx)
-+{
-+ /* Increase verbosity (by decreasing the debug level) and wrap back
-+ * to MSG_INFO when needed.
-+ */
-+ if (wpa_debug_level)
-+ wpa_debug_level--;
-+ else
-+ wpa_debug_level = MSG_INFO;
-+
-+ wpa_printf(MSG_INFO, "Signal %d received - changing debug level to %s", sig,
-+ (wpa_debug_level == MSG_INFO) ? "INFO" :
-+ ((wpa_debug_level == MSG_DEBUG) ? "DEBUG" :
-+ ((wpa_debug_level == MSG_MSGDUMP) ? "MSGDUMP" : "UNKNOWN")));
-+}
-
- static void wpa_supplicant_gen_assoc_event(struct wpa_supplicant *wpa_s)
- {
-@@ -2561,6 +2577,8 @@ int wpa_supplicant_run(struct wpa_global
- eloop_register_signal_terminate(wpa_supplicant_terminate, NULL);
- eloop_register_signal_reconfig(wpa_supplicant_reconfig, NULL);
-
-+ eloop_register_signal(SIGUSR1, wpa_supplicant_handle_sigusr1, NULL);
-+
- eloop_run();
-
- return 0;
diff --git a/wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch b/wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
index 943f2f1..53d423b 100644
--- a/wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
+++ b/wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
@@ -1,7 +1,7 @@
-Index: wpa_supplicant-0.4.8/driver_wext.c
+Index: wpa_supplicant-0.6.3/src/drivers/driver_wext.c
===================================================================
---- wpa_supplicant-0.4.8.orig/driver_wext.c 2006-07-13 11:23:05.000000000 +0200
-+++ wpa_supplicant-0.4.8/driver_wext.c 2006-07-13 11:23:57.000000000 +0200
+--- wpa_supplicant-0.6.3/src/drivers/driver_wext.c.orig 2006-07-13 11:23:05.000000000 +0200
++++ wpa_supplicant-0.6.3/src/drivers/driver_wext.c 2006-07-13 11:23:57.000000000 +0200
@@ -1280,6 +1280,7 @@ static int wpa_driver_wext_set_key_ext(v
memset(&iwr, 0, sizeof(iwr));
strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
diff --git a/wpa_supplicant-0.5.9-adhoc-frequency.patch b/wpa_supplicant-0.5.9-adhoc-frequency.patch
deleted file mode 100644
index bf298f9..0000000
--- a/wpa_supplicant-0.5.9-adhoc-frequency.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
-index 6a21bbc..10c454f 100644
---- a/wpa_supplicant/config.c
-+++ b/wpa_supplicant/config.c
-@@ -1157,7 +1157,8 @@ static const struct parse_data ssid_fiel
- #ifdef CONFIG_IEEE80211W
- { INT_RANGE(ieee80211w, 0, 2) },
- #endif /* CONFIG_IEEE80211W */
-- { INT_RANGE(peerkey, 0, 1) }
-+ { INT_RANGE(peerkey, 0, 1) },
-+ { INT_RANGE(frequency, 0, 10000) }
- };
-
- #undef OFFSETdiff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h
-index d4c3654..393f750 100644
---- a/wpa_supplicant/config_ssid.h
-+++ b/wpa_supplicant/config_ssid.h
-@@ -851,6 +851,18 @@ struct wpa_ssid {
- IEEE80211W_REQUIRED = 2
- } ieee80211w;
- #endif /* CONFIG_IEEE80211W */
-+
-+ /**
-+ * frequency - Channel frequency in megahertz (MHz) for IBSS
-+ *
-+ * This value is used to configure the initial channel for IBSS (adhoc)
-+ * networks, e.g., 2412 = IEEE 802.11b/g channel 1. It is ignored in
-+ * the infrastructure mode. In addition, this value is only used by the
-+ * station that creates the IBSS. If an IBSS network with the
-+ * configured SSID is already present, the frequency of the network
-+ * will be used instead of this configured value.
-+ */
-+ int frequency;
- };
-
- int wpa_config_allowed_eap_method(struct wpa_ssid *ssid, int vendor,
-diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
-index d5342fe..35ddbcd 100644
---- a/wpa_supplicant/wpa_supplicant.c
-+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1468,6 +1468,8 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
- params.ssid = ssid->ssid;
- params.ssid_len = ssid->ssid_len;
- }
-+ if (ssid->mode == 1 && ssid->frequency > 0 && params.freq == 0)
-+ params.freq = ssid->frequency; /* Initial channel for IBSS */
- params.wpa_ie = wpa_ie;
- params.wpa_ie_len = wpa_ie_len;
- params.pairwise_suite = cipher_pairwise;
-diff --git a/wpa_supplicant/wpa_supplicant.conf b/wpa_supplicant/wpa_supplicant.conf
-index dce9d87..ec8b0ee 100644
---- a/wpa_supplicant/wpa_supplicant.conf
-+++ b/wpa_supplicant/wpa_supplicant.conf
-@@ -192,6 +192,13 @@ fast_reauth=1
- # proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP (or CCMP, but not
- # both), and psk must also be set.
- #
-+# frequency: Channel frequency in megahertz (MHz) for IBSS, e.g.,
-+# 2412 = IEEE 802.11b/g channel 1. This value is used to configure the initial
-+# channel for IBSS (adhoc) networks. It is ignored in the infrastructure mode.
-+# In addition, this value is only used by the station that creates the IBSS. If
-+# an IBSS network with the configured SSID is already present, the frequency of
-+# the network will be used instead of this configured value.
-+#
- # proto: list of accepted protocols
- # WPA = WPA/IEEE 802.11i/D3.0
- # RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
-@@ -657,6 +664,7 @@ network={
- network={
- ssid="test adhoc"
- mode=1
-+ frequency=2412
- proto=WPA
- key_mgmt=WPA-NONE
- pairwise=NONE
diff --git a/wpa_supplicant-0.6.3-wpa-gui-fixes.patch b/wpa_supplicant-0.6.3-wpa-gui-fixes.patch
new file mode 100644
index 0000000..ddd4d07
--- /dev/null
+++ b/wpa_supplicant-0.6.3-wpa-gui-fixes.patch
@@ -0,0 +1,45 @@
+diff -up wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/networkconfig.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/networkconfig.ui.h
+--- wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/networkconfig.ui.h.atoi 2006-12-09 19:38:48.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/networkconfig.ui.h 2008-02-22 11:51:28.000000000 -0500
+@@ -10,6 +10,7 @@
+ ** destructor.
+ *****************************************************************************/
+
++#include
+
+ enum {
+ AUTH_NONE = 0,
+diff -up wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpagui.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/wpagui.ui.h
+--- wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpagui.ui.h.atoi 2008-02-22 14:39:19.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpagui.ui.h 2008-02-22 14:39:31.000000000 -0500
+@@ -16,6 +16,7 @@
+ #include
+ #endif
+
++#include
+
+ void WpaGui::init()
+ {
+diff -up wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/userdatarequest.ui.h.atoi wpa_supplicant-0.5.7/wpa_gui/userdatarequest.ui.h
+--- wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/userdatarequest.ui.h.atoi 2008-02-22 14:38:32.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/userdatarequest.ui.h 2008-02-22 14:38:56.000000000 -0500
+@@ -10,6 +10,8 @@
+ ** destructor.
+ *****************************************************************************/
+
++#include
++
+ int UserDataRequest::setParams(WpaGui *_wpagui, const char *reqMsg)
+ {
+ char *tmp, *pos, *pos2;
+diff -up wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpamsg.h.fix wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpamsg.h
+--- wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpamsg.h.fix 2008-03-03 11:58:18.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_gui/wpamsg.h 2008-03-03 11:58:33.000000000 -0500
+@@ -14,6 +14,7 @@ typedef QValueList WpaMsgList;
+
+ class WpaMsg {
+ public:
++ WpaMsg() {}
+ WpaMsg(const QString &_msg, int _priority = 2)
+ : msg(_msg), priority(_priority)
+ {
diff --git a/wpa_supplicant-assoc-timeout.patch b/wpa_supplicant-assoc-timeout.patch
index bcf9f09..9fb21f4 100644
--- a/wpa_supplicant-assoc-timeout.patch
+++ b/wpa_supplicant-assoc-timeout.patch
@@ -1,5 +1,5 @@
---- wpa_supplicant-0.4.8/wpa_supplicant.c.timeout 2006-03-03 22:26:13.000000000 -0500
-+++ wpa_supplicant-0.4.8/wpa_supplicant.c 2006-03-03 22:26:45.000000000 -0500
+--- wpa_supplicant-0.6.3/wpa_supplicant/wpa_supplicant.c.timeout 2006-03-03 22:26:13.000000000 -0500
++++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_supplicant.c 2006-03-03 22:26:45.000000000 -0500
@@ -1252,9 +1252,9 @@
/* Timeout for IEEE 802.11 authentication and association */
int timeout;
diff --git a/wpa_supplicant-driver-wext-debug.patch b/wpa_supplicant-driver-wext-debug.patch
deleted file mode 100644
index 8962ebf..0000000
--- a/wpa_supplicant-driver-wext-debug.patch
+++ /dev/null
@@ -1,113 +0,0 @@
---- wpa_supplicant-0.4.9/driver_wext.c.driver-wext-debug 2006-04-29 20:21:38.000000000 -0400
-+++ wpa_supplicant-0.4.9/driver_wext.c 2006-10-02 13:43:18.000000000 -0400
-@@ -1633,20 +1633,32 @@
- */
- if (drv->auth_alg_fallback &&
- wpa_driver_wext_auth_alg_fallback(drv, params) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because auth_alg_fallback failed", __FUNCTION__);
- ret = -1;
-+}
-
- if (!params->bssid &&
- wpa_driver_wext_set_bssid(drv, NULL) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid failed", __FUNCTION__);
- ret = -1;
-+}
-
- if (wpa_driver_wext_set_mode(drv, params->mode) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_mode failed", __FUNCTION__);
- ret = -1;
-+}
- /* TODO: should consider getting wpa version and cipher/key_mgmt suites
- * from configuration, not from here, where only the selected suite is
- * available */
- if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len)
- < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_gen_ie failed", __FUNCTION__);
- ret = -1;
-+}
- if (params->wpa_ie == NULL || params->wpa_ie_len == 0)
- value = IW_AUTH_WPA_VERSION_DISABLED;
- else if (params->wpa_ie[0] == RSN_INFO_ELEM)
-@@ -1655,26 +1667,41 @@
- value = IW_AUTH_WPA_VERSION_WPA;
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_WPA_VERSION, value) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(WPA_VERSION) failed", __FUNCTION__);
- ret = -1;
-+}
- value = wpa_driver_wext_cipher2wext(params->pairwise_suite);
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_CIPHER_PAIRWISE, value) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_PAIRWISE) failed", __FUNCTION__);
- ret = -1;
-+}
- value = wpa_driver_wext_cipher2wext(params->group_suite);
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_CIPHER_GROUP, value) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_GROUP) failed", __FUNCTION__);
- ret = -1;
-+}
- value = wpa_driver_wext_keymgmt2wext(params->key_mgmt_suite);
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_KEY_MGMT, value) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(KEY_MGMT) failed", __FUNCTION__);
- ret = -1;
-+}
- value = params->key_mgmt_suite != KEY_MGMT_NONE ||
- params->pairwise_suite != CIPHER_NONE ||
- params->group_suite != CIPHER_NONE ||
- params->wpa_ie_len;
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_PRIVACY_INVOKED, value) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(PRIVACY_INVOKED) failed", __FUNCTION__);
- ret = -1;
-+}
-
- /* Allow unencrypted EAPOL messages even if pairwise keys are set when
- * not using WPA. IEEE 802.1X specifies that these frames are not
-@@ -1688,14 +1715,26 @@
- if (wpa_driver_wext_set_auth_param(drv,
- IW_AUTH_RX_UNENCRYPTED_EAPOL,
- allow_unencrypted_eapol) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(RX_UNENCRYPTED_EAPOL) failed", __FUNCTION__);
- ret = -1;
-+}
- if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_freq failed", __FUNCTION__);
- ret = -1;
-+}
- if (wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_ssid failed", __FUNCTION__);
- ret = -1;
-+}
- if (params->bssid &&
- wpa_driver_wext_set_bssid(drv, params->bssid) < 0)
-+{
-+wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid2 failed", __FUNCTION__);
- ret = -1;
-+}
-
- return ret;
- }
-@@ -1720,6 +1759,8 @@
- res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG,
- algs);
- drv->auth_alg_fallback = res == -2;
-+if (res == -2)
-+wpa_printf(MSG_DEBUG, "%s: falling back to ENCODE for AUTH", __FUNCTION__);
- return res;
- }
-
diff --git a/wpa_supplicant-fix-deprecated-dbus-function.patch b/wpa_supplicant-fix-deprecated-dbus-function.patch
deleted file mode 100644
index dbd5e4e..0000000
--- a/wpa_supplicant-fix-deprecated-dbus-function.patch
+++ /dev/null
@@ -1,187 +0,0 @@
---- 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;
- }
diff --git a/wpa_supplicant-wep-key-fix.patch b/wpa_supplicant-wep-key-fix.patch
deleted file mode 100644
index 7d64814..0000000
--- a/wpa_supplicant-wep-key-fix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: wpa_supplicant-0.4.8/driver_wext.c
-===================================================================
---- wpa_supplicant-0.4.8.orig/driver_wext.c
-+++ wpa_supplicant-0.4.8/driver_wext.c
-@@ -1415,7 +1415,7 @@ int wpa_driver_wext_set_key(void *priv,
- memset(&iwr, 0, sizeof(iwr));
- strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
- iwr.u.encoding.flags = key_idx + 1;
-- iwr.u.encoding.pointer = (caddr_t) key;
-+ iwr.u.encoding.pointer = (caddr_t) NULL;
- iwr.u.encoding.length = 0;
- if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) {
- perror("ioctl[SIOCSIWENCODE] (set_tx)");
diff --git a/wpa_supplicant.spec b/wpa_supplicant.spec
index fee20b8..9a8c8e4 100644
--- a/wpa_supplicant.spec
+++ b/wpa_supplicant.spec
@@ -1,8 +1,8 @@
Summary: WPA/WPA2/IEEE 802.1X Supplicant
Name: wpa_supplicant
Epoch: 1
-Version: 0.5.7
-Release: 23%{?dist}
+Version: 0.6.3
+Release: 1%{?dist}
License: BSD
Group: System Environment/Base
Source0: http://hostap.epitest.fi/releases/%{name}-%{version}.tar.gz
@@ -11,34 +11,15 @@ Source2: %{name}.conf
Source3: %{name}.init.d
Source4: %{name}.sysconfig
Source5: madwifi-headers-r1475.tar.bz2
-Source6: fi.epitest.hostap.WPASupplicant.service
-Source7: %{name}.logrotate
+Source6: %{name}.logrotate
+
Patch0: wpa_supplicant-assoc-timeout.patch
-Patch1: wpa_supplicant-driver-wext-debug.patch
-Patch2: wpa_supplicant-wep-key-fix.patch
-# http://hostap.epitest.fi/bugz/show_bug.cgi?id=192
-# Upstream
-Patch3: wpa_supplicant-fix-deprecated-dbus-function.patch
-# Upstream
-Patch4: wpa_supplicant-0.5.7-debug-file.patch
-Patch5: wpa_supplicant-0.5.7-qmake-location.patch
-# Upstream
-Patch6: wpa_supplicant-0.5.7-flush-debug-output.patch
-# Rejected by upstream
-Patch7: wpa_supplicant-0.5.7-sigusr1-changes-debuglevel.patch
-Patch8: wpa_supplicant-0.5.7-always-scan.patch
-# Upstream
-Patch9: wpa_supplicant-0.5.7-dbus-iface-segfault-fix.patch
-Patch10: wpa_supplicant-0.5.7-dbus-blobs.patch
-Patch11: wpa_supplicant-0.5.7-dbus-permissions-fix.patch
-Patch12: wpa_supplicant-0.5.7-ignore-dup-ca-cert-addition.patch
-# Upstream
-Patch13: wpa_supplicant-0.5.7-fix-dynamic-wep-with-mac80211.patch
-Patch14: wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
-# Upstream
-Patch15: wpa_supplicant-0.5.7-fix-signal-leaks.patch
-Patch16: wpa_supplicant-0.5.9-adhoc-frequency.patch
-Patch17: wpa_supplicant-0.5.7-include-stdlib.h
+Patch1: wpa_supplicant-0.6.3-wpa-gui-fixes.patch
+Patch2: wpa_supplicant-0.5.7-qmake-location.patch
+Patch3: wpa_supplicant-0.5.7-flush-debug-output.patch
+Patch4: wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
+Patch5: wpa_supplicant-0.5.10-dbus-service-file.patch
+
URL: http://w1.fi/wpa_supplicant/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -66,31 +47,24 @@ Graphical User Interface for wpa_supplicant written using QT3
%prep
%setup -q
%patch0 -p1 -b .assoc-timeout
-%patch1 -p1 -b .driver-wext-debug
-%patch2 -p1 -b .wep-key-fix
-%patch3 -p0 -b .fix-deprecated-dbus-functions
-%patch4 -p1 -b .debug-file
-%patch5 -p1 -b .qmake-location
-%patch6 -p1 -b .flush-debug-output
-%patch7 -p1 -b .sigusr1-changes-debuglevel
-%patch8 -p1 -b .always-scan
-%patch9 -p1 -b .dbus-iface-segfault-fix
-%patch10 -p2 -b .dbus-blobs
-%patch11 -p1 -b .dbus-permissions-fix
-%patch12 -p1 -b .ignore-dup-ca-cert-addition
-%patch13 -p1 -b .fix-dynamic-wep-with-mac80211
-%patch14 -p1 -b .use-IW_ENCODE_TEMP
-%patch15 -p1 -b .signal-leak-fixes
-%patch16 -p2 -b .adhoc-freq
-%patch17 -p1 -b .stdlib
+%patch1 -p1 -b .wpa-gui-fixes
+%patch2 -p1 -b .qmake-location
+%patch3 -p1 -b .flush-debug-output
+%patch4 -p1 -b .use-IW_ENCODE_TEMP
+%patch5 -p1 -b .dbus-service-file
%build
-cp %{SOURCE1} ./.config
-tar -xjf %{SOURCE5}
-CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
-CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
-make %{_smp_mflags}
-QTDIR=%{_libdir}/qt-3.3 make wpa_gui %{_smp_mflags}
+pushd src
+ tar -xjf %{SOURCE5}
+popd
+
+pushd wpa_supplicant
+ cp %{SOURCE1} ./.config
+ CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
+ CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
+ make %{_smp_mflags}
+ QTDIR=%{_libdir}/qt-3.3 make wpa_gui %{_smp_mflags}
+popd
%install
rm -rf %{buildroot}
@@ -101,7 +75,7 @@ install -d %{buildroot}/%{_sysconfdir}/sysconfig
install -m 0755 %{SOURCE3} %{buildroot}/%{_sysconfdir}/rc.d/init.d/%{name}
install -m 0644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/sysconfig/%{name}
install -d %{buildroot}/%{_sysconfdir}/logrotate.d
-install -m 0644 %{SOURCE7} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}
+install -m 0644 %{SOURCE6} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}
# config
install -d %{buildroot}/%{_sysconfdir}/%{name}
@@ -109,29 +83,29 @@ install -m 0600 %{SOURCE2} %{buildroot}/%{_sysconfdir}/%{name}
# binary
install -d %{buildroot}/%{_sbindir}
-install -m 0755 wpa_passphrase %{buildroot}/%{_sbindir}
-install -m 0755 wpa_cli %{buildroot}/%{_sbindir}
-install -m 0755 wpa_supplicant %{buildroot}/%{_sbindir}
+install -m 0755 %{name}/wpa_passphrase %{buildroot}/%{_sbindir}
+install -m 0755 %{name}/wpa_cli %{buildroot}/%{_sbindir}
+install -m 0755 %{name}/wpa_supplicant %{buildroot}/%{_sbindir}
install -d %{buildroot}/%{_sysconfdir}/dbus-1/system.d/
-install -m 0644 dbus-wpa_supplicant.conf %{buildroot}/%{_sysconfdir}/dbus-1/system.d/wpa_supplicant.conf
+install -m 0644 %{name}/dbus-wpa_supplicant.conf %{buildroot}/%{_sysconfdir}/dbus-1/system.d/wpa_supplicant.conf
install -d %{buildroot}/%{_datadir}/dbus-1/system-services/
-install -m 0644 %{SOURCE6} %{buildroot}/%{_datadir}/dbus-1/system-services
+install -m 0644 %{name}/dbus-wpa_supplicant.service %{buildroot}/%{_datadir}/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service
# gui
install -d %{buildroot}/%{_bindir}
-install -m 0755 wpa_gui/wpa_gui %{buildroot}/%{_bindir}
+install -m 0755 %{name}/wpa_gui/wpa_gui %{buildroot}/%{_bindir}
# running
mkdir -p %{buildroot}/%{_localstatedir}/run/%{name}
# man pages
install -d %{buildroot}%{_mandir}/man{5,8}
-install -m 0644 doc/docbook/*.8 %{buildroot}%{_mandir}/man8
-install -m 0644 doc/docbook/*.5 %{buildroot}%{_mandir}/man5
+install -m 0644 %{name}/doc/docbook/*.8 %{buildroot}%{_mandir}/man8
+install -m 0644 %{name}/doc/docbook/*.5 %{buildroot}%{_mandir}/man5
# some cleanup in docs
-rm -f doc/.cvsignore
-rm -rf doc/docbook
+rm -f %{name}/doc/.cvsignore
+rm -rf %{name}/doc/docbook
%clean
@@ -151,7 +125,7 @@ fi
%files
%defattr(-, root, root)
-%doc COPYING ChangeLog README eap_testing.txt todo.txt wpa_supplicant.conf examples
+%doc COPYING %{name}/ChangeLog README %{name}/eap_testing.txt %{name}/todo.txt %{name}/wpa_supplicant.conf %{name}/examples
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
@@ -171,6 +145,9 @@ fi
%{_bindir}/wpa_gui
%changelog
+* Mon Mar 3 2008 Dan Williams - 1:0.6.3-1
+- Update to latest development release; remove upstreamed patches
+
* Fri Feb 22 2008 Dan Williams 1:0.5.7-23
- Fix gcc 4.3 rebuild issues