From 552a3e3bc50d33487d5b46672bfa9dd05bf90f16 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 24 Apr 2006 21:15:08 +0000 Subject: [PATCH] 2006-04-24 Dan Williams * src/nm-device-802-11-wireless.c - (nm_device_802_11_wireless_set_essid): fix setting of "any" essid git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1704 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 5 +++++ src/nm-device-802-11-wireless.c | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d7d0861f07..aafe342a64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-04-24 Dan Williams + + * src/nm-device-802-11-wireless.c + - (nm_device_802_11_wireless_set_essid): fix setting of "any" essid + 2006-04-24 Dan Williams Commit the async scanning patch diff --git a/src/nm-device-802-11-wireless.c b/src/nm-device-802-11-wireless.c index bd502e4fcb..fada02bb1c 100644 --- a/src/nm-device-802-11-wireless.c +++ b/src/nm-device-802-11-wireless.c @@ -1365,26 +1365,28 @@ nm_device_802_11_wireless_set_essid (NMDevice80211Wireless *self, NMSock* sk; int err; struct iwreq wreq; - unsigned char safe_essid[IW_ESSID_MAX_SIZE + 1] = "\0"; + char * safe_essid; const char * iface; + gint len = 0; g_return_if_fail (self != NULL); - /* Make sure the essid we get passed is a valid size */ - if (!essid) - safe_essid[0] = '\0'; - else + safe_essid = g_malloc0 (IW_ESSID_MAX_SIZE + 1); + + if (essid) { - strncpy ((char *) safe_essid, essid, IW_ESSID_MAX_SIZE); - safe_essid[IW_ESSID_MAX_SIZE] = '\0'; + len = MIN(IW_ESSID_MAX_SIZE, strlen (essid)); + if (len <= 0) + len = 0; + strncpy (safe_essid, essid, len); } iface = nm_device_get_iface (NM_DEVICE (self)); if ((sk = nm_dev_sock_open (NM_DEVICE (self), DEV_WIRELESS, __FUNCTION__, NULL))) { wreq.u.essid.pointer = (caddr_t) safe_essid; - wreq.u.essid.length = strlen ((char *) safe_essid) + 1; - wreq.u.essid.flags = 1; /* Enable essid on card */ + wreq.u.essid.length = len + 1; + wreq.u.essid.flags = (len > 0) ? 1 : 0; /* 1=enable ESSID, 0=disable/any */ #ifdef IOCTL_DEBUG nm_info ("%s: About to SET IWESSID.", iface); @@ -1407,6 +1409,7 @@ nm_device_802_11_wireless_set_essid (NMDevice80211Wireless *self, */ sleep (2); } + g_free (safe_essid); }