If expected proc headers are missing, catch and print error.
}
/* skip two lines at the begenning of the file */
- fgets(buf, sizeof(buf), fp);
- fgets(buf, sizeof(buf), fp);
+ if (!fgets(buf, sizeof(buf), fp) ||
+ !fgets(buf, sizeof(buf), fp)) {
+ fprintf(stderr, "/proc/net/dev read error\n");
+ return -1;
+ }
while (fgets(buf, sizeof(buf), fp) != NULL) {
char name[IFNAMSIZ];
if (!fp)
return;
memset(&m, 0, sizeof(m));
- fgets(buf, sizeof(buf), fp);
+ if (!fgets(buf, sizeof(buf), fp))
+ return;
m.addr.family = AF_INET;
m.addr.bitlen = 32;
if (!fp)
return;
- fgets(buf, sizeof(buf), fp);
+ if (!fgets(buf, sizeof(buf), fp))
+ return;
while (fgets(buf, sizeof(buf), fp)) {
int vifi;
if (!fp)
return;
- fgets(buf, sizeof(buf), fp);
+ if (!fgets(buf, sizeof(buf), fp))
+ return;
while (fgets(buf, sizeof(buf), fp)) {
inet_prefix maddr, msrc;
return -1;
}
- fgets(buf, sizeof(buf), fp);
- fgets(buf, sizeof(buf), fp);
+ /* skip header lines */
+ if (!fgets(buf, sizeof(buf), fp) ||
+ !fgets(buf, sizeof(buf), fp)) {
+ fprintf(stderr, "/proc/net/dev read error\n");
+ return -1;
+ }
while (fgets(buf, sizeof(buf), fp) != NULL) {
int index, type;