OSDN Git Service

Update to v30-pre9
[android-x86/external-wireless-tools.git] / wireless_tools / iw262_restore_full_essid.diff
diff --git a/wireless_tools/iw262_restore_full_essid.diff b/wireless_tools/iw262_restore_full_essid.diff
new file mode 100644 (file)
index 0000000..29ae815
--- /dev/null
@@ -0,0 +1,59 @@
+--- linux/net/wireless/wext.j1.c       2007-07-09 13:19:22.000000000 -0700
++++ linux/net/wireless/wext.c  2007-07-09 13:19:59.000000000 -0700
+@@ -741,39 +741,11 @@ static int ioctl_standard_call(struct ne
+               int     extra_size;
+               int     user_length = 0;
+               int     err;
+-              int     essid_compat = 0;
+               /* Calculate space needed by arguments. Always allocate
+                * for max space. Easier, and won't last long... */
+               extra_size = descr->max_tokens * descr->token_size;
+-              /* Check need for ESSID compatibility for WE < 21 */
+-              switch (cmd) {
+-              case SIOCSIWESSID:
+-              case SIOCGIWESSID:
+-              case SIOCSIWNICKN:
+-              case SIOCGIWNICKN:
+-                      if (iwr->u.data.length == descr->max_tokens + 1)
+-                              essid_compat = 1;
+-                      else if (IW_IS_SET(cmd) && (iwr->u.data.length != 0)) {
+-                              char essid[IW_ESSID_MAX_SIZE + 1];
+-
+-                              err = copy_from_user(essid, iwr->u.data.pointer,
+-                                                   iwr->u.data.length *
+-                                                   descr->token_size);
+-                              if (err)
+-                                      return -EFAULT;
+-
+-                              if (essid[iwr->u.data.length - 1] == '\0')
+-                                      essid_compat = 1;
+-                      }
+-                      break;
+-              default:
+-                      break;
+-              }
+-
+-              iwr->u.data.length -= essid_compat;
+-
+               /* Check what user space is giving us */
+               if (IW_IS_SET(cmd)) {
+                       /* Check NULL pointer */
+@@ -811,7 +783,6 @@ static int ioctl_standard_call(struct ne
+               }
+               /* Create the kernel buffer */
+-              /*    kzalloc ensures NULL-termination for essid_compat */
+               extra = kzalloc(extra_size, GFP_KERNEL);
+               if (extra == NULL)
+                       return -ENOMEM;
+@@ -830,8 +801,6 @@ static int ioctl_standard_call(struct ne
+               /* Call the handler */
+               ret = handler(dev, &info, &(iwr->u), extra);
+-              iwr->u.data.length += essid_compat;
+-
+               /* If we have something to return to the user */
+               if (!ret && IW_IS_GET(cmd)) {
+                       /* Check if there is enough buffer up there */