SCP: Avoid potential invalid pointer reference (Coverity)

This commit is contained in:
Mark Pizzolato 2017-03-29 07:02:46 -07:00
parent cb6b0a526a
commit fa7e350c78
2 changed files with 6 additions and 4 deletions

7
scp.c
View file

@ -6802,8 +6802,10 @@ fputc ('\n', st); /* start on a new line *
if (v >= SCPE_BASE) /* SCP error? */ if (v >= SCPE_BASE) /* SCP error? */
fputs (sim_error_text (v), st); /* print it from the SCP list */ fputs (sim_error_text (v), st); /* print it from the SCP list */
else { /* VM error */ else { /* VM error */
fputs (sim_stop_messages [v], st); /* print the VM-specific message */ if (sim_stop_messages [v])
fputs (sim_stop_messages [v], st); /* print the VM-specific message */
else
fprintf (st, "Unknown %s simulator stop code %d", sim_name, v);
if ((sim_vm_fprint_stopped != NULL) && /* if a VM-specific stop handler is defined */ if ((sim_vm_fprint_stopped != NULL) && /* if a VM-specific stop handler is defined */
(!sim_vm_fprint_stopped (st, v))) /* call it; if it returned FALSE, */ (!sim_vm_fprint_stopped (st, v))) /* call it; if it returned FALSE, */
return; /* we're done */ return; /* we're done */
@ -6831,7 +6833,6 @@ if ((dptr != NULL) && (dptr->examine != NULL)) {
} }
} }
fprintf (st, "\n"); fprintf (st, "\n");
return;
} }
void fprint_stopped (FILE *st, t_stat v) void fprint_stopped (FILE *st, t_stat v)

3
scp.h
View file

@ -147,6 +147,7 @@ const char *sim_dname (DEVICE *dptr);
const char *sim_uname (UNIT *dptr); const char *sim_uname (UNIT *dptr);
const char *sim_set_uname (UNIT *uptr, const char *uname); const char *sim_set_uname (UNIT *uptr, const char *uname);
t_stat get_yn (const char *ques, t_stat deflt); t_stat get_yn (const char *ques, t_stat deflt);
char *sim_trim_endspc (char *cptr);
int sim_isspace (char c); int sim_isspace (char c);
int sim_islower (char c); int sim_islower (char c);
int sim_isalpha (char c); int sim_isalpha (char c);
@ -309,7 +310,7 @@ void sim_aio_activate (ACTIVATE_API caller, UNIT *uptr, int32 event_time);
extern char sim_name[]; extern char sim_name[];
extern DEVICE *sim_devices[]; extern DEVICE *sim_devices[];
extern REG *sim_PC; extern REG *sim_PC;
extern const char *sim_stop_messages[]; extern const char *sim_stop_messages[SCPE_BASE];
extern t_stat sim_instr (void); extern t_stat sim_instr (void);
extern t_stat sim_load (FILE *ptr, CONST char *cptr, CONST char *fnam, int flag); extern t_stat sim_load (FILE *ptr, CONST char *cptr, CONST char *fnam, int flag);
extern int32 sim_emax; extern int32 sim_emax;