diff --git a/scp.c b/scp.c index ab710d70..f5dabeba 100644 --- a/scp.c +++ b/scp.c @@ -2323,7 +2323,7 @@ if ((!cptr) || (*cptr == '\0')) cptr = get_glyph_nc (cptr, gbuf, '"'); /* get quote delimited token */ if (gbuf[0] == '\0') { /* Token started with quote */ gbuf[sizeof (gbuf)-1] = '\0'; - strncpy (gbuf, cptr, sizeof (gbuf)-1); + strlcpy (gbuf, cptr, sizeof (gbuf)); gptr = strchr (gbuf, '"'); if (gptr) *gptr = '\0'; @@ -3001,7 +3001,7 @@ sim_on_inherit =(sim_switches & SWMASK ('O')) || sim_on_inherit; /* -o means inh errabort = sim_switches & SWMASK ('E'); /* -e means abort on error */ abuf[sizeof(abuf)-1] = '\0'; -strncpy (abuf, fcptr, sizeof(abuf)-1); +strlcpy (abuf, fcptr, sizeof(abuf)); c = abuf; do_arg[10] = NULL; /* make sure the argument list always ends with a NULL */ for (nargs = 0; nargs < 10; ) { /* extract arguments */ @@ -5235,7 +5235,7 @@ if (sim_is_running) if ((!cptr) || (*cptr == 0)) return SCPE_2FARG; gbuf[sizeof(gbuf)-1] = '\0'; -strncpy (gbuf, cptr, sizeof(gbuf)-1); +strlcpy (gbuf, cptr, sizeof(gbuf)); sim_trim_endspc(gbuf); if (chdir(gbuf) != 0) return sim_messagef(SCPE_IOERR, "Unable to directory change to: %s\n", gbuf); @@ -5531,7 +5531,7 @@ char lbuf[4*CBUFSIZE]; if ((!cptr) || (*cptr == 0)) return SCPE_2FARG; lbuf[sizeof(lbuf)-1] = '\0'; -strncpy (lbuf, cptr, sizeof(lbuf)-1); +strlcpy (lbuf, cptr, sizeof(lbuf)); sim_trim_endspc(lbuf); file = sim_fopen (lbuf, "r"); if (file == NULL) { /* open failed? */ @@ -5668,7 +5668,7 @@ if (uptr == NULL) return SCPE_IERR; max = uptr->capac - 1; abuf[sizeof(abuf)-1] = '\0'; -strncpy (abuf, cptr, sizeof(abuf)-1); +strlcpy (abuf, cptr, sizeof(abuf)); if ((aptr = strchr (abuf, ';'))) { /* ;action? */ cptr += aptr - abuf + 1; if (flg != SSH_ST) /* only on SET */ @@ -5919,7 +5919,7 @@ if (uptr->flags & UNIT_ATT) { /* already attached? */ } } gbuf[sizeof(gbuf)-1] = '\0'; -strncpy (gbuf, cptr, sizeof(gbuf)-1); +strlcpy (gbuf, cptr, sizeof(gbuf)); sim_trim_endspc (gbuf); /* trim trailing spc */ return scp_attach_unit (dptr, uptr, gbuf); /* attach */ } @@ -5948,7 +5948,7 @@ if ((dptr = find_dev_from_unit (uptr)) == NULL) uptr->filename = (char *) calloc (CBUFSIZE, sizeof (char)); /* alloc name buf */ if (uptr->filename == NULL) return SCPE_MEM; -strncpy (uptr->filename, cptr, CBUFSIZE); /* save name */ +strlcpy (uptr->filename, cptr, CBUFSIZE); /* save name */ if ((sim_switches & SWMASK ('R')) || /* read only? */ ((uptr->flags & UNIT_RO) != 0)) { if (((uptr->flags & UNIT_ROABLE) == 0) && /* allowed? */ @@ -6263,7 +6263,7 @@ GET_SWITCHES (cptr); /* get switches */ if (*cptr == 0) /* must be more */ return SCPE_2FARG; gbuf[sizeof(gbuf)-1] = '\0'; -strncpy (gbuf, cptr, sizeof(gbuf)-1); +strlcpy (gbuf, cptr, sizeof(gbuf)); sim_trim_endspc (gbuf); if ((sfile = sim_fopen (gbuf, "wb")) == NULL) return SCPE_OPENERR; @@ -6418,7 +6418,7 @@ GET_SWITCHES (cptr); /* get switches */ if (*cptr == 0) /* must be more */ return SCPE_2FARG; gbuf[sizeof(gbuf)-1] = '\0'; -strncpy (gbuf, cptr, sizeof(gbuf)-1); +strlcpy (gbuf, cptr, sizeof(gbuf)); sim_trim_endspc (gbuf); if ((rfile = sim_fopen (gbuf, "rb")) == NULL) return SCPE_OPENERR; @@ -7939,7 +7939,7 @@ if (prompt) { /* interactive? */ if (tmpc == NULL) /* bad result? */ cptr = NULL; else { - strncpy (cptr, tmpc, size); /* copy result */ + strlcpy (cptr, tmpc, size); /* copy result */ free (tmpc) ; /* free temp */ } } @@ -10114,7 +10114,7 @@ if ((act != NULL) && (*act != 0)) { /* new action? */ char *newp = (char *) calloc (CBUFSIZE+1, sizeof (char)); /* alloc buf */ if (newp == NULL) /* mem err? */ return SCPE_MEM; - strncpy (newp, act, CBUFSIZE); /* copy action */ + strlcpy (newp, act, CBUFSIZE); /* copy action */ bp->act = newp; /* set pointer */ } sim_brk_summ = sim_brk_summ | (sw & ~BRK_TYP_TEMP); @@ -10342,7 +10342,7 @@ if ((ep = strchr (sim_brk_act[sim_do_depth], ';'))) { /* cmd delimiter? */ sim_brk_act[sim_do_depth] += lnt + 1; /* adv ptr */ } else { - strncpy (buf, sim_brk_act[sim_do_depth], size); /* copy action */ + strlcpy (buf, sim_brk_act[sim_do_depth], size); /* copy action */ sim_brk_clract (); /* no more */ } return buf; @@ -10729,7 +10729,7 @@ return SCPE_OK; t_stat sim_exp_show_tab (FILE *st, const EXPECT *exp, const EXPTAB *ep) { -const char *dev_name = dev_name = tmxr_expect_line_name (exp); +const char *dev_name = tmxr_expect_line_name (exp); uint32 default_haltafter = get_default_env_parameter (dev_name, "SIM_EXPECT_HALTAFTER", 0); if (!ep) @@ -10757,7 +10757,7 @@ return SCPE_OK; t_stat sim_exp_show (FILE *st, CONST EXPECT *exp, const char *match) { CONST EXPTAB *ep = (CONST EXPTAB *)sim_exp_fnd (exp, match, 0); -const char *dev_name = dev_name = tmxr_expect_line_name (exp); +const char *dev_name = tmxr_expect_line_name (exp); uint32 default_haltafter = get_default_env_parameter (dev_name, "SIM_EXPECT_HALTAFTER", 0); if (exp->buf_size) { @@ -12419,7 +12419,7 @@ if (fp == NULL) { * of the executable. Failing that, we're out of luck. */ fbuf[sizeof(fbuf)-1] = '\0'; - strncpy (fbuf, sim_argv[0], sizeof (fbuf)-1); + strlcpy (fbuf, sim_argv[0], sizeof (fbuf)); if ((p = (char *)match_ext (fbuf, "EXE"))) *p = '\0'; if ((p = strrchr (fbuf, '\\'))) { diff --git a/sim_tmxr.c b/sim_tmxr.c index ba4a0f26..271c5304 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -2448,7 +2448,7 @@ while (*tptr) { if (0 == MATCH_CMD (gbuf, "LOG")) { if ((NULL == cptr) || ('\0' == *cptr)) return sim_messagef (SCPE_2FARG, "Missing Log Specifier\n"); - strncpy(logfiletmpl, cptr, sizeof(logfiletmpl)-1); + strlcpy(logfiletmpl, cptr, sizeof(logfiletmpl)); continue; } if (0 == MATCH_CMD (gbuf, "LOOPBACK")) { @@ -2514,14 +2514,14 @@ while (*tptr) { if (0 == MATCH_CMD (gbuf, "CONNECT")) { if ((NULL == cptr) || ('\0' == *cptr)) return sim_messagef (SCPE_2FARG, "Missing Connect Specifier\n"); - strncpy (destination, cptr, sizeof(destination)-1); + strlcpy (destination, cptr, sizeof(destination)); continue; } if (0 == MATCH_CMD (gbuf, "SPEED")) { if ((NULL == cptr) || ('\0' == *cptr) || (_tmln_speed_delta (cptr) < 0)) return sim_messagef (SCPE_ARG, "Invalid Speed Specifier: %s\n", (cptr ? cptr : "")); - strncpy (speed, cptr, sizeof(speed)-1); + strlcpy (speed, cptr, sizeof(speed)); continue; } cptr = get_glyph (gbuf, port, ';'); @@ -2572,7 +2572,7 @@ while (*tptr) { char *eptr; memset (hostport, '\0', sizeof(hostport)); - strncpy (hostport, destination, sizeof(hostport)-1); + strlcpy (hostport, destination, sizeof(hostport)); if ((eptr = strchr (hostport, ';'))) *(eptr++) = '\0'; if (eptr) { @@ -2599,16 +2599,17 @@ while (*tptr) { if (modem_control != mp->modem_control) return SCPE_ARG; if (logfiletmpl[0]) { - strncpy(mp->logfiletmpl, logfiletmpl, sizeof(mp->logfiletmpl)-1); + strlcpy(mp->logfiletmpl, logfiletmpl, sizeof(mp->logfiletmpl)); for (i = 0; i < mp->lines; i++) { lp = mp->ldsc + i; sim_close_logfile (&lp->txlogref); lp->txlog = NULL; lp->txlogname = (char *)realloc(lp->txlogname, CBUFSIZE); + lp->txlogname[CBUFSIZE-1] = '\0'; if (mp->lines > 1) - sprintf(lp->txlogname, "%s_%d", mp->logfiletmpl, i); + snprintf(lp->txlogname, CBUFSIZE-1, "%s_%d", mp->logfiletmpl, i); else - strcpy (lp->txlogname, mp->logfiletmpl); + strlcpy (lp->txlogname, mp->logfiletmpl, CBUFSIZE); r = sim_open_logfile (lp->txlogname, TRUE, &lp->txlog, &lp->txlogref); if (r != SCPE_OK) { free (lp->txlogname); @@ -3624,7 +3625,7 @@ for (i=0; ilines > 1) snprintf (line_name, sizeof (line_name), "%s:%d", tmxr_open_devices[i]->ldsc[j].send.dptr->name, j); else - strncpy (line_name, tmxr_open_devices[i]->ldsc[j].send.dptr->name, sizeof (line_name)); + strlcpy (line_name, tmxr_open_devices[i]->ldsc[j].send.dptr->name, sizeof (line_name)); break; } return line_name; @@ -4477,7 +4478,7 @@ if (lp->txlog) /* close existing log */ lp->txlogname = (char *) calloc (CBUFSIZE, sizeof (char)); /* alloc namebuf */ if (lp->txlogname == NULL) /* can't? */ return SCPE_MEM; -strncpy (lp->txlogname, cptr, CBUFSIZE); /* save file name */ +strlcpy (lp->txlogname, cptr, CBUFSIZE); /* save file name */ sim_open_logfile (cptr, TRUE, &lp->txlog, &lp->txlogref);/* open log */ if (lp->txlog == NULL) { /* error? */ free (lp->txlogname); /* free buffer */