--- iptraf-3.0.0/src/promisc.c.longdev 2005-09-13 08:42:54.000000000 +0200
+++ iptraf-3.0.0/src/promisc.c 2006-04-05 15:28:07.000000000 +0200
@@ -61,9 +61,7 @@
*list = NULL;
fd = open_procnetdev();
- do {
- get_next_iface(fd, buf);
-
+ while (get_next_iface(fd, buf, 8)) {
if (strcmp(buf, "") != 0) {
ptmp = malloc(sizeof(struct promisc_states));
strcpy(ptmp->params.ifname, buf);
@@ -102,7 +100,7 @@
}
}
}
- } while (strcmp(buf, "") != 0);
+ }
}
/*
--- iptraf-3.0.0/src/ifaces.h.longdev 2005-09-13 08:42:54.000000000 +0200
+++ iptraf-3.0.0/src/ifaces.h 2006-04-05 15:28:17.000000000 +0200
@@ -6,7 +6,7 @@
***/
FILE *open_procnetdev(void);
-void get_next_iface(FILE * fd, char *ifname);
+int get_next_iface(FILE * fd, char *ifname, int n);
int iface_supported(char *iface);
int iface_up(char *iface);
void err_iface_unsupported(void);
--- iptraf-3.0.0/src/ifstats.c.longdev 2005-09-13 08:42:54.000000000 +0200
+++ iptraf-3.0.0/src/ifstats.c 2006-04-05 15:26:59.000000000 +0200
@@ -128,7 +128,6 @@
void initiflist(struct iflist **list)
{
FILE *fd;
- char buf[161];
char ifname[10];
struct iflist *itmp = NULL;
struct iflist *tail = NULL;
@@ -143,9 +142,7 @@
return;
}
- do {
- strcpy(buf, "");
- get_next_iface(fd, ifname);
+ while (get_next_iface(fd, ifname, 8)) {
if (strcmp(ifname, "") != 0) {
if (!(iface_supported(ifname)))
continue;
@@ -183,7 +180,7 @@
tail = itmp;
itmp->next_entry = NULL;
}
- } while (strcmp(ifname, "") != 0);
+ }
fclose(fd);
}
--- iptraf-3.0.0/src/ifaces.c.longdev 2006-03-31 13:42:39.000000000 +0200
+++ iptraf-3.0.0/src/ifaces.c 2006-04-05 16:18:01.000000000 +0200
@@ -81,19 +81,23 @@
/*
* Get the next interface from /proc/net/dev.
*/
-void get_next_iface(FILE * fd, char *ifname)
+int get_next_iface(FILE * fd, char *ifname, int n)
{
char buf[161];
+ strcpy(ifname, "");
+
if (!feof(fd)) {
strcpy(buf, "");
fgets(buf, 160, fd);
- if (strcmp(buf, "") != 0)
- strcpy(ifname, ltrim(strtok(buf, ":")));
- else
- strcpy(ifname, "");
- } else
- strcpy(ifname, "");
+ if (strcmp(buf, "") != 0) {
+ strncpy(ifname, ltrim(strtok(buf, ":")), n);
+ if (ifname[n - 1] != '\0')
+ strcpy(ifname, "");
+ return 1;
+ }
+ }
+ return 0;
}
/*