From 3530f0de7d56df0711f03e565c22cf66f3566155 Mon Sep 17 00:00:00 2001 From: Bob Supnik Date: Thu, 9 Mar 2017 19:50:01 -0800 Subject: [PATCH] PDP10: Added mask on EXE repeat count (COVERITY) --- PDP10/pdp10_sys.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PDP10/pdp10_sys.c b/PDP10/pdp10_sys.c index e2a3503e..3f4a3ee8 100644 --- a/PDP10/pdp10_sys.c +++ b/PDP10/pdp10_sys.c @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 09-Mar-17 RMS Added mask on EXE repeat count (COVERITY) 20-Jan-17 RMS Fixed RIM loader to handle ITS and RIM10B formats 04-Apr-11 RMS Removed DEUNA/DELUA support - never implemented 01-Feb-07 RMS Added CD support @@ -333,7 +334,7 @@ do { switch (bty) { /* case type */ case EXE_DIR: /* directory */ - if (ndir) /* got one */ + if (ndir != 0) /* got one */ return SCPE_FMT; ndir = fxread (dirbuf, sizeof (d10), bsz, fileref); if (ndir < bsz) /* error */ @@ -367,7 +368,7 @@ do { for (i = 0; i < ndir; i = i + 2) { /* loop thru dir */ fpage = (int32) (dirbuf[i] & RMASK); /* file page */ mpage = (int32) (dirbuf[i + 1] & RMASK); /* memory page */ - rpt = (int32) ((dirbuf[i + 1] >> 27) + 1); /* repeat count */ + rpt = ((int32) ((dirbuf[i + 1] >> 27) + 1)) & 0777; /* repeat count */ for (j = 0; j < rpt; j++, mpage++) { /* loop thru rpts */ if (fpage) { /* file pages? */ fseek (fileref, (fpage << PAG_V_PN) * sizeof (d10), SEEK_SET); @@ -385,7 +386,7 @@ for (i = 0; i < ndir; i = i + 2) { /* loop thru dir */ } /* end rpt */ } /* end directory */ if (entvec && entbuf[1]) - saved_PC = (int32) entbuf[1] & RMASK; /* start addr */ + saved_PC = (int32) (entbuf[1] & RMASK); /* start addr */ return SCPE_OK; }