OpenWrt – Blame information for rev 2
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 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 | } |