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:
parent
f20f5f7990
commit
bffb68b6c2
10
ip/iproute.c
10
ip/iproute.c
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue