提交 68c58223 编写于 作者: R Rich Felker

fix logic error for skipping failed interfaces in if_nameindex

上级 f0722273
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
static void *do_nameindex(int s, size_t n) static void *do_nameindex(int s, size_t n)
{ {
size_t i, len; size_t i, len, k;
struct ifconf conf; struct ifconf conf;
struct if_nameindex *idx; struct if_nameindex *idx;
...@@ -29,17 +29,16 @@ static void *do_nameindex(int s, size_t n) ...@@ -29,17 +29,16 @@ static void *do_nameindex(int s, size_t n)
} }
n = conf.ifc_len / sizeof(struct ifreq); n = conf.ifc_len / sizeof(struct ifreq);
for (i=0; i<n; i++) { for (i=k=0; i<n; i++) {
if (ioctl(s, SIOCGIFINDEX, &conf.ifc_req[i]) < 0) { if (ioctl(s, SIOCGIFINDEX, &conf.ifc_req[i]) < 0) {
i--; k++;
n--;
continue; continue;
} }
idx[i].if_index = conf.ifc_req[i].ifr_ifindex; idx[i-k].if_index = conf.ifc_req[i].ifr_ifindex;
idx[i].if_name = conf.ifc_req[i].ifr_name; idx[i-k].if_name = conf.ifc_req[i].ifr_name;
} }
idx[i].if_name = 0; idx[i-k].if_name = 0;
idx[i].if_index = 0; idx[i-k].if_index = 0;
return idx; return idx;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册