packages: sort network related packages into package/network/
[openwrt/svn-archive/archive.git] / package / network / utils / wireless-tools / patches / 004-increase_iwlist_buffer.patch
1 --- a/iwlist.c
2 +++ b/iwlist.c
3 @@ -792,7 +792,8 @@ print_scanning_info(int skfd,
4 if(iw_get_ext(skfd, ifname, SIOCGIWSCAN, &wrq) < 0)
5 {
6 /* Check if buffer was too small (WE-17 only) */
7 - if((errno == E2BIG) && (range.we_version_compiled > 16))
8 + if((errno == E2BIG) && (range.we_version_compiled > 16)
9 + && (buflen < 0xFFFF))
10 {
11 /* Some driver may return very large scan results, either
12 * because there are many cells, or because they have many
13 @@ -808,6 +809,10 @@ print_scanning_info(int skfd,
14 else
15 buflen *= 2;
16
17 + /* wrq.u.data.length is 16 bits so max size is 65535 */
18 + if(buflen > 0xFFFF)
19 + buflen = 0xFFFF;
20 +
21 /* Try again */
22 goto realloc;
23 }
24 @@ -2152,6 +2157,7 @@ main(int argc,
25 char **args; /* Command arguments */
26 int count; /* Number of arguments */
27 const iwlist_cmd *iwcmd;
28 + int goterr = 0;
29
30 if(argc < 2)
31 iw_usage(1);
32 @@ -2199,12 +2205,12 @@ main(int argc,
33
34 /* do the actual work */
35 if (dev)
36 - (*iwcmd->fn)(skfd, dev, args, count);
37 + goterr = (*iwcmd->fn)(skfd, dev, args, count);
38 else
39 iw_enum_devices(skfd, iwcmd->fn, args, count);
40
41 /* Close the socket. */
42 iw_sockets_close(skfd);
43
44 - return 0;
45 + return goterr;
46 }