From 543e4f81cababb00d3d52b95a6f3f735f5f8c20e Mon Sep 17 00:00:00 2001 From: ffsup2 Date: Mon, 14 Feb 2011 23:21:56 +0100 Subject: [PATCH] Fix to protect fseek() to go out of limits Called by dcraw with some photos caused crashes --- rtengine/myfile.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rtengine/myfile.h b/rtengine/myfile.h index c8ed35a85..2222eab37 100644 --- a/rtengine/myfile.h +++ b/rtengine/myfile.h @@ -44,6 +44,7 @@ inline int feof (IMFILE* f) { } inline void fseek (IMFILE* f, int p, int how) { + int fpos = f->pos; if (how==SEEK_SET) f->pos = p; @@ -51,6 +52,9 @@ inline void fseek (IMFILE* f, int p, int how) { f->pos += p; else if (how==SEEK_END) f->pos = f->size-p; + + if (f->pos < 0 || f->pos> f->size) + f->pos = fpos; } inline int fgetc (IMFILE* f) {