X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fexternal-wireless-tools.git;a=blobdiff_plain;f=wireless_tools%2Fiw261_restore_full_essid.diff;fp=wireless_tools%2Fiw261_restore_full_essid.diff;h=596d9e1efc260bc892df64500c4705f9b721920b;hp=0000000000000000000000000000000000000000;hb=41b8e9b1157054ddcb90e68f1b12707811c90361;hpb=c1074342112d8a4cdc44275b1bc15701aaf7f30b diff --git a/wireless_tools/iw261_restore_full_essid.diff b/wireless_tools/iw261_restore_full_essid.diff new file mode 100644 index 0000000..596d9e1 --- /dev/null +++ b/wireless_tools/iw261_restore_full_essid.diff @@ -0,0 +1,60 @@ +diff -u -p linux/net/core/wireless.j2.c linux/net/core/wireless.c +--- linux/net/core/wireless.j2.c 2007-03-21 14:41:51.000000000 -0700 ++++ linux/net/core/wireless.c 2007-03-21 14:41:08.000000000 -0700 +@@ -766,39 +766,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 */ +@@ -841,7 +813,6 @@ static int ioctl_standard_call(struct ne + #endif /* WE_IOCTL_DEBUG */ + + /* Create the kernel buffer */ +- /* kzalloc ensures NULL-termination for essid_compat */ + extra = kzalloc(extra_size, GFP_KERNEL); + if (extra == NULL) { + return -ENOMEM; +@@ -866,8 +837,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 */