BESM6: Added checks for calls to fseek (COVERITY)
This commit is contained in:
parent
1e10080bc6
commit
828fe4c901
2 changed files with 38 additions and 31 deletions
|
@ -287,9 +287,10 @@ void disk_write (UNIT *u)
|
||||||
if (disk_dev.dctrl)
|
if (disk_dev.dctrl)
|
||||||
besm6_debug ("::: запись МД %o зона %04o память %05o-%05o",
|
besm6_debug ("::: запись МД %o зона %04o память %05o-%05o",
|
||||||
c->dev, c->zone, c->memory, c->memory + 1023);
|
c->dev, c->zone, c->memory, c->memory + 1023);
|
||||||
fseek (u->fileref, ZONE_SIZE * c->zone * 8, SEEK_SET);
|
if (fseek (u->fileref, ZONE_SIZE * c->zone * 8, SEEK_SET) == 0) {
|
||||||
sim_fwrite (c->sysdata, 8, 8, u->fileref);
|
sim_fwrite (c->sysdata, 8, 8, u->fileref);
|
||||||
sim_fwrite (&memory [c->memory], 8, 1024, u->fileref);
|
sim_fwrite (&memory [c->memory], 8, 1024, u->fileref);
|
||||||
|
}
|
||||||
if (ferror (u->fileref))
|
if (ferror (u->fileref))
|
||||||
longjmp (cpu_halt, SCPE_IOERR);
|
longjmp (cpu_halt, SCPE_IOERR);
|
||||||
}
|
}
|
||||||
|
@ -301,11 +302,14 @@ void disk_write_track (UNIT *u)
|
||||||
if (disk_dev.dctrl)
|
if (disk_dev.dctrl)
|
||||||
besm6_debug ("::: запись МД %o полузона %04o.%d память %05o-%05o",
|
besm6_debug ("::: запись МД %o полузона %04o.%d память %05o-%05o",
|
||||||
c->dev, c->zone, c->track, c->memory, c->memory + 511);
|
c->dev, c->zone, c->track, c->memory, c->memory + 511);
|
||||||
fseek (u->fileref, (ZONE_SIZE*c->zone + 4*c->track) * 8, SEEK_SET);
|
if (fseek (u->fileref, (ZONE_SIZE*c->zone + 4*c->track) * 8,
|
||||||
sim_fwrite (c->sysdata + 4*c->track, 8, 4, u->fileref);
|
SEEK_SET) == 0) {
|
||||||
fseek (u->fileref, (8 + ZONE_SIZE*c->zone + 512*c->track) * 8,
|
sim_fwrite (c->sysdata + 4*c->track, 8, 4, u->fileref);
|
||||||
SEEK_SET);
|
if (fseek (u->fileref, (8 + ZONE_SIZE*c->zone + 512*c->track) * 8,
|
||||||
sim_fwrite (&memory [c->memory], 8, 512, u->fileref);
|
SEEK_SET) == 0) {
|
||||||
|
sim_fwrite (&memory [c->memory], 8, 512, u->fileref);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ferror (u->fileref))
|
if (ferror (u->fileref))
|
||||||
longjmp (cpu_halt, SCPE_IOERR);
|
longjmp (cpu_halt, SCPE_IOERR);
|
||||||
}
|
}
|
||||||
|
@ -358,8 +362,8 @@ void disk_read (UNIT *u)
|
||||||
"::: чтение МД %o зона %04o служебные слова" :
|
"::: чтение МД %o зона %04o служебные слова" :
|
||||||
"::: чтение МД %o зона %04o память %05o-%05o",
|
"::: чтение МД %o зона %04o память %05o-%05o",
|
||||||
c->dev, c->zone, c->memory, c->memory + 1023);
|
c->dev, c->zone, c->memory, c->memory + 1023);
|
||||||
fseek (u->fileref, ZONE_SIZE * c->zone * 8, SEEK_SET);
|
if (fseek (u->fileref, ZONE_SIZE * c->zone * 8, SEEK_SET) != 0 ||
|
||||||
if (sim_fread (c->sysdata, 8, 8, u->fileref) != 8) {
|
sim_fread (c->sysdata, 8, 8, u->fileref) != 8) {
|
||||||
/* Чтение неинициализированного диска */
|
/* Чтение неинициализированного диска */
|
||||||
disk_fail |= c->mask_fail;
|
disk_fail |= c->mask_fail;
|
||||||
return;
|
return;
|
||||||
|
@ -395,16 +399,16 @@ void disk_read_track (UNIT *u)
|
||||||
"::: чтение МД %o полузона %04o.%d служебные слова" :
|
"::: чтение МД %o полузона %04o.%d служебные слова" :
|
||||||
"::: чтение МД %o полузона %04o.%d память %05o-%05o",
|
"::: чтение МД %o полузона %04o.%d память %05o-%05o",
|
||||||
c->dev, c->zone, c->track, c->memory, c->memory + 511);
|
c->dev, c->zone, c->track, c->memory, c->memory + 511);
|
||||||
fseek (u->fileref, (ZONE_SIZE*c->zone + 4*c->track) * 8, SEEK_SET);
|
if (fseek (u->fileref, (ZONE_SIZE*c->zone + 4*c->track) * 8, SEEK_SET) != 0 ||
|
||||||
if (sim_fread (c->sysdata + 4*c->track, 8, 4, u->fileref) != 4) {
|
sim_fread (c->sysdata + 4*c->track, 8, 4, u->fileref) != 4) {
|
||||||
/* Чтение неинициализированного диска */
|
/* Чтение неинициализированного диска */
|
||||||
disk_fail |= c->mask_fail;
|
disk_fail |= c->mask_fail;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (! (c->op & DISK_READ_SYSDATA)) {
|
if (! (c->op & DISK_READ_SYSDATA)) {
|
||||||
fseek (u->fileref, (8 + ZONE_SIZE*c->zone + 512*c->track) * 8,
|
if (fseek (u->fileref, (8 + ZONE_SIZE*c->zone + 512*c->track) * 8,
|
||||||
SEEK_SET);
|
SEEK_SET) != 0 ||
|
||||||
if (sim_fread (&memory [c->memory], 8, 512, u->fileref) != 512) {
|
sim_fread (&memory [c->memory], 8, 512, u->fileref) != 512) {
|
||||||
/* Чтение неинициализированного диска */
|
/* Чтение неинициализированного диска */
|
||||||
disk_fail |= c->mask_fail;
|
disk_fail |= c->mask_fail;
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -180,9 +180,10 @@ void drum_write (UNIT *u)
|
||||||
|
|
||||||
ctlr = (u == &drum_unit[1]);
|
ctlr = (u == &drum_unit[1]);
|
||||||
sysdata = ctlr ? &memory [020] : &memory [010];
|
sysdata = ctlr ? &memory [020] : &memory [010];
|
||||||
fseek (u->fileref, ZONE_SIZE * drum_zone * 8, SEEK_SET);
|
if (fseek (u->fileref, ZONE_SIZE * drum_zone * 8, SEEK_SET) == 0) {
|
||||||
sim_fwrite (sysdata, 8, 8, u->fileref);
|
sim_fwrite (sysdata, 8, 8, u->fileref);
|
||||||
sim_fwrite (&memory [drum_memory], 8, 1024, u->fileref);
|
sim_fwrite (&memory [drum_memory], 8, 1024, u->fileref);
|
||||||
|
}
|
||||||
if (ferror (u->fileref))
|
if (ferror (u->fileref))
|
||||||
longjmp (cpu_halt, SCPE_IOERR);
|
longjmp (cpu_halt, SCPE_IOERR);
|
||||||
}
|
}
|
||||||
|
@ -194,12 +195,14 @@ void drum_write_sector (UNIT *u)
|
||||||
|
|
||||||
ctlr = (u == &drum_unit[1]);
|
ctlr = (u == &drum_unit[1]);
|
||||||
sysdata = ctlr ? &memory [020] : &memory [010];
|
sysdata = ctlr ? &memory [020] : &memory [010];
|
||||||
fseek (u->fileref, (ZONE_SIZE*drum_zone + drum_sector*2) * 8,
|
if (fseek (u->fileref, (ZONE_SIZE*drum_zone + drum_sector*2) * 8,
|
||||||
SEEK_SET);
|
SEEK_SET) == 0) {
|
||||||
sim_fwrite (&sysdata [drum_sector*2], 8, 2, u->fileref);
|
sim_fwrite (&sysdata [drum_sector*2], 8, 2, u->fileref);
|
||||||
fseek (u->fileref, (ZONE_SIZE*drum_zone + 8 + drum_sector*256) * 8,
|
if (fseek (u->fileref, (ZONE_SIZE*drum_zone + 8 + drum_sector*256) * 8,
|
||||||
SEEK_SET);
|
SEEK_SET) == 0) {
|
||||||
sim_fwrite (&memory [drum_memory], 8, 256, u->fileref);
|
sim_fwrite (&memory [drum_memory], 8, 256, u->fileref);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ferror (u->fileref))
|
if (ferror (u->fileref))
|
||||||
longjmp (cpu_halt, SCPE_IOERR);
|
longjmp (cpu_halt, SCPE_IOERR);
|
||||||
}
|
}
|
||||||
|
@ -214,8 +217,8 @@ void drum_read (UNIT *u)
|
||||||
|
|
||||||
ctlr = (u == &drum_unit[1]);
|
ctlr = (u == &drum_unit[1]);
|
||||||
sysdata = ctlr ? &memory [020] : &memory [010];
|
sysdata = ctlr ? &memory [020] : &memory [010];
|
||||||
fseek (u->fileref, ZONE_SIZE * drum_zone * 8, SEEK_SET);
|
if (fseek (u->fileref, ZONE_SIZE * drum_zone * 8, SEEK_SET) != 0 ||
|
||||||
if (sim_fread (sysdata, 8, 8, u->fileref) != 8) {
|
sim_fread (sysdata, 8, 8, u->fileref) != 8) {
|
||||||
/* Чтение неинициализированного барабана */
|
/* Чтение неинициализированного барабана */
|
||||||
drum_fail |= 0100 >> ctlr;
|
drum_fail |= 0100 >> ctlr;
|
||||||
return;
|
return;
|
||||||
|
@ -237,16 +240,16 @@ void drum_read_sector (UNIT *u)
|
||||||
|
|
||||||
ctlr = (u == &drum_unit[1]);
|
ctlr = (u == &drum_unit[1]);
|
||||||
sysdata = ctlr ? &memory [020] : &memory [010];
|
sysdata = ctlr ? &memory [020] : &memory [010];
|
||||||
fseek (u->fileref, (ZONE_SIZE*drum_zone + drum_sector*2) * 8, SEEK_SET);
|
if (fseek (u->fileref, (ZONE_SIZE*drum_zone + drum_sector*2) * 8, SEEK_SET) != 0 ||
|
||||||
if (sim_fread (&sysdata [drum_sector*2], 8, 2, u->fileref) != 2) {
|
sim_fread (&sysdata [drum_sector*2], 8, 2, u->fileref) != 2) {
|
||||||
/* Чтение неинициализированного барабана */
|
/* Чтение неинициализированного барабана */
|
||||||
drum_fail |= 0100 >> ctlr;
|
drum_fail |= 0100 >> ctlr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (! (drum_op & DRUM_READ_SYSDATA)) {
|
if (! (drum_op & DRUM_READ_SYSDATA)) {
|
||||||
fseek (u->fileref, (ZONE_SIZE*drum_zone + 8 + drum_sector*256) * 8,
|
if (fseek (u->fileref, (ZONE_SIZE*drum_zone + 8 + drum_sector*256) * 8,
|
||||||
SEEK_SET);
|
SEEK_SET) != 0 ||
|
||||||
if (sim_fread (&memory[drum_memory], 8, 256, u->fileref) != 256) {
|
sim_fread (&memory[drum_memory], 8, 256, u->fileref) != 256) {
|
||||||
/* Чтение неинициализированного барабана */
|
/* Чтение неинициализированного барабана */
|
||||||
drum_fail |= 0100 >> ctlr;
|
drum_fail |= 0100 >> ctlr;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue