- Update to latest development release; remove upstreamed patches

This commit is contained in:
Daniel Williams 2008-03-03 17:20:11 +00:00
parent 8c8f86cedd
commit a3815518cd
24 changed files with 106 additions and 1047 deletions

View File

@ -5,3 +5,4 @@ wpa_supplicant-0.4.8.tar.gz
madwifi-headers-r1475.tar.bz2 madwifi-headers-r1475.tar.bz2
wpa_supplicant-0.4.9.tar.gz wpa_supplicant-0.4.9.tar.gz
wpa_supplicant-0.5.7.tar.gz wpa_supplicant-0.5.7.tar.gz
wpa_supplicant-0.6.3.tar.gz

View File

@ -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

View File

@ -1,2 +1,2 @@
b82289b140cc1c66db11564bde248d8a madwifi-headers-r1475.tar.bz2 b82289b140cc1c66db11564bde248d8a madwifi-headers-r1475.tar.bz2
bd2436392ad3c6d2513da701a12f2d27 wpa_supplicant-0.5.7.tar.gz b51b2975f21006f85f7297f3fb1acde1 wpa_supplicant-0.6.3.tar.gz

View File

@ -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

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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 @@
<allow send_destination="fi.epitest.hostap.WPASupplicant"/>
<allow send_interface="fi.epitest.hostap.WPASupplicant"/>
</policy>
- <policy at_console="true">
- <allow send_destination="fi.epitest.hostap.WPASupplicant"/>
- <allow send_interface="fi.epitest.hostap.WPASupplicant"/>
- </policy>
<policy context="default">
<deny own="fi.epitest.hostap.WPASupplicant"/>
<deny send_destination="fi.epitest.hostap.WPASupplicant"/>

View File

@ -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<driver_param>] \\\n"
" [-b<br_ifname> [-N -i<ifname> -c<conf> [-C<ctrl>] "
"[-D<driver>] \\\n"
- " [-p<driver_param>] [-b<br_ifname>] ...]\n"
+ " [-p<driver_param>] [-b<br_ifname>] ...] "
+#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)

View File

@ -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;

View File

@ -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);
}

View File

@ -1,5 +1,5 @@
--- wpa_supplicant-0.5.7/common.c.flush-debug 2007-07-30 23:15:34.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.5.7/common.c 2007-07-30 23:17:06.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) @@ -157,6 +157,7 @@ void wpa_debug_print_timestamp(void)
if (out_file) { if (out_file) {
fprintf(out_file, "%ld.%06u: ", (long) tv.sec, fprintf(out_file, "%ld.%06u: ", (long) tv.sec,

View File

@ -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,

View File

@ -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 <stdlib.h>
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 <unistd.h>
#endif
+#include <stdlib.h>
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 <stdlib.h>
+
int UserDataRequest::setParams(WpaGui *_wpagui, const char *reqMsg)
{
char *tmp, *pos, *pos2;

View File

@ -1,5 +1,5 @@
--- wpa_supplicant-0.5.7/Makefile.qmake 2007-07-30 22:17:29.000000000 -0400 --- wpa_supplicant-0.6.3/wpa_supplicant/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 2007-07-30 22:17:46.000000000 -0400
@@ -818,7 +818,7 @@ windows-bin: $(WINALL) @@ -818,7 +818,7 @@ windows-bin: $(WINALL)
$(STRIP) $(WINALL) $(STRIP) $(WINALL)

View File

@ -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;

View File

@ -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.6.3/src/drivers/driver_wext.c.orig 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 2006-07-13 11:23:57.000000000 +0200
@@ -1280,6 +1280,7 @@ static int wpa_driver_wext_set_key_ext(v @@ -1280,6 +1280,7 @@ static int wpa_driver_wext_set_key_ext(v
memset(&iwr, 0, sizeof(iwr)); memset(&iwr, 0, sizeof(iwr));
strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);

View File

@ -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

View File

@ -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 <stdlib.h>
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 <unistd.h>
#endif
+#include <stdlib.h>
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 <stdlib.h>
+
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<WpaMsg> WpaMsgList;
class WpaMsg {
public:
+ WpaMsg() {}
WpaMsg(const QString &_msg, int _priority = 2)
: msg(_msg), priority(_priority)
{

View File

@ -1,5 +1,5 @@
--- wpa_supplicant-0.4.8/wpa_supplicant.c.timeout 2006-03-03 22:26:13.000000000 -0500 --- wpa_supplicant-0.6.3/wpa_supplicant/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 2006-03-03 22:26:45.000000000 -0500
@@ -1252,9 +1252,9 @@ @@ -1252,9 +1252,9 @@
/* Timeout for IEEE 802.11 authentication and association */ /* Timeout for IEEE 802.11 authentication and association */
int timeout; int timeout;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)");

View File

@ -1,8 +1,8 @@
Summary: WPA/WPA2/IEEE 802.1X Supplicant Summary: WPA/WPA2/IEEE 802.1X Supplicant
Name: wpa_supplicant Name: wpa_supplicant
Epoch: 1 Epoch: 1
Version: 0.5.7 Version: 0.6.3
Release: 23%{?dist} Release: 1%{?dist}
License: BSD License: BSD
Group: System Environment/Base Group: System Environment/Base
Source0: http://hostap.epitest.fi/releases/%{name}-%{version}.tar.gz Source0: http://hostap.epitest.fi/releases/%{name}-%{version}.tar.gz
@ -11,34 +11,15 @@ Source2: %{name}.conf
Source3: %{name}.init.d Source3: %{name}.init.d
Source4: %{name}.sysconfig Source4: %{name}.sysconfig
Source5: madwifi-headers-r1475.tar.bz2 Source5: madwifi-headers-r1475.tar.bz2
Source6: fi.epitest.hostap.WPASupplicant.service Source6: %{name}.logrotate
Source7: %{name}.logrotate
Patch0: wpa_supplicant-assoc-timeout.patch Patch0: wpa_supplicant-assoc-timeout.patch
Patch1: wpa_supplicant-driver-wext-debug.patch Patch1: wpa_supplicant-0.6.3-wpa-gui-fixes.patch
Patch2: wpa_supplicant-wep-key-fix.patch Patch2: wpa_supplicant-0.5.7-qmake-location.patch
# http://hostap.epitest.fi/bugz/show_bug.cgi?id=192 Patch3: wpa_supplicant-0.5.7-flush-debug-output.patch
# Upstream Patch4: wpa_supplicant-0.5.7-use-IW_ENCODE_TEMP.patch
Patch3: wpa_supplicant-fix-deprecated-dbus-function.patch Patch5: wpa_supplicant-0.5.10-dbus-service-file.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
URL: http://w1.fi/wpa_supplicant/ URL: http://w1.fi/wpa_supplicant/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -66,31 +47,24 @@ Graphical User Interface for wpa_supplicant written using QT3
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .assoc-timeout %patch0 -p1 -b .assoc-timeout
%patch1 -p1 -b .driver-wext-debug %patch1 -p1 -b .wpa-gui-fixes
%patch2 -p1 -b .wep-key-fix %patch2 -p1 -b .qmake-location
%patch3 -p0 -b .fix-deprecated-dbus-functions %patch3 -p1 -b .flush-debug-output
%patch4 -p1 -b .debug-file %patch4 -p1 -b .use-IW_ENCODE_TEMP
%patch5 -p1 -b .qmake-location %patch5 -p1 -b .dbus-service-file
%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
%build %build
cp %{SOURCE1} ./.config pushd src
tar -xjf %{SOURCE5} tar -xjf %{SOURCE5}
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; popd
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
make %{_smp_mflags} pushd wpa_supplicant
QTDIR=%{_libdir}/qt-3.3 make wpa_gui %{_smp_mflags} 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 %install
rm -rf %{buildroot} 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 0755 %{SOURCE3} %{buildroot}/%{_sysconfdir}/rc.d/init.d/%{name}
install -m 0644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/sysconfig/%{name} install -m 0644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/sysconfig/%{name}
install -d %{buildroot}/%{_sysconfdir}/logrotate.d 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 # config
install -d %{buildroot}/%{_sysconfdir}/%{name} install -d %{buildroot}/%{_sysconfdir}/%{name}
@ -109,29 +83,29 @@ install -m 0600 %{SOURCE2} %{buildroot}/%{_sysconfdir}/%{name}
# binary # binary
install -d %{buildroot}/%{_sbindir} install -d %{buildroot}/%{_sbindir}
install -m 0755 wpa_passphrase %{buildroot}/%{_sbindir} install -m 0755 %{name}/wpa_passphrase %{buildroot}/%{_sbindir}
install -m 0755 wpa_cli %{buildroot}/%{_sbindir} install -m 0755 %{name}/wpa_cli %{buildroot}/%{_sbindir}
install -m 0755 wpa_supplicant %{buildroot}/%{_sbindir} install -m 0755 %{name}/wpa_supplicant %{buildroot}/%{_sbindir}
install -d %{buildroot}/%{_sysconfdir}/dbus-1/system.d/ 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 -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 # gui
install -d %{buildroot}/%{_bindir} install -d %{buildroot}/%{_bindir}
install -m 0755 wpa_gui/wpa_gui %{buildroot}/%{_bindir} install -m 0755 %{name}/wpa_gui/wpa_gui %{buildroot}/%{_bindir}
# running # running
mkdir -p %{buildroot}/%{_localstatedir}/run/%{name} mkdir -p %{buildroot}/%{_localstatedir}/run/%{name}
# man pages # man pages
install -d %{buildroot}%{_mandir}/man{5,8} install -d %{buildroot}%{_mandir}/man{5,8}
install -m 0644 doc/docbook/*.8 %{buildroot}%{_mandir}/man8 install -m 0644 %{name}/doc/docbook/*.8 %{buildroot}%{_mandir}/man8
install -m 0644 doc/docbook/*.5 %{buildroot}%{_mandir}/man5 install -m 0644 %{name}/doc/docbook/*.5 %{buildroot}%{_mandir}/man5
# some cleanup in docs # some cleanup in docs
rm -f doc/.cvsignore rm -f %{name}/doc/.cvsignore
rm -rf doc/docbook rm -rf %{name}/doc/docbook
%clean %clean
@ -151,7 +125,7 @@ fi
%files %files
%defattr(-, root, root) %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}/%{name}/%{name}.conf
%config(noreplace) %{_sysconfdir}/sysconfig/%{name} %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
@ -171,6 +145,9 @@ fi
%{_bindir}/wpa_gui %{_bindir}/wpa_gui
%changelog %changelog
* Mon Mar 3 2008 Dan Williams <dcbw@redhat.com> - 1:0.6.3-1
- Update to latest development release; remove upstreamed patches
* Fri Feb 22 2008 Dan Williams <dcbw@redhat.com> 1:0.5.7-23 * Fri Feb 22 2008 Dan Williams <dcbw@redhat.com> 1:0.5.7-23
- Fix gcc 4.3 rebuild issues - Fix gcc 4.3 rebuild issues