SCP: Coverity fixes
This commit is contained in:
parent
a1a916f819
commit
e3dbe93e35
1 changed files with 40 additions and 36 deletions
32
scp.c
32
scp.c
|
@ -2911,15 +2911,16 @@ if (cptr == NULL) {
|
||||||
else
|
else
|
||||||
cptr2 = NULL;
|
cptr2 = NULL;
|
||||||
docmdp = find_cmd ("DO");
|
docmdp = find_cmd ("DO");
|
||||||
if (docmdp && cptr && (sizeof (nbuf) > strlen (cptr) + strlen ("/simh.ini") + 3)) {
|
if (docmdp) {
|
||||||
|
if (cptr && (sizeof (nbuf) > strlen (cptr) + strlen ("/simh.ini") + 3)) {
|
||||||
snprintf(nbuf, sizeof (nbuf), "\"%s%s%ssimh.ini\"", cptr2 ? cptr2 : "", cptr, strchr (cptr, '/') ? "/" : "\\");
|
snprintf(nbuf, sizeof (nbuf), "\"%s%s%ssimh.ini\"", cptr2 ? cptr2 : "", cptr, strchr (cptr, '/') ? "/" : "\\");
|
||||||
stat = docmdp->action (-1, nbuf); /* simh.ini proc cmd file */
|
stat = docmdp->action (-1, nbuf); /* simh.ini proc cmd file */
|
||||||
}
|
}
|
||||||
if (SCPE_BARE_STATUS(stat) == SCPE_OPENERR)
|
if (SCPE_BARE_STATUS(stat) == SCPE_OPENERR)
|
||||||
stat = docmdp->action (-1, "simh.ini"); /* simh.ini proc cmd file */
|
stat = docmdp->action (-1, "simh.ini"); /* simh.ini proc cmd file */
|
||||||
if (*cbuf) /* cmd file arg? */
|
if (*cbuf) /* cmd file arg? */
|
||||||
stat = docmdp->action (0, cbuf); /* proc cmd file */
|
stat = docmdp->action (0, cbuf); /* proc cmd file */
|
||||||
else {
|
else {
|
||||||
if (*argv[0]) { /* sim name arg? */
|
if (*argv[0]) { /* sim name arg? */
|
||||||
char *np; /* "path.ini" */
|
char *np; /* "path.ini" */
|
||||||
nbuf[0] = '"'; /* starting " */
|
nbuf[0] = '"'; /* starting " */
|
||||||
|
@ -2941,6 +2942,7 @@ else {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (SCPE_BARE_STATUS(stat) == SCPE_OPENERR) /* didn't exist/can't open? */
|
if (SCPE_BARE_STATUS(stat) == SCPE_OPENERR) /* didn't exist/can't open? */
|
||||||
stat = SCPE_OK;
|
stat = SCPE_OK;
|
||||||
|
|
||||||
|
@ -4301,24 +4303,26 @@ t_stat sim_call_argv (int (*main_like_routine)(int argc, char *argv[]), const ch
|
||||||
{
|
{
|
||||||
int argc = 1;
|
int argc = 1;
|
||||||
char **argv = (char **)calloc ((1 + argc), sizeof (*argv));
|
char **argv = (char **)calloc ((1 + argc), sizeof (*argv));
|
||||||
size_t cptr_len = strlen (cptr);
|
size_t arg_size;
|
||||||
char *argline = (char *)malloc (2 + 2 * cptr_len);
|
char *argline = NULL;
|
||||||
char *cp, quote;
|
char *cp, quote;
|
||||||
t_stat result = SCPE_OK;
|
t_stat result = SCPE_OK;
|
||||||
|
|
||||||
if ((argv == NULL) || (argline == NULL)) {
|
|
||||||
free (argv);
|
|
||||||
free (argline);
|
|
||||||
return SCPE_MEM;
|
|
||||||
}
|
|
||||||
if (cptr == NULL) {
|
if (cptr == NULL) {
|
||||||
free (argv);
|
free (argv);
|
||||||
free (argline);
|
free (argline);
|
||||||
return SCPE_ARG;
|
return SCPE_ARG;
|
||||||
}
|
}
|
||||||
strcpy (argline, cptr);
|
arg_size = 2 + (2 * strlen (cptr));
|
||||||
cp = argline + cptr_len + 1;
|
argline = (char *)malloc (arg_size);
|
||||||
strcpy (cp, cptr);
|
if ((argv == NULL) || (argline == NULL)) {
|
||||||
|
free (argv);
|
||||||
|
free (argline);
|
||||||
|
return SCPE_MEM;
|
||||||
|
}
|
||||||
|
strlcpy (argline, cptr, arg_size);
|
||||||
|
cp = argline + (arg_size / 2);
|
||||||
|
strlcpy (cp, cptr, arg_size / 2);
|
||||||
argv[0] = argline; /* argv[0] points to unparsed arguments */
|
argv[0] = argline; /* argv[0] points to unparsed arguments */
|
||||||
argv[argc + 1] = NULL; /* make sure the argument list always ends with a NULL */
|
argv[argc + 1] = NULL; /* make sure the argument list always ends with a NULL */
|
||||||
while (*cp) {
|
while (*cp) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue