SCP: Avoid potential file access error when producing SHOW VERSION output.
This commit is contained in:
parent
f285d52b1c
commit
2b3680ac61
1 changed files with 20 additions and 18 deletions
38
scp.c
38
scp.c
|
@ -4379,19 +4379,20 @@ 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))
|
||||||
break;
|
break;
|
||||||
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,19 +4403,20 @@ 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))
|
||||||
break;
|
break;
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue