Add checks for fgets() when reading proc
If expected proc headers are missing, catch and print error.
This commit is contained in:
parent
46dc73a57d
commit
38c867d2a8
|
|
@ -262,8 +262,11 @@ static int do_tunnels_list(struct ip6_tnl_parm *p)
|
|||
}
|
||||
|
||||
/* 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];
|
||||
|
|
|
|||
|
|
@ -128,7 +128,8 @@ void read_igmp(struct ma_info **result_p)
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,8 @@ static void read_viftable(void)
|
|||
if (!fp)
|
||||
return;
|
||||
|
||||
fgets(buf, sizeof(buf), fp);
|
||||
if (!fgets(buf, sizeof(buf), fp))
|
||||
return;
|
||||
|
||||
while (fgets(buf, sizeof(buf), fp)) {
|
||||
int vifi;
|
||||
|
|
@ -83,7 +84,8 @@ static void read_mroute_list(FILE *ofp)
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -407,8 +407,12 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
|
|||
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue