From 05515187ee346b80001b9436251ce4c2490605d5 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 15 Jan 2020 02:31:52 +0100 Subject: [PATCH] Various sanity measures in the Floppy image and TeleDisk codes. --- src/floppy/fdd_img.c | 3 ++- src/floppy/fdd_td0.c | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/floppy/fdd_img.c b/src/floppy/fdd_img.c index 5e0bfaacd..f040d2086 100644 --- a/src/floppy/fdd_img.c +++ b/src/floppy/fdd_img.c @@ -1103,7 +1103,8 @@ jump_if_fdf: /* The BPB readings appear to be valid, so let's set the values. */ if (fdi) { /* The image is a Japanese FDI, therefore we read the number of tracks from the header. */ - fseek(dev->f, 0x1C, SEEK_SET); + if (fseek(dev->f, 0x1C, SEEK_SET) == -1) + fatal("Japanese FDI: Failed when seeking to 0x1C\n"); fread(&(dev->tracks), 1, 4, dev->f); } else { if (!cqm && !fdf) { diff --git a/src/floppy/fdd_td0.c b/src/floppy/fdd_td0.c index fd4d4419f..6762f78f5 100644 --- a/src/floppy/fdd_td0.c +++ b/src/floppy/fdd_td0.c @@ -260,7 +260,8 @@ state_data_read(td0dsk_t *state, uint8_t *buf, uint16_t size) image_size = ftell(state->fdd_file); if (size > image_size - state->fdd_file_offset) size = (image_size - state->fdd_file_offset) & 0xffff; - fseek(state->fdd_file, state->fdd_file_offset, SEEK_SET); + if (fseek(state->fdd_file, state->fdd_file_offset, SEEK_SET) == -1) + fatal("TD0: Failed to seek in state_data_read()\n"); fread(buf, 1, size, state->fdd_file); state->fdd_file_offset += size; @@ -904,15 +905,15 @@ static void set_sector(int drive, int side, uint8_t c, uint8_t h, uint8_t r, uint8_t n) { td0_t *dev = td0[drive]; - int i = 0; + int i = 0, cyl = c; dev->current_sector_index[side] = 0; - if (c != dev->track) return; - for (i = 0; i < dev->track_spt[c][side]; i++) { - if ((dev->sects[c][side][i].track == c) && - (dev->sects[c][side][i].head == h) && - (dev->sects[c][side][i].sector == r) && - (dev->sects[c][side][i].size == n)) { + if (cyl != dev->track) return; + for (i = 0; i < dev->track_spt[cyl][side]; i++) { + if ((dev->sects[cyl][side][i].track == c) && + (dev->sects[cyl][side][i].head == h) && + (dev->sects[cyl][side][i].sector == r) && + (dev->sects[cyl][side][i].size == n)) { dev->current_sector_index[side] = i; } }