Fix to protect fseek() to go out of limits

Called by dcraw with some photos caused crashes
This commit is contained in:
ffsup2 2011-02-14 23:21:56 +01:00
parent 28d5c0f6c2
commit 543e4f81ca

View File

@ -44,6 +44,7 @@ inline int feof (IMFILE* f) {
} }
inline void fseek (IMFILE* f, int p, int how) { inline void fseek (IMFILE* f, int p, int how) {
int fpos = f->pos;
if (how==SEEK_SET) if (how==SEEK_SET)
f->pos = p; f->pos = p;
@ -51,6 +52,9 @@ inline void fseek (IMFILE* f, int p, int how) {
f->pos += p; f->pos += p;
else if (how==SEEK_END) else if (how==SEEK_END)
f->pos = f->size-p; f->pos = f->size-p;
if (f->pos < 0 || f->pos> f->size)
f->pos = fpos;
} }
inline int fgetc (IMFILE* f) { inline int fgetc (IMFILE* f) {