SCP: Avoid potential file access error when producing SHOW VERSION output.

This commit is contained in:
Mark Pizzolato 2016-02-08 23:57:32 -08:00
parent f285d52b1c
commit 2b3680ac61

10
scp.c
View file

@ -4379,12 +4379,12 @@ if (flag) {
char *proc_arch3264 = getenv ("PROCESSOR_ARCHITEW6432"); char *proc_arch3264 = getenv ("PROCESSOR_ARCHITEW6432");
char *tmpnam = _tempnam (NULL, "simh-ver"); char *tmpnam = _tempnam (NULL, "simh-ver");
char vercmd[PATH_MAX+1]; char vercmd[PATH_MAX+1];
char osversion[PATH_MAX+1]; char osversion[PATH_MAX+1] = "";
FILE *f; FILE *f;
sprintf (vercmd, "ver >%s", tmpnam); sprintf (vercmd, "ver >%s", tmpnam);
system (vercmd); system (vercmd);
f = fopen (tmpnam, "r"); if ((f = fopen (tmpnam, "r"))) {
memset (osversion, 0, sizeof(osversion)); memset (osversion, 0, sizeof(osversion));
do { do {
if (NULL == fgets (osversion, sizeof(osversion)-1, f)) if (NULL == fgets (osversion, sizeof(osversion)-1, f))
@ -4392,6 +4392,7 @@ if (flag) {
sim_trim_endspc (osversion); sim_trim_endspc (osversion);
} while (osversion[0] == '\0'); } while (osversion[0] == '\0');
fclose (f); fclose (f);
}
remove (tmpnam); remove (tmpnam);
free (tmpnam); free (tmpnam);
fprintf (st, "\n\t\tOS: %s", osversion); fprintf (st, "\n\t\tOS: %s", osversion);
@ -4402,12 +4403,12 @@ if (flag) {
if (1) { if (1) {
char *tmpnam = tempnam (NULL, "simh-ver"); char *tmpnam = tempnam (NULL, "simh-ver");
char vercmd[2*PATH_MAX+1]; char vercmd[2*PATH_MAX+1];
char osversion[2*PATH_MAX+1]; char osversion[2*PATH_MAX+1] = "";
FILE *f; FILE *f;
sprintf (vercmd, "uname -a >%s", tmpnam); sprintf (vercmd, "uname -a >%s", tmpnam);
system (vercmd); system (vercmd);
f = fopen (tmpnam, "r"); if ((f = fopen (tmpnam, "r"))) {
memset (osversion, 0, sizeof(osversion)); memset (osversion, 0, sizeof(osversion));
do { do {
if (NULL == fgets (osversion, sizeof(osversion)-1, f)) if (NULL == fgets (osversion, sizeof(osversion)-1, f))
@ -4415,6 +4416,7 @@ if (flag) {
sim_trim_endspc (osversion); sim_trim_endspc (osversion);
} while (osversion[0] == '\0'); } while (osversion[0] == '\0');
fclose (f); fclose (f);
}
remove (tmpnam); remove (tmpnam);
free (tmpnam); free (tmpnam);
fprintf (st, "\n\t\tOS: %s", osversion); fprintf (st, "\n\t\tOS: %s", osversion);