--- np2/fdd/sxsi.c 2004/02/13 20:31:55 1.11 +++ np2/fdd/sxsi.c 2004/03/23 13:32:50 1.12 @@ -345,11 +345,11 @@ const _SXSIDEV *sxsi; if (sxsi == NULL) { return(0x60); } - pos = pos * sxsi->size + sxsi->headersize; - r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); - if (r == -1) { + if ((pos < 0) || (pos >= sxsi->totals)) { return(0x40); } + pos = pos * sxsi->size + sxsi->headersize; + r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); if (pos != r) { return(0xd0); } @@ -375,11 +375,11 @@ const _SXSIDEV *sxsi; if (sxsi == NULL) { return(0x60); } - pos = pos * sxsi->size + sxsi->headersize; - r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); - if (r == -1) { + if ((pos < 0) || (pos >= sxsi->totals)) { return(0x40); } + pos = pos * sxsi->size + sxsi->headersize; + r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); if (pos != r) { return(0xd0); } @@ -408,11 +408,11 @@ const _SXSIDEV *sxsi; if (sxsi == NULL) { return(0x60); } - pos = pos * sxsi->size + sxsi->headersize; - r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); - if (r == -1) { + if ((pos < 0) || (pos >= sxsi->totals)) { return(0x40); } + pos = pos * sxsi->size + sxsi->headersize; + r = file_seek((FILEH)sxsi->fh, pos, FSEEK_SET); if (pos != r) { return(0xd0); }