+++ /dev/null
-diff -up net-tools-2.0/include/interface.h.stack net-tools-2.0/include/interface.h
-diff -up net-tools-2.0/lib/interface.c.stack net-tools-2.0/lib/interface.c
---- net-tools-2.0/lib/interface.c.stack 2014-11-24 14:54:32.293134466 +0100
-+++ net-tools-2.0/lib/interface.c 2014-11-24 15:07:58.434764441 +0100
-@@ -214,10 +214,11 @@ out:
- return err;
- }
-
--static const char *get_name(char *name, const char *p)
-+static const char *get_name(char **namep, const char *p)
- {
- while (isspace(*p))
- p++;
-+ char *name = *namep = p;
- while (*p) {
- if (isspace(*p))
- break;
-@@ -320,9 +321,10 @@ static int get_dev_fields(const char *bp
- static int if_readlist_proc(const char *target)
- {
- FILE *fh;
-- char buf[512];
- struct interface *ife;
- int err;
-+ char *line = NULL;
-+ size_t linelen = 0;
-
- fh = fopen(_PATH_PROCNET_DEV, "r");
- if (!fh) {
-@@ -330,10 +332,11 @@ static int if_readlist_proc(const char *
- _PATH_PROCNET_DEV, strerror(errno));
- return -2;
- }
-- if (fgets(buf, sizeof buf, fh))
-- /* eat line */;
-- if (fgets(buf, sizeof buf, fh))
-- /* eat line */;
-+ if (getline(&line, &linelen, fh) == -1 /* eat line */
-+ || getline(&line, &linelen, fh) == -1) { /* eat line */
-+ err = -1;
-+ goto out;
-+ }
-
- #if 0 /* pretty, but can't cope with missing fields */
- fmt = proc_gen_fmt(_PATH_PROCNET_DEV, 1, fh,
-@@ -358,14 +361,14 @@ static int if_readlist_proc(const char *
- if (!fmt)
- return -1;
- #else
-- procnetdev_vsn = procnetdev_version(buf);
-+ procnetdev_vsn = procnetdev_version(line);
- #endif
-
- err = 0;
-- while (fgets(buf, sizeof buf, fh)) {
-+ while (getline(&line, &linelen, fh) != -1) {
- const char *s;
-- char name[IFNAMSIZ];
-- s = get_name(name, buf);
-+ char *name;
-+ s = get_name(&name, line);
- ife = if_cache_add(name);
- get_dev_fields(s, ife);
- ife->statistics_valid = 1;
-@@ -380,6 +383,8 @@ static int if_readlist_proc(const char *
- #if 0
- free(fmt);
- #endif
-+ out:
-+ free(line);
- fclose(fh);
- return err;
- }
-@@ -387,24 +392,28 @@ static int if_readlist_proc(const char *
- static int if_readlist_rep(const char *target, struct interface *ife)
- {
- FILE *fh;
-- char buf[512];
- int err;
-+ char *line = NULL;
-+ size_t linelen = 0;
-
- fh = fopen(_PATH_PROCNET_DEV, "r");
- if (!fh) {
- fprintf(stderr, _("Warning: cannot open %s (%s). Limited output.\n"),
- _PATH_PROCNET_DEV, strerror(errno));
- return if_readconf();
-- }
-- fgets(buf, sizeof buf, fh); /* eat line */
-- fgets(buf, sizeof buf, fh);
-+ }
-+ if (getline(&line, &linelen, fh) == -1 /* eat line */
-+ || getline(&line, &linelen, fh) == -1) { /* eat line */
-+ err = -1;
-+ goto out;
-+ }
-
-- procnetdev_vsn = procnetdev_version(buf);
-+ procnetdev_vsn = procnetdev_version(line);
-
- err = 0;
-- while (fgets(buf, sizeof buf, fh)) {
-- char *s, name[IFNAMSIZ];
-- s = get_name(name, buf);
-+ while (getline(&line, &linelen, fh) != -1) {
-+ char *s, *name;
-+ s = get_name(&name, line);
- get_dev_fields(s, ife);
- if (target && !strcmp(target,name))
- {
-@@ -417,6 +426,8 @@ static int if_readlist_rep(const char *t
- err = -1;
- }
-
-+ out:
-+ free(line);
- fclose(fh);
- return err;
- }