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>
exit(-1);
pos = ftell(stdin);
+ if (pos == -1) {
+ perror("Failed to restore: ftell");
+ exit(-1);
+ }
+
for (prio = 0; prio < 3; prio++) {
int err;
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);