--- wireless_tools.30.old/iwlist.c +++ wireless_tools.30/iwlist.c @@ -800,8 +800,7 @@ if(iw_get_ext(skfd, ifname, SIOCGIWSCAN, &wrq) < 0) { /* Check if buffer was too small (WE-17 only) */ - if((errno == E2BIG) && (range.we_version_compiled > 16) - && (buflen < 0xFFFF)) + if((errno == E2BIG) && (range.we_version_compiled > 16) && (buflen < 65535)) { /* Some driver may return very large scan results, either * because there are many cells, or because they have many @@ -821,6 +820,9 @@ if(buflen > 0xFFFF) buflen = 0xFFFF; + if(buflen > 65535) + buflen = 65535; + /* Try again */ goto realloc; }