ip route: check ftell, fseek return value

ftell() may return -1 in error case, which is not handled and
therefore pass a negative offset to fseek(). The return code of
fseek() is also not checked.

Reported-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
This commit is contained in:
Hangbin Liu 2016-09-08 10:26:57 +08:00 committed by Stephen Hemminger
parent f20f5f7990
commit bffb68b6c2
1 changed files with 9 additions and 1 deletions

View File

@ -1862,6 +1862,11 @@ static int iproute_restore(void)
exit(-1);
pos = ftell(stdin);
if (pos == -1) {
perror("Failed to restore: ftell");
exit(-1);
}
for (prio = 0; prio < 3; prio++) {
int err;
@ -1869,7 +1874,10 @@ static int iproute_restore(void)
if (err)
exit(err);
fseek(stdin, pos, SEEK_SET);
if (fseek(stdin, pos, SEEK_SET) == -1) {
perror("Failed to restore: fseek");
exit(-1);
}
}
exit(0);