From 8a0b748d3644dde30372ee25c4fe05bec10b2166 Mon Sep 17 00:00:00 2001
From: Chad Vizino <[email protected]>
Date: Fri, 29 Mar 2019 09:23:08 -0600
Subject: [PATCH] TRQ-4330 - fix gcc/g++ 7 compile issues

---
src/cmds/qdel.c                            |  6 +-
src/cmds/qsub_functions.c                  | 12 ++--
src/cmds/qterm.c                           |  2 +
src/include/array.h                        |  2 +-
src/include/attribute.h                    |  4 +-
src/lib/Libattr/attr_fn_acl.c              |  4 +-
src/lib/Libattr/attr_fn_arst.c             |  4 +-
src/lib/Libcmds/cvtdate.c                  |  8 +--
src/lib/Libdis/disrsc.c                    |  2 +
src/lib/Libdis/disrsi.c                    |  2 +
src/lib/Libdis/disrsl.c                    |  2 +
src/lib/Libdis/disrss.c                    |  2 +
src/lib/Libnet/net_client.c                |  4 +-
src/lib/Libnet/net_common.c                |  1 +
src/lib/Libutils/jsoncpp.cpp               |  9 +++
src/lib/Libutils/numa_chip.cpp             | 10 +--
src/resmom/checkpoint.c                    | 59 ++++++++++------
src/resmom/generate_alps_status.c          |  7 +-
src/resmom/linux/mom_mach.c                | 79 +++++++++++++--------
src/resmom/mom_main.c                      | 16 ++---
src/resmom/mom_req_quejob.c                | 12 ++--
src/resmom/mom_server.c                    | 41 +++++------
src/resmom/parse_config.c                  |  4 +-
src/resmom/requests.c                      |  8 +--
src/scheduler.cc/samples/fifo/dedtime.c    |  2 +-
src/server/array_func.c                    |  6 +-
src/server/array_func.h                    |  2 +-
src/server/geteusernam.c                   |  2 +-
src/server/job_func.c                      | 28 ++++++--
src/server/node_attr_def.c                 | 16 ++---
src/server/node_manager.c                  |  5 +-
src/server/pbsd_init.c                     |  2 +
src/server/process_request.c               | 18 ++---
src/server/req_jobobit.c                   | 16 ++++-
src/server/req_quejob.c                    |  2 +-
src/server/req_runjob.c                    | 10 ++-
src/server/req_stat.c                      |  2 +-
src/server/svr_chk_owner.c                 | 47 +++++++++----
src/server/svr_jobfunc.c                   | 80 +++++++++++++++-------
src/test/catch_child/scaffolding.c         |  1 +
src/test/geteusernam/scaffolding.c         |  2 +-
src/test/node_manager/test_uut.c           |  4 +-
src/test/pbs_log/scaffolding.c             |  3 +-
src/test/pbsd_main/scaffolding.c           |  2 +-
src/test/process_alps_status/scaffolding.c |  2 +
src/test/process_request/scaffolding.c     |  6 +-
src/test/req_stat/scaffolding.c            |  4 +-
src/test/svr_chk_owner/scaffolding.c       |  2 +-
torque.setup.in                            |  2 +-
49 files changed, 358 insertions(+), 208 deletions(-)

diff --git a/src/cmds/qdel.c b/src/cmds/qdel.c
index 909018da66..d7e64f6289 100644
--- a/src/cmds/qdel.c
+++ b/src/cmds/qdel.c
@@ -49,7 +49,7 @@ void process_config_file(



-bool is_array(
+bool is_job_array(

  char *job_id)

@@ -66,7 +66,7 @@ bool is_array(
    }

  return(false);
-  } /* END is_array() */
+  } /* END is_job_array() */



@@ -289,7 +289,7 @@ int qdel_main(
    snprintf(job_id, sizeof(job_id), "%s", argv[optind]);

    if ((dash_t == true) &&
-        (is_array(job_id) == false))
+        (is_job_array(job_id) == false))
      {
      fprintf(stderr, "qdel: Error: job id '%s' isn't a job array but -t was specified.\n",
        job_id);
diff --git a/src/cmds/qsub_functions.c b/src/cmds/qsub_functions.c
index 4fdfac0a7b..9799c831f4 100644
--- a/src/cmds/qsub_functions.c
+++ b/src/cmds/qsub_functions.c
@@ -3363,14 +3363,14 @@ void process_opts(
        if (add_verify_resources(ji->res_attr, optarg, data_type) != 0)
          print_qsub_usage_exit("qsub: illegal -l value");

-          //If cpuclock gets set we need to set the node exclusive flag
+        //If cpuclock gets set we need to set the node exclusive flag
+        {
+        job_data *pData = NULL;
+        if (hash_find(ji->res_attr,"cpuclock",&pData))
          {
-          job_data *pData = NULL;
-          if (hash_find(ji->res_attr,"cpuclock",&pData))
-            {
-            hash_add_or_exit(ji->job_attr, ATTR_node_exclusive, "TRUE", data_type);
-            }
+          hash_add_or_exit(ji->job_attr, ATTR_node_exclusive, "TRUE", data_type);
          }
+        }

        break;

diff --git a/src/cmds/qterm.c b/src/cmds/qterm.c
index d05bd42d4e..0519328c01 100644
--- a/src/cmds/qterm.c
+++ b/src/cmds/qterm.c
@@ -89,6 +89,8 @@ int main(

        local = true;

+        break;
+
      case 't':

        type = optarg;
diff --git a/src/include/array.h b/src/include/array.h
index 74050d0a25..d53dec1d3a 100644
--- a/src/include/array.h
+++ b/src/include/array.h
@@ -176,7 +176,7 @@
#define TOKENS_TAG "tokens"
#define TOKEN_TAG "token"

-int  is_array(char *id);
+int  is_id_array(char *id);
int  array_delete(job_array *pa);
int  array_save(job_array *pa);
int  array_save(job_array *pa);
diff --git a/src/include/attribute.h b/src/include/attribute.h
index 8fbff163b8..3d025ab66f 100644
--- a/src/include/attribute.h
+++ b/src/include/attribute.h
@@ -512,12 +512,12 @@ int to_size(const char *val, struct size_value *psize);
void from_size(struct size_value *psize, char *cvnbuf);
void create_size_string(char *buf, struct size_value values);

-#define NULL_FUNC '\0'
+#define NULL_FUNC NULL

/* other associated funtions */

int   acl_check(pbs_attribute *, char *canidate, int type);
-int   acl_check_my_array_string(struct array_strings *, char *, int);
+int   acl_check_my_array_string(struct array_strings *, const char *, int);
char *arst_string(const char *str, pbs_attribute *pattr);
void  attrl_fixlink(tlist_head *svrattrl);
void  recov_acl(pbs_attribute *, attribute_def *, const char *, const char *);
diff --git a/src/lib/Libattr/attr_fn_acl.c b/src/lib/Libattr/attr_fn_acl.c
index ebb2775bf4..a7368b9f3b 100644
--- a/src/lib/Libattr/attr_fn_acl.c
+++ b/src/lib/Libattr/attr_fn_acl.c
@@ -232,7 +232,7 @@ fptr_int get_my_match_func(
int acl_check_my_array_string(

  struct array_strings *pas,
-  char                 *name,
+  const char           *name,
  int                   type)

  {
@@ -503,6 +503,8 @@ int set_allacl(

      /* No break, "Set" falls into "Incr" to add strings */

+      // fall through
+
    case INCR_OLD:
    case INCR:

diff --git a/src/lib/Libattr/attr_fn_arst.c b/src/lib/Libattr/attr_fn_arst.c
index c63281637e..9d82e873a3 100644
--- a/src/lib/Libattr/attr_fn_arst.c
+++ b/src/lib/Libattr/attr_fn_arst.c
@@ -532,7 +532,8 @@ int encode_arst(

        *pc++ = '\\';

-        // escape sequence added. Fall through.
+        // escape sequence added.
+        // fall through

      default:

@@ -735,6 +736,7 @@ int set_arst(
      pas->as_next = pas->as_buf;

      /* no break, "SET" falls into "MERGE" to add strings */
+      // fall through

    case INCR_OLD:
    case MERGE:
diff --git a/src/lib/Libcmds/cvtdate.c b/src/lib/Libcmds/cvtdate.c
index e936c6fbed..0e24639619 100644
--- a/src/lib/Libcmds/cvtdate.c
+++ b/src/lib/Libcmds/cvtdate.c
@@ -167,7 +167,7 @@ time_t cvtdate(
      year   = atoi(buf) * 100;
      datestr += 2;

-      /* no break, fall into next case */
+      // fall through

    case 10:  /* YYMMDDhhmm */
      buf[0] = datestr[0];
@@ -187,7 +187,7 @@ time_t cvtdate(

      datestr += 2;

-      /* no break, fall into next case */
+      // fall through

    case 8:  /* MMDDhhmm */
      buf[0] = datestr[0];
@@ -209,7 +209,7 @@ time_t cvtdate(

      datestr += 2;

-      /* no break, fall into next case */
+      // fall through

    case 6:  /* DDhhmm */
      buf[0] = datestr[0];
@@ -229,7 +229,7 @@ time_t cvtdate(

      datestr += 2;

-      /* no break, fall into next case */
+      // fall through

    case 4:  /* hhmm */
      buf[0] = datestr[0];
diff --git a/src/lib/Libdis/disrsc.c b/src/lib/Libdis/disrsc.c
index ac7fec6cbb..2baf87b2b9 100644
--- a/src/lib/Libdis/disrsc.c
+++ b/src/lib/Libdis/disrsc.c
@@ -141,6 +141,8 @@ signed char disrsc(
      else
        locret = DIS_OVERFLOW;

+      // fall through
+
    case DIS_OVERFLOW:
      value = negate ? SCHAR_MIN : SCHAR_MAX;
    }
diff --git a/src/lib/Libdis/disrsi.c b/src/lib/Libdis/disrsi.c
index a2417725fe..dd073b1bb0 100644
--- a/src/lib/Libdis/disrsi.c
+++ b/src/lib/Libdis/disrsi.c
@@ -141,6 +141,8 @@ int disrsi(
        *retval = locret;
        }

+    // fall through
+
    case DIS_OVERFLOW:

      value = negate ? INT_MIN : INT_MAX;
diff --git a/src/lib/Libdis/disrsl.c b/src/lib/Libdis/disrsl.c
index 9853056fcf..5fba4a4ba0 100644
--- a/src/lib/Libdis/disrsl.c
+++ b/src/lib/Libdis/disrsl.c
@@ -139,6 +139,8 @@ long disrsl(
      else
        locret = DIS_OVERFLOW;

+      // fall through
+
    case DIS_OVERFLOW:
      value = negate ? LONG_MIN : LONG_MAX;
    }
diff --git a/src/lib/Libdis/disrss.c b/src/lib/Libdis/disrss.c
index 80eb98109b..e2496b8adf 100644
--- a/src/lib/Libdis/disrss.c
+++ b/src/lib/Libdis/disrss.c
@@ -140,6 +140,8 @@ short disrss(
      else
        locret = DIS_OVERFLOW;

+      // fall through
+
    case DIS_OVERFLOW:
      value = negate ? SHRT_MIN : SHRT_MAX;
    }
diff --git a/src/lib/Libnet/net_client.c b/src/lib/Libnet/net_client.c
index 8f8542320b..a324c08197 100644
--- a/src/lib/Libnet/net_client.c
+++ b/src/lib/Libnet/net_client.c
@@ -532,7 +532,7 @@ int client_to_svr(
        break;
        }/* Interrupted system call */

-      /* fall through to next case */
+      // fall through

    case EINVAL:               /* Invalid argument */

@@ -583,6 +583,8 @@ int client_to_svr(

        goto retry;
        }
+
+      // fall through

    default:

diff --git a/src/lib/Libnet/net_common.c b/src/lib/Libnet/net_common.c
index 7b36d31aa1..80bb78bee5 100644
--- a/src/lib/Libnet/net_common.c
+++ b/src/lib/Libnet/net_common.c
@@ -405,6 +405,7 @@ int socket_connect_addr(
          }

        /* essentially, only fall through for a transient failure */
+        // fall through

      /* socket not ready for writing after 5 timeout */
      case EINVAL:    /* Invalid argument */
diff --git a/src/resmom/checkpoint.c b/src/resmom/checkpoint.c
index f178f48408..7e94b8b00a 100644
--- a/src/resmom/checkpoint.c
+++ b/src/resmom/checkpoint.c
@@ -51,6 +51,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <string>
+#include <sstream>
#include <unistd.h>
#include <assert.h>
#include <dirent.h>
@@ -950,6 +952,7 @@ int blcr_checkpoint_job(
  char             sid[20];
  char            *arg[20];
  char             buf[1024];
+  std::string      err_msg;
  int              len;
  char           **ap;
  FILE            *fs;
@@ -1107,9 +1110,10 @@ int blcr_checkpoint_job(

    /* remove checkpoint directory that was created for this checkpoint attempt */

-    sprintf(buf, "Checkpoint failed for job %s, removing checkpoint directory\n",
-        pjob->ji_qs.ji_jobid);
-    log_ext(-1, __func__, buf, LOG_DEBUG);
+    err_msg = "Checkpoint failed for job ";
+    err_msg += pjob->ji_qs.ji_jobid;
+    err_msg += ", removing checkpoint directory\n";
+    log_ext(-1, __func__, err_msg.c_str(), LOG_DEBUG);

    delete_blcr_checkpoint_files(pjob);

@@ -1123,9 +1127,12 @@ int blcr_checkpoint_job(

      if (err != 0)
        {
-        sprintf(buf, "pbs_alterjob requested on job %s failed (%d-%s)\n",
-            pjob->ji_qs.ji_jobid, err, pbs_strerror(err));
-        log_err(-1, __func__, buf);
+        std::ostringstream buf_s;
+
+        buf_s << "pbs_alterjob requested on job " << pjob->ji_qs.ji_jobid <<
+          " failed (" << err << "-" << pbs_strerror(err) << ")\n";
+        err_msg = buf_s.str();
+        log_err(-1, __func__, err_msg.c_str());
        if (err == PBSE_UNKJOBID)
          {
          /* TODO: GB - can the job exit while waiting for the checkpoint
@@ -1190,9 +1197,12 @@ int blcr_checkpoint_job(

      if (err != 0)
        {
-        sprintf(buf, "pbs_alterjob requested on job %s failed (%d-%s)\n",
-            pjob->ji_qs.ji_jobid, err, pbs_strerror(err));
-        log_err(-1, __func__, buf);
+        std::ostringstream buf_s;
+
+        buf_s << "pbs_alterjob requested on job " << pjob->ji_qs.ji_jobid <<
+          " failed (" << err << "-" << pbs_strerror(err) << ")\n";
+        err_msg = buf_s.str();
+        log_err(-1, __func__, err_msg.c_str());
        if (err == PBSE_UNKJOBID)
          {
          /* TODO: GB - can the job exit while waiting for the checkpoint
@@ -1527,6 +1537,8 @@ int start_checkpoint(
  pid_t     pid;
  int       rc = PBSE_NONE;
  char      name_buffer[MAXPATHLEN + 1];
+  std::ostringstream buf_s;
+  std::string buf;
  time_t    time_now;

  time_now = time((time_t *)0);
@@ -1548,11 +1560,10 @@ int start_checkpoint(
       * to the pbs_server until the checkpoint has completed successfully.
       */

-      sprintf(name_buffer,"ckpt.%s.%d",
-        pjob->ji_qs.ji_jobid,
-        (int)time_now);
+      buf_s << "ckpt." << pjob->ji_qs.ji_jobid << "." << time_now;
+      buf = buf_s.str();

-      decode_str(&pjob->ji_wattr[JOB_ATR_checkpoint_name], NULL, NULL, name_buffer, 0);
+      decode_str(&pjob->ji_wattr[JOB_ATR_checkpoint_name], NULL, NULL, buf.c_str(), 0);

      pjob->ji_wattr[JOB_ATR_checkpoint_name].at_flags =
        ATR_VFLAG_SET | ATR_VFLAG_MODIFY;
@@ -1760,8 +1771,8 @@ int blcr_restart_job(
  int            pid;
  char           sid[20];
  char          *arg[20];
+  std::string    err_msg;
  extern char    restart_script_name[MAXPATHLEN + 1];
-  char           buf[1024];
  char           namebuf[MAXPATHLEN + 1];
  char           restartfile[MAXPATHLEN + 1];
  char           script_buf[MAXPATHLEN + 1];
@@ -1886,14 +1897,18 @@ int blcr_restart_job(
    arg[6] = SET_ARG(pjob->ji_wattr[JOB_ATR_checkpoint_name].at_val.at_str);
    arg[7] = NULL;

-    snprintf(buf, sizeof(buf), "restart args: %s %s %s %s %s %s %s",
-      restart_script_name, sid, pjob->ji_qs.ji_jobid,
-      SET_ARG(pjob->ji_wattr[JOB_ATR_euser].at_val.at_str),
-      SET_ARG(pjob->ji_wattr[JOB_ATR_egroup].at_val.at_str),
-      namebuf,
-      SET_ARG(pjob->ji_wattr[JOB_ATR_checkpoint_name].at_val.at_str));
-
-    log_ext(-1, __func__, buf, LOG_DEBUG);
+    err_msg = "restart args: ";
+    err_msg += restart_script_name;
+    err_msg += " ";
+    err_msg += SET_ARG(pjob->ji_wattr[JOB_ATR_euser].at_val.at_str);
+    err_msg += " ";
+    err_msg += SET_ARG(pjob->ji_wattr[JOB_ATR_egroup].at_val.at_str);
+    err_msg += " ";
+    err_msg += namebuf;
+    err_msg += " ";
+    err_msg += SET_ARG(pjob->ji_wattr[JOB_ATR_checkpoint_name].at_val.at_str);
+
+    log_ext(-1, __func__, err_msg.c_str(), LOG_DEBUG);

    log_close(0);

diff --git a/src/resmom/generate_alps_status.c b/src/resmom/generate_alps_status.c
index 305d603874..286d6b02ef 100644
--- a/src/resmom/generate_alps_status.c
+++ b/src/resmom/generate_alps_status.c
@@ -87,6 +87,7 @@
#include "alps_constants.h"
#include "alps_functions.h"
#include <string>
+#include <sstream>
#include <vector>
#include <set>
#include <time.h>
@@ -586,9 +587,9 @@ int process_node(
    ani.features += features.c_str();
    }

-  char node_index_buf[MAXLINE];
-  snprintf(node_index_buf, sizeof(node_index_buf), "node_index=%lu", alps_nodes.size());
-  ani.node_index = node_index_buf;
+  std::ostringstream ostr;
+  ostr << "node_index=" << alps_nodes.size();
+  ani.node_index = ostr.str();

  alps_nodes[nid] = ani;

diff --git a/src/resmom/linux/mom_mach.c b/src/resmom/linux/mom_mach.c
index acaf81d467..8d8011a868 100644
--- a/src/resmom/linux/mom_mach.c
+++ b/src/resmom/linux/mom_mach.c
@@ -3,6 +3,7 @@
#include "lib_mom.h" /* header */

#include <string>
+#include <sstream>
#include <vector>
#include <assert.h>
#include <limits.h>
@@ -1221,6 +1222,7 @@ unsigned long cput_sum(
  int          fd;
  int          rc;
  char         buf[LOCAL_BUF_SIZE];
+  std::string  err_msg;

  pbs_attribute *pattr;
  pattr = &pjob->ji_wattr[JOB_ATR_req_information];
@@ -1234,8 +1236,11 @@ unsigned long cput_sum(
    rc = cr->get_req_index_for_host(mom_alias, req_index);
    if (rc != PBSE_NONE)
      {
-      sprintf(buf, "Could not find req for host %s, job_id %s", mom_alias, pjob->ji_qs.ji_jobid);
-      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf);
+      err_msg = "Could not find req for host ";
+      err_msg += mom_alias;
+      err_msg += ", job_id ";
+      err_msg += pjob->ji_qs.ji_jobid;
+      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, err_msg.c_str());
      return(cputime);
      }

@@ -1272,8 +1277,11 @@ unsigned long cput_sum(
      {
      if (pjob->ji_cgroups_created == true)
        {
-        sprintf(buf, "failed to open %s: %s", full_cgroup_path.c_str(), strerror(errno));
-        log_err(-1, __func__, buf);
+        err_msg = "failed to open ";
+        err_msg += full_cgroup_path;
+        err_msg += ": ";
+        err_msg += strerror(errno);
+        log_err(-1, __func__, err_msg.c_str());
        }
      return(0);
      }
@@ -1281,8 +1289,11 @@ unsigned long cput_sum(
    rc = read(fd, buf, LOCAL_BUF_SIZE);
    if (rc == -1)
      {
-      sprintf(buf, "failed to read %s: %s", full_cgroup_path.c_str(), strerror(errno));
-      log_err(-1, __func__, buf);
+      err_msg = "failed to read ";
+      err_msg += full_cgroup_path;
+      err_msg += ": ";
+      err_msg += strerror(errno);
+      log_err(-1, __func__, err_msg.c_str());
      close(fd);
      return(0);
      }
@@ -1567,6 +1578,7 @@ unsigned long long resi_sum(
  char         buf[LOCAL_BUF_SIZE];
  int          fd;
  int          rc;
+  std::string  err_msg;

  pbs_attribute *pattr;
  pattr = &pjob->ji_wattr[JOB_ATR_req_information];
@@ -1579,8 +1591,11 @@ unsigned long long resi_sum(
    rc = cr->get_req_index_for_host(mom_alias, req_index);
    if (rc != PBSE_NONE)
      {
-      sprintf(buf, "Could not find req for host %s, job_id %s", mom_alias, pjob->ji_qs.ji_jobid);
-      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf);
+      err_msg = "Could not find req for host ";
+      err_msg += mom_alias;
+      err_msg += ", job_id ";
+      err_msg += pjob->ji_qs.ji_jobid;
+      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, err_msg.c_str());
      return(resisize);
      }

@@ -1614,8 +1629,11 @@ unsigned long long resi_sum(
    {
    if (pjob->ji_cgroups_created == true)
      {
-      sprintf(buf, "failed to open %s: %s", full_cgroup_path.c_str(), strerror(errno));
-      log_err(-1, __func__, buf);
+      err_msg = "failed to open ";
+      err_msg += full_cgroup_path;
+      err_msg += ": ";
+      err_msg += strerror(errno);
+      log_err(-1, __func__, err_msg.c_str());
      }

    return(0);
@@ -1624,8 +1642,11 @@ unsigned long long resi_sum(
  rc = read(fd, buf, LOCAL_BUF_SIZE);
  if (rc == -1)
    {
-    sprintf(buf, "failed to read %s: %s", full_cgroup_path.c_str(), strerror(errno));
-    log_err(-1, __func__, buf);
+    err_msg = "failed to read ";
+    err_msg += full_cgroup_path;
+    err_msg += ": ";
+    err_msg += strerror(errno);
+    log_err(-1, __func__, err_msg.c_str());
    close(fd);
    return(0);
    }
@@ -1637,8 +1658,9 @@ unsigned long long resi_sum(
    buf2 = strstr(buf, "\nrss ");
    if (buf2 == NULL)
      {
-      sprintf(buf, "read failed finding rss %s", full_cgroup_path.c_str());
-      log_err(errno, __func__, buf);
+      err_msg = "read failed finding rss ";
+      err_msg += full_cgroup_path;
+      log_err(errno, __func__, err_msg.c_str());
      close(fd);
      return(0);
      }
@@ -4983,16 +5005,17 @@ void scan_non_child_tasks(void)

      if (!found)
        {
-        char buf[MAXLINE];
+        std::ostringstream sbuf;
+        std::string buf;

        extern int exiting_tasks;

-        sprintf(buf, "found exited session %d for task %d in job %s",
-            pTask->ti_qs.ti_sid,
-            pTask->ti_qs.ti_task,
-            pJob->ji_qs.ji_jobid);
+        sbuf << "found exited session " << pTask->ti_qs.ti_sid <<
+          " for task " << pTask->ti_qs.ti_task << " in job " <<
+          pJob->ji_qs.ji_jobid;
+        buf = sbuf.str();

-        log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf);
+        log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf.c_str());

        pTask->ti_qs.ti_exitstat = 0;  /* actually unknown */
        pTask->ti_qs.ti_status = TI_STATE_EXITED;
@@ -5006,10 +5029,11 @@ void scan_non_child_tasks(void)

          if (LOGLEVEL >= 7)
            {
-            sprintf(buf, "marking job as MOM_JOB_RECOVERY for task %d",
-                pTask->ti_qs.ti_task);
+            sbuf << "marking job as MOM_JOB_RECOVERY for task " <<
+              pTask->ti_qs.ti_task);
+            buf = sbuf.str();

-            log_event(PBSEVENT_DEBUG, PBS_EVENTCLASS_JOB, pJob->ji_qs.ji_jobid, buf);
+            log_event(PBSEVENT_DEBUG, PBS_EVENTCLASS_JOB, pJob->ji_qs.ji_jobid, buf.c_str());
            }
          }
#endif    /* USESAVEDRESOURCES */
@@ -5075,7 +5099,6 @@ const char *idletime(
  DIR         *dp;

  struct dirent *de;
-  char          ttyname[50];
  time_t         curtm;

  if (attrib)
@@ -5104,16 +5127,18 @@ const char *idletime(

  while ((de = readdir(dp)) != NULL)
    {
+    std::string ttyname;
+
    if (maxtm >= curtm)
      break;

    if (strncmp(de->d_name, "tty", 3))
      continue;

-    sprintf(ttyname, "/dev/%s",
-            de->d_name);
+    ttyname = "/dev/";
+    ttyname += de->d_name;

-    setmax(ttyname);
+    setmax(ttyname.c_str());
    }

  closedir(dp);
diff --git a/src/resmom/mom_main.c b/src/resmom/mom_main.c
index 2d8453a15f..35896e58b1 100644
--- a/src/resmom/mom_main.c
+++ b/src/resmom/mom_main.c
@@ -1067,7 +1067,7 @@ char *conf_res(
    goto done;
    }

-  name[i] = '\0';
+  name[i] = NULL;

  for (d = ret_string, resline++;*resline;)
    {
@@ -6519,17 +6519,17 @@ void prepare_child_tasks_for_delete()
    for (unsigned int i = 0; i < pJob->ji_tasks->size(); i++)
      {
      task *pTask = pJob->ji_tasks->at(i);
-
-      char buf[128];
+      std::ostringstream sbuf;
+      std::string buf;

      extern int exiting_tasks;

-      sprintf(buf, "preparing exited session %d for task %d in job %s for deletion",
-              pTask->ti_qs.ti_sid,
-              pTask->ti_qs.ti_task,
-              pJob->ji_qs.ji_jobid);
+      sbuf << "preparing exited session " << pTask->ti_qs.ti_sid <<
+        " for task " << pTask->ti_qs.ti_task << " in job " <<
+        pJob->ji_qs.ji_jobid << " for deletion";
+      buf = sbuf.str();

-      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf);
+      log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, buf.c_str());

      pTask->ti_qs.ti_exitstat = 0;  /* actually unknown */
      pTask->ti_qs.ti_status = TI_STATE_EXITED;
diff --git a/src/resmom/mom_req_quejob.c b/src/resmom/mom_req_quejob.c
index 2211f52d55..4e10581184 100644
--- a/src/resmom/mom_req_quejob.c
+++ b/src/resmom/mom_req_quejob.c
@@ -743,11 +743,15 @@ void req_mvjobfile(

  if (pj == NULL)
    {
-    snprintf(log_buffer, 1024, "cannot find job %s for move of %s file",
-      preq->rq_ind.rq_jobfile.rq_jobid,
-      TJobFileType[jft]);
+    std::string err_msg;

-    log_err(-1, __func__, log_buffer);
+    err_msg = "cannot find job ";
+    err_msg += preq->rq_ind.rq_jobfile.rq_jobid;
+    err_msg += " for move of ";
+    err_msg += TJobFileType[jft];
+    err_msg += " file";
+
+    log_err(-1, __func__, err_msg.c_str());

    req_reject(PBSE_UNKJOBID, 0, preq, NULL, NULL);

diff --git a/src/resmom/mom_server.c b/src/resmom/mom_server.c
index f90c2cd227..e03395225a 100644
--- a/src/resmom/mom_server.c
+++ b/src/resmom/mom_server.c
@@ -1900,7 +1900,6 @@ void mom_server_diag(
  std::stringstream &output)

  {
-  char tmpLine[1024];
  time_t Now;

  if (pms->pbs_servername[0] == '\0')
@@ -1910,22 +1909,18 @@ void mom_server_diag(

  time(&Now);

-  sprintf(tmpLine, "Server[%d]: %s (%s)\n",
-          sindex,
-          pms->pbs_servername,
-          netaddr(&(pms->sock_addr)));
-
-  output << tmpLine;
+  output << "Server[" << sindex << "]: " << pms->pbs_servername <<
+    " (" << netaddr(&(pms->sock_addr)) << ")\n";

  if (pms->MOMSendStatFailure[0] != '\0')
    {
-    sprintf(tmpLine, "  WARNING:  could not open connection to server, %s%s\n",
-            pms->MOMSendStatFailure,
-            (strstr(pms->MOMSendStatFailure, "cname") != NULL) ?
-            " (check name resolution - /etc/hosts?)" :
-            "");
+    output << "  WARNING:  could not open connection to server, " <<
+      pms->MOMSendStatFailure;
+
+    if (strstr(pms->MOMSendStatFailure, "cname") != NULL)
+      output << " (check name resolution - /etc/hosts?)";

-    output << tmpLine;
+    output << "\n";
    }

  if (TMOMRejectConn[0] != '\0')
@@ -1935,30 +1930,26 @@ void mom_server_diag(

  if (pms->MOMLastRecvFromServerTime > 0)
    {
-    sprintf(tmpLine, "  Last Msg From Server:   %ld seconds (%s)\n",
-            (long)Now - pms->MOMLastRecvFromServerTime,
-            (pms->MOMLastRecvFromServerCmd[0] != '\0') ?
-            pms->MOMLastRecvFromServerCmd : "N/A");
+    output << "  Last Msg From Server:   " <<
+      ((long)Now - pms->MOMLastRecvFromServerTime) << " seconds (" <<
+      ((pms->MOMLastRecvFromServerCmd[0] != '\0') ?
+        pms->MOMLastRecvFromServerCmd : "N/A") << "\n";
    }
  else
    {
-    sprintf(tmpLine, "  WARNING:  no messages received from server\n");
+    output << "  WARNING:  no messages received from server\n";
    }

-  output << tmpLine;
-
  if (pms->MOMLastSendToServerTime > 0)
    {
-    sprintf(tmpLine, "  Last Msg To Server:     %ld seconds\n",
-            (long)Now - pms->MOMLastSendToServerTime);
+    output << "  Last Msg To Server:     " <<
+      ((long)Now - pms->MOMLastSendToServerTime) << " seconds\n";
    }
  else
    {
-    sprintf(tmpLine, "  WARNING:  no messages sent to server\n");
+    output << "  WARNING:  no messages sent to server\n";
    }

-  output << tmpLine;
-
  return;
  }  /* END mom_server_diag() */

diff --git a/src/resmom/parse_config.c b/src/resmom/parse_config.c
index 8c4bb8585d..35efb7880e 100644
--- a/src/resmom/parse_config.c
+++ b/src/resmom/parse_config.c
@@ -2385,14 +2385,14 @@ void reset_config_vars()
  mom_host[0] = '\0';
  hostname_specified = 0;
  MOMConfigRReconfig = 0;
-  TNoSpoolDirList[0] = '\0';
+  TNoSpoolDirList[0] = NULL;
  is_reporter_mom = FALSE;
  is_login_node = FALSE;
  job_exit_wait_time = DEFAULT_JOB_EXIT_WAIT_TIME;
  jobstarter_exe_name[0] = '\0';
  jobstarter_set = 0;
  server_alias = NULL;
-  TRemChkptDirList[0] = '\0';
+  TRemChkptDirList[0] = NULL;
  tmpdir_basename[0] = '\0';  /* for $TMPDIR */
  rcp_path[0] = '\0';
  rcp_args[0] = '\0';
diff --git a/src/resmom/requests.c b/src/resmom/requests.c
index 588905e4e3..6fce46cdfb 100644
--- a/src/resmom/requests.c
+++ b/src/resmom/requests.c
@@ -1490,16 +1490,16 @@ void req_modifyjob(
  int            rc;
  unsigned int   momport = 0;

-  char           tmpLine[1024];
+  std::string    tmpLine;

  pjob = mom_find_job(preq->rq_ind.rq_modify.rq_objname);

  if (pjob == NULL)
    {
-    sprintf(tmpLine, "modify job failed, unknown job %s",
-            preq->rq_ind.rq_modify.rq_objname);
+    tmpLine = "modify job failed, unknown job ";
+    tmpLine += preq->rq_ind.rq_modify.rq_objname;

-    req_reject(PBSE_UNKJOBID, 0, preq, mom_host, tmpLine);
+    req_reject(PBSE_UNKJOBID, 0, preq, mom_host, tmpLine.c_str());

    return;
    }
diff --git a/src/scheduler.cc/samples/fifo/dedtime.c b/src/scheduler.cc/samples/fifo/dedtime.c
index b919ec8946..246bd4f8af 100644
--- a/src/scheduler.cc/samples/fifo/dedtime.c
+++ b/src/scheduler.cc/samples/fifo/dedtime.c
@@ -118,7 +118,7 @@ int parse_ded_file(const char *filename)

  i = 0;

-  memset(conf.ded_time, 0, MAX_DEDTIME_SIZE);
+  memset(conf.ded_time, 0, sizeof(struct timegap) * MAX_DEDTIME_SIZE);

  while (fgets(line, 256, fp) != NULL)
    {
diff --git a/src/server/array_func.c b/src/server/array_func.c
index fabe4541fa..8f5caf0520 100644
--- a/src/server/array_func.c
+++ b/src/server/array_func.c
@@ -4,7 +4,7 @@

  included functions:

-  is_array() determine if jobnum is actually an array identifyer
+  is_id_array() determine if jobnum is actually an array identifyer
  get_array() return array struct for given "parent id"
  array_save() save array struct to disk
  array_get_parent_id() return id of parent job if job belongs to a job array
@@ -90,7 +90,7 @@ void        force_purge_work(job *pjob);

/* search job array list to determine if id is a job array */

-int is_array(
+int is_id_array(

  char *id)

@@ -154,7 +154,7 @@ int is_array(
  allarrays.unlock();

  return(rc);
-  } /* END is_array() */
+  } /* END is_id_array() */



diff --git a/src/server/array_func.h b/src/server/array_func.h
index 6cb1b84c9c..70e3d326f7 100644
--- a/src/server/array_func.h
+++ b/src/server/array_func.h
@@ -8,7 +8,7 @@
#include "batch_request.h" /* batch_request */


-int is_array(char *id);
+int is_id_array(char *id);

int array_save(job_array *pa);

diff --git a/src/server/job_func.c b/src/server/job_func.c
index dbc47de458..8922deab35 100644
--- a/src/server/job_func.c
+++ b/src/server/job_func.c
@@ -2387,22 +2387,36 @@ int fix_cray_exec_hosts(



+// change job id from x.y to x-0.y

int change_external_job_name(

  job *pjob)

  {
-  char  tmp_jobid[PBS_MAXSVRJOBID + 1];
-  char *dot = strchr(pjob->ji_qs.ji_jobid, '.');
+  std::string jobid_new;
+  size_t pos;

-  if (dot != NULL)
-    *dot = '\0';
+  // null job pointer
+  if (pjob == NULL)
+    return(-1);

-  snprintf(tmp_jobid, sizeof(tmp_jobid), "%s-0.%s",
-    pjob->ji_qs.ji_jobid, dot + 1);
+  // copy original job id
+  jobid_new = pjob->ji_qs.ji_jobid;
+
+  // make sure job id has a .
+  if ((pos = jobid_new.find('.', 0)) == std::string::npos)
+    return(-1);
+
+  // change "." to "-0."
+  jobid_new.replace(pos, 1, "-0.");
+
+  // confirm new string will fit
+  if (jobid_new.length() > PBS_MAXSVRJOBID)
+    return(-1);

-  strcpy(pjob->ji_qs.ji_jobid, tmp_jobid);
+  // update original
+  strncpy(pjob->ji_qs.ji_jobid, jobid_new.c_str(), PBS_MAXSVRJOBID);

  return(PBSE_NONE);
  } /* END change_external_job_name() */
diff --git a/src/server/node_attr_def.c b/src/server/node_attr_def.c
index 37aa121ca2..386f12b32d 100644
--- a/src/server/node_attr_def.c
+++ b/src/server/node_attr_def.c
@@ -380,7 +380,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -392,7 +392,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -404,7 +404,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -416,7 +416,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -428,7 +428,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -440,7 +440,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-    NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -452,7 +452,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-               NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
@@ -464,7 +464,7 @@ attribute_def node_attr_def[] =
         set_l,
         comp_null,
         free_null,
-               NULL_FUNC,
+          NULL_FUNC,
         NO_USER_SET,
         ATR_TYPE_LONG,
         PARENT_TYPE_NODE,
diff --git a/src/server/node_manager.c b/src/server/node_manager.c
index 663b741da6..92c4d73f8a 100644
--- a/src/server/node_manager.c
+++ b/src/server/node_manager.c
@@ -924,9 +924,10 @@ void process_legacy_job_attribute_information(
      {
      char *attr_name = threadsafe_tokenizer(&attr_val, "=");

-      if ((attr_name != NULL) &&
-          (attr_val != '\0'))
+      if ((attr_name != NULL) && (*attr_name != '\0') &&
+          (attr_val != NULL) && (*attr_val != '\0'))
        {
+        // convert attr_name, attr_val strings to an attribute
        if (str_to_attr(attr_name, attr_val, pjob->ji_wattr, job_attr_def, JOB_ATR_LAST) == ATTR_NOT_FOUND)
          {
          // should be resources used if not found as attribute
diff --git a/src/server/pbsd_init.c b/src/server/pbsd_init.c
index 0233800586..1a639ab2dc 100644
--- a/src/server/pbsd_init.c
+++ b/src/server/pbsd_init.c
@@ -2667,6 +2667,8 @@ int pbsd_init_job(

      svr_setjobstate(pjob, JOB_STATE_COMPLETE, JOB_SUBSTATE_COMPLETE, FALSE);

+      // fall through
+

    case JOB_SUBSTATE_COMPLETE:

diff --git a/src/server/process_request.c b/src/server/process_request.c
index e7f243f58e..ec1935cca4 100644
--- a/src/server/process_request.c
+++ b/src/server/process_request.c
@@ -795,7 +795,7 @@ int dispatch_request(
       * req_deletejob() function.
      */

-      if (is_array(request->rq_ind.rq_delete.rq_objname))
+      if (is_id_array(request->rq_ind.rq_delete.rq_objname))
        rc = req_deletearray(request);
      else
        rc = req_deletejob(request);
@@ -803,7 +803,7 @@ int dispatch_request(
      break;

    case PBS_BATCH_HoldJob:
-      if (is_array(request->rq_ind.rq_hold.rq_orig.rq_objname))
+      if (is_id_array(request->rq_ind.rq_hold.rq_orig.rq_objname))
        rc = req_holdarray(request);
      else
        rc = req_holdjob(request);
@@ -843,7 +843,7 @@ int dispatch_request(
    case PBS_BATCH_AsyModifyJob:

    case PBS_BATCH_ModifyJob:
-      if (is_array(request->rq_ind.rq_delete.rq_objname))
+      if (is_id_array(request->rq_ind.rq_delete.rq_objname))
        rc = req_modifyarray(request);
      else
        req_modifyjob(request);
@@ -888,7 +888,7 @@ int dispatch_request(

    case PBS_BATCH_ReleaseJob:

-      if (is_array(request->rq_ind.rq_delete.rq_objname))
+      if (is_id_array(request->rq_ind.rq_delete.rq_objname))
        rc = req_releasearray(request);
      else
        rc = req_releasejob(request);
@@ -972,7 +972,7 @@ int dispatch_request(

    case PBS_BATCH_RegistDep:

-      if (is_array(request->rq_ind.rq_register.rq_parent))
+      if (is_id_array(request->rq_ind.rq_register.rq_parent))
        {
        rc = req_registerarray(request);
        }
diff --git a/src/server/req_quejob.c b/src/server/req_quejob.c
index e30acbb59d..5ce1ec3fdf 100644
--- a/src/server/req_quejob.c
+++ b/src/server/req_quejob.c
@@ -326,7 +326,7 @@ void sum_select_mem_request(
      tmp = atoi(current);

      /* advance past the digits to the units */
-      while ((current != '\0') &&
+      while ((*current != '\0') &&
             (isdigit(*current)))
        current++;

diff --git a/src/server/req_runjob.c b/src/server/req_runjob.c
index 8b128b8dba..59dbe77b48 100644
--- a/src/server/req_runjob.c
+++ b/src/server/req_runjob.c
@@ -1676,8 +1676,14 @@ job *chk_job_torun(

  if ((pjob->ji_qs.ji_state != JOB_STATE_QUEUED) && (pjob->ji_qs.ji_state != JOB_STATE_HELD))
    {
-    sprintf(EMsg, "job %s state %s", pjob->ji_qs.ji_jobid, PJobState[pjob->ji_qs.ji_state]);
-    req_reject(PBSE_BADSTATE, 0, preq, NULL, EMsg);
+    std::string err_msg;
+
+    err_msg = "job ";
+    err_msg += pjob->ji_qs.ji_jobid;
+    err_msg += " state ";
+    err_msg += PJobState[pjob->ji_qs.ji_state];
+
+    req_reject(PBSE_BADSTATE, 0, preq, NULL, err_msg.c_str());
    return(NULL);
    }

diff --git a/src/server/req_stat.c b/src/server/req_stat.c
index 21a608aeee..392f22772e 100644
--- a/src/server/req_stat.c
+++ b/src/server/req_stat.c
@@ -241,7 +241,7 @@ int req_stat_job(
    {
    /* status a single job */

-    if (is_array(name))
+    if (is_id_array(name))
      {
      if (type != tjstSummarizeArraysServer)
        {
diff --git a/src/server/svr_chk_owner.c b/src/server/svr_chk_owner.c
index 4b33c57226..b98135710e 100644
--- a/src/server/svr_chk_owner.c
+++ b/src/server/svr_chk_owner.c
@@ -413,9 +413,8 @@ int authenticate_user(

  {
  int    rc;
-  char   uath[PBS_MAXUSER + PBS_MAXHOSTNAME + 1];
  time_t time_now = time(NULL);
-  char   error_msg[1024];
+  std::string error_msg;
  long   acl_enabled = FALSE;

#ifdef MUNGE_AUTH
@@ -437,9 +436,14 @@ int authenticate_user(
    if ((acl_check_my_array_string(my_acl, uh, ACL_User_Host)) == 0)
      {
      *autherr = strdup("User not in authorized user list.");
-      sprintf(error_msg, "%s Requested user %s: requested from host %s",
-                     *autherr, preq->rq_user, preq->rq_host);
-      log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg);
+
+      error_msg = *autherr;
+      error_msg += " Requested user ";
+      error_msg += preq->rq_user;
+      error_msg += ": requested from host ";
+      error_msg += preq->rq_host;
+
+      log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg.c_str());
      return(PBSE_BADCRED);
      }
    }
@@ -447,9 +451,16 @@ int authenticate_user(
  if (strncmp(preq->rq_user, pcred->username, PBS_MAXUSER))
    {
    *autherr = strdup("Users do not match");
-    sprintf(error_msg, "%s: Requested user %s: credential user %s: requested from host %s",
-                   *autherr, preq->rq_user, pcred->username, preq->rq_host);
-    log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg);
+
+    error_msg = *autherr;
+    error_msg += " Requested user ";
+    error_msg += preq->rq_user;
+    error_msg += ": credential user ";
+    error_msg += pcred->username;
+    error_msg += ": requested from host ";
+    error_msg += preq->rq_host;
+
+    log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg.c_str());
    return(PBSE_BADCRED);
    }
#endif
@@ -481,10 +492,14 @@ int authenticate_user(
        (memcmp(sai1, sai2, sizeof(struct sockaddr_in))))
      {
      *autherr = strdup("Hosts do not match");
-
-      sprintf(error_msg, "%s: Requested host %s: credential host: %s",
-        *autherr, preq->rq_host, pcred->hostname);
-      log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg);
+
+      error_msg = *autherr;
+      error_msg += ": Requested host ";
+      error_msg += preq->rq_host;
+      error_msg += ": credential host: ";
+      error_msg += pcred->hostname;
+
+      log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, error_msg.c_str());

      return(PBSE_BADCRED);
      }
@@ -520,10 +535,14 @@ int authenticate_user(
  if (acl_enabled)
    {
    struct array_strings *acl_users = NULL;
-    snprintf(uath, sizeof(uath), "%s@%s", preq->rq_user, preq->rq_host);
+    std::string uath;
+
+    uath = preq->rq_user;
+    uath += "@";
+    uath = preq->rq_host;

    get_svr_attr_arst(SRV_ATR_AclUsers, &acl_users);
-    if (acl_check_my_array_string(acl_users, uath, ACL_User) == 0)
+    if (acl_check_my_array_string(acl_users, uath.c_str(), ACL_User) == 0)
      {
      int       my_err;
      pbs_net_t connect_addr = get_hostaddr(&my_err, preq->rq_host);
diff --git a/src/test/catch_child/scaffolding.c b/src/test/catch_child/scaffolding.c
index 7db1077854..f08383d01e 100644
--- a/src/test/catch_child/scaffolding.c
+++ b/src/test/catch_child/scaffolding.c
@@ -1012,6 +1012,7 @@ int DIS_reply_read(struct tcp_chan *chan, struct batch_reply *preply)
        {
      case 1:
          rc = 1;
+          // fall through
      case 2:
          preply->brp_code = PBSE_NONE;
          LOGLEVEL = 4;
diff --git a/src/test/geteusernam/scaffolding.c b/src/test/geteusernam/scaffolding.c
index ec849ab6df..f2cb83be16 100644
--- a/src/test/geteusernam/scaffolding.c
+++ b/src/test/geteusernam/scaffolding.c
@@ -64,7 +64,7 @@ void get_jobowner(char *from, char *to)
  exit(1);
  }

-int acl_check_my_array_string(struct array_strings *pas, char *name, int type)
+int acl_check_my_array_string(struct array_strings *pas, const char *name, int type)
  {
  return(0);
  }
diff --git a/src/test/node_manager/test_uut.c b/src/test/node_manager/test_uut.c
index 75c23b39af..b4aa98912f 100644
--- a/src/test/node_manager/test_uut.c
+++ b/src/test/node_manager/test_uut.c
@@ -284,12 +284,12 @@ END_TEST
START_TEST(test_kill_job_on_mom)
  {
  struct pbsnode  pnode;
-  char            job_id[20];
+  char            *job_id;
  int             rc;
  unsigned long   addr = 4567;

  memset(&pnode, 0, sizeof(pnode));
-  strcpy(job_id, "33.torque-devtest-03");
+  job_id = strdup("33.torque-devtest-03");

  pnode.change_name("numa3.ac");
  pnode.nd_mom_port = 1234;
diff --git a/src/test/pbs_log/scaffolding.c b/src/test/pbs_log/scaffolding.c
index fc5878c601..d63f053851 100644
--- a/src/test/pbs_log/scaffolding.c
+++ b/src/test/pbs_log/scaffolding.c
@@ -37,8 +37,7 @@ DIR *opendir(const char *name)

int closedir(DIR *dirp)
  {
-  if (dirp != NULL)
-    free(dirp);
+  free(dirp);
  return(0);
  }

diff --git a/src/test/pbsd_main/scaffolding.c b/src/test/pbsd_main/scaffolding.c
index 90110e8fe8..0d7179a795 100644
--- a/src/test/pbsd_main/scaffolding.c
+++ b/src/test/pbsd_main/scaffolding.c
@@ -407,7 +407,7 @@ int get_svr_attr_arst(int index, struct array_strings **arst)
  return(0);
  }

-int acl_check_my_array_string(struct array_strings *pas, char *name, int type)
+int acl_check_my_array_string(struct array_strings *pas, const char *name, int type)
  {
  return(0);
  }
diff --git a/src/test/process_alps_status/scaffolding.c b/src/test/process_alps_status/scaffolding.c
index dd8ab2c577..3c6449aa70 100644
--- a/src/test/process_alps_status/scaffolding.c
+++ b/src/test/process_alps_status/scaffolding.c
@@ -713,6 +713,8 @@ int set_arst(
      pas->as_next = pas->as_buf;

      /* no break, "SET" falls into "MERGE" to add strings */
+      // fall through
+
    case INCR_OLD:
    case MERGE:

diff --git a/src/test/process_request/scaffolding.c b/src/test/process_request/scaffolding.c
index 66618f8900..36aff63746 100644
--- a/src/test/process_request/scaffolding.c
+++ b/src/test/process_request/scaffolding.c
@@ -373,9 +373,9 @@ int req_modify_node(struct batch_request *preq)
  }


-int is_array(char *id)
+int is_id_array(char *id)
  {
-  fprintf(stderr, "The call to is_array needs to be mocked!!\n");
+  fprintf(stderr, "The call to is_id_array needs to be mocked!!\n");
  exit(1);
  }

@@ -489,7 +489,7 @@ int get_svr_attr_b(int index, bool *b)
  return(0);
  }

-int acl_check_my_array_string(struct array_strings *pas, char *name, int type)
+int acl_check_my_array_string(struct array_strings *pas, const char *name, int type)
  {
  return(0);
  }
diff --git a/src/test/req_stat/scaffolding.c b/src/test/req_stat/scaffolding.c
index cbba4d809a..80f1956d61 100644
--- a/src/test/req_stat/scaffolding.c
+++ b/src/test/req_stat/scaffolding.c
@@ -221,9 +221,9 @@ int svr_connect(pbs_net_t hostaddr, unsigned int port, int *err, struct pbsnode
  exit(1);
  }

-int is_array(char *id)
+int is_id_array(char *id)
  {
-  fprintf(stderr, "The call to is_array to be mocked!!\n");
+  fprintf(stderr, "The call to is_id_array to be mocked!!\n");
  exit(1);
  }

diff --git a/src/test/svr_chk_owner/scaffolding.c b/src/test/svr_chk_owner/scaffolding.c
index 6d00f6e381..59a8c84e95 100644
--- a/src/test/svr_chk_owner/scaffolding.c
+++ b/src/test/svr_chk_owner/scaffolding.c
@@ -79,7 +79,7 @@ int get_svr_attr_arst(int index, struct array_strings **arst)
  return(0);
  }

-int acl_check_my_array_string(struct array_strings *pas, char *name, int type)
+int acl_check_my_array_string(struct array_strings *pas, const char *name, int type)
  {
  return(0);
  }
diff --git a/torque.setup.in b/torque.setup.in
index 15716c9b97..b0f2ee305f 100644
--- a/torque.setup.in
+++ b/torque.setup.in
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# torque.setup - create pbs_server database and default queue
#
--- a/src/server/svr_jobfunc.c  2017-08-29 22:25:11.000000000 -0000
+++ b/src/server/svr_jobfunc.c  2019-10-22 14:29:39.465723637 -0000
@@ -4015,16 +4015,18 @@

  {
  int rc = PBSE_NONE;
-  char *err_msg = NULL;
-  char stub_msg[] = "no pos";
+  std::string err_msg;

  if (logging >= 10)
    {
-    err_msg = (char *)calloc(1, MSG_LEN_LONG);
-    if (msg == NULL)
-      msg = stub_msg;
-    snprintf(err_msg, MSG_LEN_LONG, "locking %s in method %s-%s", pjob->ji_qs.ji_jobid, id, msg);
-    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+    err_msg = "locking ";
+    err_msg += pjob->ji_qs.ji_jobid;
+    err_msg += " in method ";
+    err_msg += id;
+    err_msg += "-";
+    if (msg != NULL)
+      err_msg += msg;
+    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
    }

  if (pjob->ji_mutex != NULL)
@@ -4033,9 +4035,11 @@
      {
      if (logging >= 20)
        {
-        snprintf(err_msg, MSG_LEN_LONG, "ALERT: cannot lock job %s mutex in method %s",
-                                     pjob->ji_qs.ji_jobid, id);
-        log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+        err_msg = "ALERT: cannot lock job ";
+        err_msg += pjob->ji_qs.ji_jobid;
+        err_msg += " mutex in method ";
+        err_msg += id;
+        log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
        }
      rc = PBSE_MUTEX;
      }
@@ -4046,9 +4050,6 @@
    log_err(rc, __func__, "Uninitialized mutex pass to pthread_mutex_lock!");
    }

-  if (err_msg != NULL)
-  free(err_msg);
-
  return rc;
  }

@@ -4063,16 +4064,18 @@

  {
  int rc = PBSE_NONE;
-  char *err_msg = NULL;
-  char stub_msg[] = "no pos";
+  std::string err_msg;

  if (logging >= 10)
    {
-    err_msg = (char *)calloc(1, MSG_LEN_LONG);
-    if (msg == NULL)
-      msg = stub_msg;
-    snprintf(err_msg, MSG_LEN_LONG, "unlocking %s in method %s-%s", pjob->ji_qs.ji_jobid, id, msg);
-    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+    err_msg = "unlocking ";
+    err_msg += pjob->ji_qs.ji_jobid;
+    err_msg += " in method ";
+    err_msg += id;
+    err_msg += "-";
+    if (msg != NULL)
+      err_msg += msg;
+    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
    }

  if (pjob->ji_mutex != NULL)
@@ -4081,9 +4084,11 @@
      {
    if (logging >= 20)
        {
-        snprintf(err_msg, MSG_LEN_LONG, "ALERT: cannot unlock job %s mutex in method %s",
-                                            pjob->ji_qs.ji_jobid, id);
-        log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+        err_msg = "ALERT: cannot unlock job ";
+        err_msg += pjob->ji_qs.ji_jobid;
+        err_msg += " mutex in method ";
+        err_msg += id;
+        log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
        }
      rc = PBSE_MUTEX;
      }
@@ -4094,9 +4099,6 @@
    log_err(rc, __func__, "Uninitialized mutex pass to pthread_mutex_unlock!");
    }

-   if (err_msg != NULL)
-     free(err_msg);
-
   return rc;
   }

@@ -4110,32 +4112,33 @@

  {
  int rc = PBSE_NONE;
-  char *err_msg = NULL;
-  char stub_msg[] = "no pos";
+  std::string err_msg;

  if (logging >= 10)
    {
-    err_msg = (char *)calloc(1, MSG_LEN_LONG);
-    if (msg == NULL)
-      msg = stub_msg;
-    snprintf(err_msg, MSG_LEN_LONG, "locking %s in method %s-%s", pa->ai_qs.parent_id, id, msg);
-    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+    err_msg = "locking ";
+    err_msg += pa->ai_qs.parent_id,
+    err_msg += " in method ";
+    err_msg += id;
+    err_msg += "-";
+    if (msg != NULL)
+      err_msg += msg;
+    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
    }

  if (pthread_mutex_lock(pa->ai_mutex) != 0)
    {
    if (logging >= 20)
      {
-      snprintf(err_msg, MSG_LEN_LONG, "ALERT: cannot lock job array %s mutex in method %s",
-                                   pa->ai_qs.parent_id, id);
-      log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+      err_msg = "ALERT: cannot lock job array ";
+      err_msg += pa->ai_qs.parent_id,
+      err_msg += " mutex in method ";
+      err_msg += id;
+      log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
      }
    rc = PBSE_MUTEX;
    }

-  if (err_msg != NULL)
-  free(err_msg);
-
  return rc;
  }

@@ -4149,32 +4152,33 @@

  {
  int rc = PBSE_NONE;
-  char *err_msg = NULL;
-  char stub_msg[] = "no pos";
+  std::string err_msg;

  if (logging >= 10)
    {
-    err_msg = (char *)calloc(1, MSG_LEN_LONG);
-    if (msg == NULL)
-      msg = stub_msg;
-    snprintf(err_msg, MSG_LEN_LONG, "unlocking %s in method %s-%s", pa->ai_qs.parent_id, id, msg);
-    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+    err_msg = "unlocking ";
+    err_msg += pa->ai_qs.parent_id,
+    err_msg += " in method ";
+    err_msg += id;
+    err_msg += "-";
+    if (msg != NULL)
+      err_msg += msg;
+    log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
    }

  if (pthread_mutex_unlock(pa->ai_mutex) != 0)
    {
    if (logging >= 20)
      {
-      snprintf(err_msg, MSG_LEN_LONG, "ALERT: cannot unlock job array %s mutex in method %s",
-                                   pa->ai_qs.parent_id, id);
-      log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg);
+      err_msg = "ALERT: cannot unlock job array ";
+      err_msg += pa->ai_qs.parent_id,
+      err_msg += " mutex in method ";
+      err_msg += id;
+      log_record(PBSEVENT_DEBUG, PBS_EVENTCLASS_NODE, id, err_msg.c_str());
      }
    rc = PBSE_MUTEX;
    }

-  if (err_msg != NULL)
-  free(err_msg);
-
  return rc;
  }