From 0f41c24cb8d175ac8ebb53521b624a625add348a Mon Sep 17 00:00:00 2001 From: Bill Beech Date: Fri, 17 Mar 2017 14:24:44 -0700 Subject: [PATCH] ibmpc, isys80xx, imds-225: Fix Coverity identified problems --- IBMPC-Systems/common/i8088.c | 20 +++++++++----------- IBMPC-Systems/common/i8237.c | 18 +++++++++++++++++- IBMPC-Systems/common/pcbus.c | 1 + IBMPC-Systems/ibmpcxt/ibmpcxt.c | 5 +++++ Intel-Systems/common/isbc201.c | 5 +++-- Intel-Systems/common/isbc202.c | 5 +++-- Intel-Systems/common/isbc208.c | 2 ++ Intel-Systems/common/zx200a.c | 2 ++ 8 files changed, 42 insertions(+), 16 deletions(-) diff --git a/IBMPC-Systems/common/i8088.c b/IBMPC-Systems/common/i8088.c index 2df1e7af..b43e0f0b 100644 --- a/IBMPC-Systems/common/i8088.c +++ b/IBMPC-Systems/common/i8088.c @@ -252,10 +252,6 @@ union { #define CX (C.w) #define DX (D.w) -/* macros for handling IP and SP */ -#define INC_IP1 (++IP & ADDRMASK16) /* increment IP one byte */ -#define INC_IP2 ((IP += 2) & ADDRMASK16) /* increment IP two bytes */ - /* storage for the rest of the registers */ int32 DI; /* Source Index Register */ int32 SI; /* Destination Index Register */ @@ -3201,7 +3197,8 @@ int32 fetch_byte(int32 flag) break; } } - IP = INC_IP1; /* increment IP */ + IP++; /* increment IP */ + IP &= ADDRMASK16; return val; } @@ -3213,7 +3210,8 @@ int32 fetch_word(void) val |= get_smbyte(SEG_CS, IP + 1) << 8; /* fetch high byte */ // if (i8088_dev.dctrl & DEBUG_asm) // sim_printf("0%04XH", val); - IP = INC_IP2; /* increment IP */ + IP += 2;; /* increment IP */ + IP &= ADDRMASK16; return val; } @@ -3251,7 +3249,7 @@ void i86_intr_raise(uint8 num) uint32 get_rbyte(uint32 reg) { - uint32 val; + uint32 val = 0; switch(reg) { case 0: val = AL; break; @@ -3270,7 +3268,7 @@ uint32 get_rbyte(uint32 reg) uint32 get_rword(uint32 reg) { - uint32 val; + uint32 val = 0; switch(reg) { case 0: val = AX; break; @@ -3337,7 +3335,7 @@ void set_segreg(uint32 reg) uint32 get_ea(uint32 mrr) { - uint32 MOD, REG, RM, DISP, EA; + uint32 MOD, REG, RM, DISP, EA = 0; get_mrr_dec(mrr, &MOD, ®, &RM); switch(MOD) { @@ -4759,7 +4757,7 @@ t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, if (strchr(opcode[inst], ' ') != NULL) fprintf (of, ","); else fprintf (of, " "); - fprintf (of, "%h", val[1]); + fprintf (of, "%x", val[1]); } if (oplen[inst] == 3) { adr = val[1] & 0xFF; @@ -4767,7 +4765,7 @@ t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, if (strchr(opcode[inst], ' ') != NULL) fprintf (of, ","); else fprintf (of, " "); - fprintf (of, "%h", adr); + fprintf (of, "%x", adr); } return -(oplen[inst] - 1); } diff --git a/IBMPC-Systems/common/i8237.c b/IBMPC-Systems/common/i8237.c index 83fc2b37..601eed39 100644 --- a/IBMPC-Systems/common/i8237.c +++ b/IBMPC-Systems/common/i8237.c @@ -375,7 +375,7 @@ DEVICE i8237_dev = { t_stat i8237_svc(UNIT *uptr) { - sim_printf("uptr=%08X\n", uptr); + sim_printf("uptr=%08X\n", (long) uptr); sim_activate (&i8237_unit[uptr->u6], i8237_unit[uptr->u6].wait); return SCPE_OK; } @@ -504,6 +504,7 @@ uint8 i8237_r0x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r1x(t_bool io, uint8 data) @@ -534,6 +535,7 @@ uint8 i8237_r1x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r2x(t_bool io, uint8 data) @@ -564,6 +566,7 @@ uint8 i8237_r2x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r3x(t_bool io, uint8 data) @@ -594,6 +597,7 @@ uint8 i8237_r3x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r4x(t_bool io, uint8 data) @@ -624,6 +628,7 @@ uint8 i8237_r4x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r5x(t_bool io, uint8 data) @@ -654,6 +659,7 @@ uint8 i8237_r5x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r6x(t_bool io, uint8 data) @@ -684,6 +690,7 @@ uint8 i8237_r6x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r7x(t_bool io, uint8 data) @@ -714,6 +721,7 @@ uint8 i8237_r7x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r8x(t_bool io, uint8 data) @@ -730,6 +738,7 @@ uint8 i8237_r8x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_r9x(t_bool io, uint8 data) @@ -746,6 +755,7 @@ uint8 i8237_r9x(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rAx(t_bool io, uint8 data) @@ -787,6 +797,7 @@ uint8 i8237_rAx(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rBx(t_bool io, uint8 data) @@ -803,6 +814,7 @@ uint8 i8237_rBx(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rCx(t_bool io, uint8 data) @@ -819,6 +831,7 @@ uint8 i8237_rCx(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rDx(t_bool io, uint8 data) @@ -835,6 +848,7 @@ uint8 i8237_rDx(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rEx(t_bool io, uint8 data) @@ -851,6 +865,7 @@ uint8 i8237_rEx(t_bool io, uint8 data) return 0; } } + return 0; } uint8 i8237_rFx(t_bool io, uint8 data) @@ -867,6 +882,7 @@ uint8 i8237_rFx(t_bool io, uint8 data) return 0; } } + return 0; } /* end of i8237.c */ diff --git a/IBMPC-Systems/common/pcbus.c b/IBMPC-Systems/common/pcbus.c index 68c05dcb..ed198f47 100644 --- a/IBMPC-Systems/common/pcbus.c +++ b/IBMPC-Systems/common/pcbus.c @@ -423,6 +423,7 @@ uint8 nulldev(t_bool flag, uint8 data) port, flag, data); if (flag == 0) /* if we got here, no valid I/O device */ return 0xFF; + return 0; } uint16 reg_dev(uint8 (*routine)(t_bool io, uint8 data), uint16 port) diff --git a/IBMPC-Systems/ibmpcxt/ibmpcxt.c b/IBMPC-Systems/ibmpcxt/ibmpcxt.c index 469293a2..22c95ed9 100644 --- a/IBMPC-Systems/ibmpcxt/ibmpcxt.c +++ b/IBMPC-Systems/ibmpcxt/ibmpcxt.c @@ -100,6 +100,7 @@ uint8 dmapag0(t_bool io, uint8 data) dmapagreg0 = data; //sim_printf("dmapag0: dmapagreg0=%04X\n", data); } + return 0; } uint8 dmapag1(t_bool io, uint8 data) @@ -110,6 +111,7 @@ uint8 dmapag1(t_bool io, uint8 data) dmapagreg1 = data; //sim_printf("dmapag1: dmapagreg1=%04X\n", data); } + return 0; } uint8 dmapag2(t_bool io, uint8 data) @@ -120,6 +122,7 @@ uint8 dmapag2(t_bool io, uint8 data) dmapagreg2 = data; //sim_printf("dmapag2: dmapagreg2=%04X\n", data); } + return 0; } uint8 dmapag3(t_bool io, uint8 data) @@ -131,6 +134,7 @@ uint8 dmapag3(t_bool io, uint8 data) dmapagreg3 = data; //sim_printf("dmapag3: dmapagreg3=%04X\n", data); } + return 0; } uint8 enbnmi(t_bool io, uint8 data) @@ -146,6 +150,7 @@ uint8 enbnmi(t_bool io, uint8 data) //sim_printf("enbnmi: NMI disabled\n"); } } + return 0; } /* get a byte from memory - handle RAM, ROM, I/O, and Multibus memory */ diff --git a/Intel-Systems/common/isbc201.c b/Intel-Systems/common/isbc201.c index afab5b05..e0fd9aa0 100644 --- a/Intel-Systems/common/isbc201.c +++ b/Intel-Systems/common/isbc201.c @@ -391,12 +391,14 @@ t_stat isbc201_attach (UNIT *uptr, CONST char *cptr) fseek(fp, 0, SEEK_SET); if (flen == -1) { sim_printf(" isbc201_attach: File error\n"); + fclose(fp); return SCPE_IOERR; } if (fdc201[fdcnum].fdd[fddnum].buf == NULL) { /* no buffer allocated */ fdc201[fdcnum].fdd[fddnum].buf = (uint8 *)malloc(flen); if (fdc201[fdcnum].fdd[fddnum].buf == NULL) { sim_printf(" isbc201_attach: Malloc error\n"); + fclose(fp); return SCPE_MEM; } } @@ -450,8 +452,7 @@ uint8 isbc201_get_dn(void) { int i; -// for (i=0; i= fdc201[i].baseport && port <= fdc201[i].baseport + 7) return i; sim_printf("isbc201_get_dn: port %04X not in isbc202 device table\n", port); diff --git a/Intel-Systems/common/isbc202.c b/Intel-Systems/common/isbc202.c index 8d183840..3ada6d07 100644 --- a/Intel-Systems/common/isbc202.c +++ b/Intel-Systems/common/isbc202.c @@ -405,12 +405,14 @@ t_stat isbc202_attach (UNIT *uptr, CONST char *cptr) fseek(fp, 0, SEEK_SET); if (flen == -1) { sim_printf(" isbc202_attach: File error\n"); + fclose(fp); return SCPE_IOERR; } if (fdc202[fdcnum].fdd[fddnum].buf == NULL) { /* no buffer allocated */ fdc202[fdcnum].fdd[fddnum].buf = (uint8 *)malloc(flen); if (fdc202[fdcnum].fdd[fddnum].buf == NULL) { sim_printf(" isbc202_attach: Malloc error\n"); + fclose(fp); return SCPE_MEM; } } @@ -477,8 +479,7 @@ uint8 isbc202_get_dn(void) { int i; -// for (i=0; i= fdc202[i].baseport && port <= fdc202[i].baseport + 7) return i; sim_printf("isbc202_get_dn: port %04X not in isbc202 device table\n", port); diff --git a/Intel-Systems/common/isbc208.c b/Intel-Systems/common/isbc208.c index b5612f75..dd7f5a6a 100644 --- a/Intel-Systems/common/isbc208.c +++ b/Intel-Systems/common/isbc208.c @@ -1071,12 +1071,14 @@ t_stat isbc208_attach (UNIT *uptr, CONST char *cptr) fseek(fp, 0, SEEK_SET); if (flen == -1) { sim_printf(" isbc208_attach: File error\n"); + fclose(fp); return SCPE_IOERR; } if (isbc208_buf[uptr->u6] == NULL) { /* no buffer allocated */ isbc208_buf[uptr->u6] = (uint8 *)malloc(flen); if (isbc208_buf[uptr->u6] == NULL) { sim_printf(" iSBC208_attach: Malloc error\n"); + fclose(fp); return SCPE_MEM; } } diff --git a/Intel-Systems/common/zx200a.c b/Intel-Systems/common/zx200a.c index cfaa131d..f6154a46 100644 --- a/Intel-Systems/common/zx200a.c +++ b/Intel-Systems/common/zx200a.c @@ -420,12 +420,14 @@ t_stat zx200a_attach (UNIT *uptr, CONST char *cptr) fseek(fp, 0, SEEK_SET); if (flen == -1) { sim_printf(" zx200a_attach: File error\n"); + fclose(fp); return SCPE_IOERR; } if (zx200a[fdcnum].fdd[fddnum].buf == NULL) { /* no buffer allocated */ zx200a[fdcnum].fdd[fddnum].buf = (uint8 *)malloc(flen); if (zx200a[fdcnum].fdd[fddnum].buf == NULL) { sim_printf(" zx200a_attach: Malloc error\n"); + fclose(fp); return SCPE_MEM; } }