The math in skip_to() was the wrong way round and allocated a
variable size array on the stack with a massively negative size.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
/* fseek may drop buffered data, avoid it for small seeks */
old_offset = ftell(file);
- if (offset > old_offset && old_offset - offset <= BUFSIZ) {
- size_t skip_bytes = old_offset - offset;
+ if (offset > old_offset && offset - old_offset <= BUFSIZ) {
+ size_t skip_bytes = offset - old_offset;
char buf[skip_bytes];
if (fread(buf, skip_bytes, 1, file) != skip_bytes)