diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-02-22 16:49:56 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-02-22 16:49:56 +0100 |
commit | ca86e91dd660ae9abc4f6eace620061ac695f847 (patch) | |
tree | cc184eb0c268eaa3d6610ee76c0bc526d5c95839 /tools | |
parent | c3b6454d801638b091b51fe62937e6831a3a37b2 (diff) | |
download | ffmpeg-ca86e91dd660ae9abc4f6eace620061ac695f847.tar.gz |
tools/trasher: Check fseek returns
Fixes CID733726
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/trasher.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/trasher.c b/tools/trasher.c index aaa09f4ca8..0b89cfed87 100644 --- a/tools/trasher.c +++ b/tools/trasher.c @@ -30,6 +30,15 @@ static uint32_t ran(void) return state = state * 1664525 + 1013904223; } +static void checked_seek(FILE *stream, int64_t offset, int whence) +{ + offset = fseek(stream, offset, whence); + if (offset < 0) { + fprintf(stderr, "seek failed\n"); + exit(1); + } +} + int main(int argc, char **argv) { FILE *f; @@ -49,17 +58,14 @@ int main(int argc, char **argv) maxburst = atoi(argv[3]); state = atoi(argv[4]); - fseek(f, 0, SEEK_END); + checked_seek(f, 0, SEEK_END); length = ftell(f); - fseek(f, 0, SEEK_SET); + checked_seek(f, 0, SEEK_SET); while (count--) { int burst = 1 + ran() * (uint64_t) (abs(maxburst) - 1) / UINT32_MAX; int pos = ran() * (uint64_t) length / UINT32_MAX; - if (fseek(f, pos, SEEK_SET) < 0) { - fprintf(stderr, "seek failed\n"); - return 1; - } + checked_seek(f, pos, SEEK_SET); if (maxburst < 0) burst = -maxburst; |