From 2b3680ac611fe2e84da11c5347de1478ce07b01b Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 8 Feb 2016 23:57:32 -0800 Subject: [PATCH] SCP: Avoid potential file access error when producing SHOW VERSION output. --- scp.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/scp.c b/scp.c index 365d1850..3f7f0f3a 100644 --- a/scp.c +++ b/scp.c @@ -4379,19 +4379,20 @@ if (flag) { char *proc_arch3264 = getenv ("PROCESSOR_ARCHITEW6432"); char *tmpnam = _tempnam (NULL, "simh-ver"); char vercmd[PATH_MAX+1]; - char osversion[PATH_MAX+1]; + char osversion[PATH_MAX+1] = ""; FILE *f; sprintf (vercmd, "ver >%s", tmpnam); system (vercmd); - f = fopen (tmpnam, "r"); - memset (osversion, 0, sizeof(osversion)); - do { - if (NULL == fgets (osversion, sizeof(osversion)-1, f)) - break; - sim_trim_endspc (osversion); - } while (osversion[0] == '\0'); - fclose (f); + if ((f = fopen (tmpnam, "r"))) { + memset (osversion, 0, sizeof(osversion)); + do { + if (NULL == fgets (osversion, sizeof(osversion)-1, f)) + break; + sim_trim_endspc (osversion); + } while (osversion[0] == '\0'); + fclose (f); + } remove (tmpnam); free (tmpnam); fprintf (st, "\n\t\tOS: %s", osversion); @@ -4402,19 +4403,20 @@ if (flag) { if (1) { char *tmpnam = tempnam (NULL, "simh-ver"); char vercmd[2*PATH_MAX+1]; - char osversion[2*PATH_MAX+1]; + char osversion[2*PATH_MAX+1] = ""; FILE *f; sprintf (vercmd, "uname -a >%s", tmpnam); system (vercmd); - f = fopen (tmpnam, "r"); - memset (osversion, 0, sizeof(osversion)); - do { - if (NULL == fgets (osversion, sizeof(osversion)-1, f)) - break; - sim_trim_endspc (osversion); - } while (osversion[0] == '\0'); - fclose (f); + if ((f = fopen (tmpnam, "r"))) { + memset (osversion, 0, sizeof(osversion)); + do { + if (NULL == fgets (osversion, sizeof(osversion)-1, f)) + break; + sim_trim_endspc (osversion); + } while (osversion[0] == '\0'); + fclose (f); + } remove (tmpnam); free (tmpnam); fprintf (st, "\n\t\tOS: %s", osversion);