Passphrases are first hashed into hex, and then encoded with hexstr2bin
before being marshalled over to wpa_supplicant. Since they are a hex
hash, it's entirely possible that '00' will occur in the hash... which
means you can't depend on strlen to give the right length for the binary
encoding, and therefore must pass the length in explicitly.

Bill

diff -up NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c.foo 
NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c
--- NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c.foo      
2007-09-28 22:24:17.000000000 -0400
+++ NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c  
2007-09-28 22:24:33.000000000 -0400
@@ -310,7 +310,7 @@ nm_supplicant_config_add_setting_wireles
                        value = nm_utils_hexstr2bin (field, strlen (field)); \
                } else \
                        value = g_strdup (field); \
-               success = nm_supplicant_config_add_option (self, name, value, 
-1, secret); \
+               success = nm_supplicant_config_add_option (self, name, value, 
unhexify ? (strlen(field)/2) : -1, secret); \
                g_free (value); \
                if (!success) { \
                        nm_warning ("Error adding %s to supplicant config.", 
name); \
_______________________________________________
NetworkManager-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to