diff --git a/NEWS b/NEWS
index 574eb9f5b83c9b97a0ca7706b00c1dfb2ab20760..1ddc651fa0a737302bd80a0cd1ed15212871d20d 100644
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,8 @@ documents those changes that are of interest to users and administrators.
     completeion, resulting in underflow error messages.
  -- Make "scontrol show daemons" work with long node names.
  -- CRAY - Collect energy using a uint64_t instead of uint32_t.
+ -- Fix incorrect if statements when determining if the user has a default
+    account or wckey.
 
 * Changes in Slurm 16.05.0
 ==========================
diff --git a/src/api/step_launch.c b/src/api/step_launch.c
index 63a9eb3cb1ac5b8627a3de0ef08634e83e996c88..ed02de0c2289f03ba929f4debe9a1c9d7f1a9bbc 100644
--- a/src/api/step_launch.c
+++ b/src/api/step_launch.c
@@ -962,6 +962,12 @@ static int _connect_srun_cr(char *addr)
 	unsigned int sa_len;
 	int fd, rc;
 
+#ifdef UNIX_PATH_MAX
+	if (addr && (strlen(addr) > UNIX_PATH_MAX)) {
+		error("%s: socket path name too long (%s)", __func__, addr);
+		return -1;
+	}
+#endif
 	fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (fd < 0) {
 		error("failed creating cr socket: %m");
diff --git a/src/common/proc_args.c b/src/common/proc_args.c
index 7978f1040d7f811e61c72077a108555c369a724d..4fd6db3e8584c6ef6524b5fbb3037a497f35b0c0 100644
--- a/src/common/proc_args.c
+++ b/src/common/proc_args.c
@@ -833,16 +833,14 @@ bool verify_socket_core_thread_count(const char *arg, int *min_sockets,
 				     cpu_bind_type_t *cpu_bind_type)
 {
 	bool tmp_val,ret_val;
-	int i,j;
+	int i, j;
 	int max_sockets = 0, max_cores = 0, max_threads = 0;
 	const char *cur_ptr = arg;
 	char buf[3][48]; /* each can hold INT64_MAX - INT64_MAX */
-	buf[0][0] = '\0';
-	buf[1][0] = '\0';
-	buf[2][0] = '\0';
 
- 	for (j=0;j<3;j++) {
-		for (i=0;i<47;i++) {
+	memset(buf, 0, sizeof(buf));
+	for (j = 0; j < 3; j++) {
+		for (i = 0; i < 47; i++) {
 			if (*cur_ptr == '\0' || *cur_ptr ==':')
 				break;
 			buf[j][i] = *cur_ptr++;
@@ -850,7 +848,6 @@ bool verify_socket_core_thread_count(const char *arg, int *min_sockets,
 		if (*cur_ptr == '\0')
 			break;
 		xassert(*cur_ptr == ':');
-		buf[j][i] = '\0';
 		cur_ptr++;
 	}
 	/* if cpu_bind_type doesn't already have a auto preference, choose
@@ -868,7 +865,6 @@ bool verify_socket_core_thread_count(const char *arg, int *min_sockets,
 			*cpu_bind_type |= CPU_BIND_TO_THREADS;
 		}
 	}
-	buf[j][i] = '\0';
 
 	ret_val = true;
 	tmp_val = get_resource_arg_range(&buf[0][0], "first arg of -B",
diff --git a/src/common/xstring.c b/src/common/xstring.c
index 7faf22aba6e9cde1e09ba234faacfd4f8b804b55..4d7b455410cefad7d2a2c76cd4babff90bd587d4 100644
--- a/src/common/xstring.c
+++ b/src/common/xstring.c
@@ -402,12 +402,14 @@ char * xstrndup(const char *str, size_t n)
 long int xstrntol(const char *str, char **endptr, size_t n, int base)
 {
 	long int number = 0;
-	char new_str[n+1];
+	char new_str[n+1], *new_endptr = NULL;
 
 	memcpy(new_str, str, n);
 	new_str[n] = '\0';
 
-	number = strtol(new_str, endptr, base);
+	number = strtol(new_str, &new_endptr, base);
+	if (endptr)
+		*endptr = ((char *)str) + (new_endptr - new_str);
 
 	return number;
 }
diff --git a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
index 96b38d117254e468208ce81f534e1d8a832b7e5e..4bed009411e0865e7356e25b27663d357c1d74cc 100644
--- a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
+++ b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
@@ -1426,7 +1426,7 @@ extern int filetxt_jobacct_process_archive(slurmdb_archive_cond_t *arch_cond)
 	}
 
 	/* reopen new logfile in append mode, since slurmctld may write it */
-	if (freopen(filein, "a", new_logfile) == NULL) {
+	if ((new_logfile = freopen(filein, "a", new_logfile)) == NULL) {
 		perror("reopening new logfile");
 		goto finished2;
 	}
diff --git a/src/plugins/accounting_storage/mysql/as_mysql_assoc.c b/src/plugins/accounting_storage/mysql/as_mysql_assoc.c
index e279f7cb2247f8b27b0ea218d4d668c234e83966..904f7432f16f160d08d666a84c440905f8bf4da9 100644
--- a/src/plugins/accounting_storage/mysql/as_mysql_assoc.c
+++ b/src/plugins/accounting_storage/mysql/as_mysql_assoc.c
@@ -410,7 +410,7 @@ static int _make_sure_users_have_default(
 				break;
 			}
 		}
-		if (!rc != SLURM_SUCCESS)
+		if (rc != SLURM_SUCCESS)
 			break;
 		list_iterator_reset(clus_itr);
 	}
diff --git a/src/plugins/accounting_storage/mysql/as_mysql_wckey.c b/src/plugins/accounting_storage/mysql/as_mysql_wckey.c
index 0495dcee31b4a07b00355d8166a7810e178acc24..8ddd686d051f35ba1280f38c0c6ea00a7cc2771f 100644
--- a/src/plugins/accounting_storage/mysql/as_mysql_wckey.c
+++ b/src/plugins/accounting_storage/mysql/as_mysql_wckey.c
@@ -184,7 +184,7 @@ static int _make_sure_users_have_default(
 				break;
 			}
 		}
-		if (!rc != SLURM_SUCCESS)
+		if (rc != SLURM_SUCCESS)
 			break;
 		list_iterator_reset(clus_itr);
 	}
diff --git a/src/plugins/acct_gather_energy/rapl/acct_gather_energy_rapl.c b/src/plugins/acct_gather_energy/rapl/acct_gather_energy_rapl.c
index a3e839ee775a943ea6faffb541971190661590d9..9650e014ab964fb0dc609e19ee5d72bb7f2c2fb1 100644
--- a/src/plugins/acct_gather_energy/rapl/acct_gather_energy_rapl.c
+++ b/src/plugins/acct_gather_energy/rapl/acct_gather_energy_rapl.c
@@ -248,7 +248,7 @@ static void _hardware(void)
 		if (!xstrncmp(buf, "physical id", sizeof("physical id") - 1)) {
 			sscanf(buf, "physical id\t: %d", &pkg);
 
-			if (pkg > MAX_PKGS)
+			if (pkg >= MAX_PKGS)
 				fatal("Slurm can only handle %d sockets for "
 				      "rapl, you seem to have more than that.  "
 				      "Update src/plugins/acct_gather_energy/"
diff --git a/src/plugins/mpi/pmi2/agent.c b/src/plugins/mpi/pmi2/agent.c
index 872f596b1e1863a4659ac92712bfc2f5704e610d..3b2389154e0b88d2a2ef0db5e1c6be0d833b7d54 100644
--- a/src/plugins/mpi/pmi2/agent.c
+++ b/src/plugins/mpi/pmi2/agent.c
@@ -254,7 +254,7 @@ _handle_pmi1_init(int fd, int lrank)
 	debug3("mpi/pmi2: in _handle_pmi1_init");
 
 	while ( (n = read(fd, buf, 64)) < 0 && errno == EINTR);
-	if (n < 0) {
+	if ((n < 0) || (n >= 64)) {
 		error("mpi/pmi2: failed to read PMI1 init command");
 		return SLURM_ERROR;
 	}
diff --git a/src/plugins/proctrack/linuxproc/kill_tree.c b/src/plugins/proctrack/linuxproc/kill_tree.c
index 8ba5e494907f4e7a3e58b23312a08cae38adff8d..d38259c65e7eb7b3855598437f2b59424a9094d5 100644
--- a/src/plugins/proctrack/linuxproc/kill_tree.c
+++ b/src/plugins/proctrack/linuxproc/kill_tree.c
@@ -322,39 +322,48 @@ extern int kill_proc_tree(pid_t top, int sig)
  */
 extern pid_t find_ancestor(pid_t process, char *process_name)
 {
-	char path[PATH_MAX], rbuf[1024];
+	char path[PATH_MAX], *rbuf;
+	ssize_t buf_used;
 	int fd;
 	long pid, ppid;
 
+	rbuf = xmalloc(4096);
 	pid = ppid = (long)process;
 	do {
 		if (ppid <= 1) {
-			return 0;
+			pid = 0;
+			break;
 		}
 
 		sprintf(path, "/proc/%ld/stat", ppid);
 		if ((fd = open(path, O_RDONLY)) < 0) {
-			return 0;
+			pid = 0;
+			break;
 		}
-		if (read(fd, rbuf, 1024) <= 0) {
+		buf_used = read(fd, rbuf, 4096);
+		if ((buf_used <= 0) || (buf_used >= 4096)) {
 			close(fd);
-			return 0;
+			pid = 0;
+			break;
 		}
 		close(fd);
 		if (sscanf(rbuf, "%ld %*s %*s %ld", &pid, &ppid) != 2) {
-			return 0;
+			pid = 0;
+			break;
 		}
 
 		sprintf(path, "/proc/%ld/cmdline", pid);
 		if ((fd = open(path, O_RDONLY)) < 0) {
 			continue;
 		}
-		if (read(fd, rbuf, 1024) <= 0) {
+		buf_used = read(fd, rbuf, 4096);
+		if ((buf_used <= 0) || (buf_used >= 4096)) {
 			close(fd);
 			continue;
 		}
 		close(fd);
 	} while (!strstr(rbuf, process_name));
+	xfree(rbuf);
 
 	return pid;
 }
diff --git a/src/plugins/task/affinity/cpuset.c b/src/plugins/task/affinity/cpuset.c
index 470fc78b667c4e0ce03402f076ad811f35eb367a..219e46db96d989434a22024b3a5ab579808ecb05 100644
--- a/src/plugins/task/affinity/cpuset.c
+++ b/src/plugins/task/affinity/cpuset.c
@@ -230,6 +230,7 @@ int	slurm_set_cpuset(char *base, char *path, pid_t pid, size_t size,
 	 * "mems" must be set before any tasks can be added. */
 	snprintf(file_path, sizeof(file_path), "%s/%smems",
 		 base, cpuset_prefix);
+	memset(mstr, 0, sizeof(mstr));
 	fd = open(file_path, O_RDONLY);
 	if (fd < 0) {
 		error("open(%s): %m", file_path);
diff --git a/src/sattach/sattach.c b/src/sattach/sattach.c
index 8cbec5dbefd046cae8a16054b28a944ae3bcea78..b404107686bbf21d799b8b751574fb9aabc29387 100644
--- a/src/sattach/sattach.c
+++ b/src/sattach/sattach.c
@@ -281,6 +281,7 @@ static slurm_cred_t *_generate_fake_cred(uint32_t jobid, uint32_t stepid,
 	slurm_cred_arg_t arg;
 	slurm_cred_t *cred;
 
+	memset(&arg, 0, sizeof(slurm_cred_arg_t));
 	arg.jobid    = jobid;
 	arg.stepid   = stepid;
 	arg.uid      = uid;
diff --git a/src/slurmd/slurmstepd/pdebug.c b/src/slurmd/slurmstepd/pdebug.c
index d2541a2dc16456f5f38c14aff3827dc067a3cfe8..d842a107d5b645c265e4f12331d1986c1b852f3c 100644
--- a/src/slurmd/slurmstepd/pdebug.c
+++ b/src/slurmd/slurmstepd/pdebug.c
@@ -145,24 +145,32 @@ pdebug_stop_current(stepd_step_rec_t *job)
 static bool _pid_to_wake(pid_t pid)
 {
 #ifdef CLONE_PTRACE
-	char proc_stat[1024], proc_name[22], state[1], *str_ptr;
+	char *proc_stat, proc_name[22], state[1], *str_ptr;
 	int len, proc_fd, ppid, pgrp, session, tty, tpgid;
 	long unsigned flags;
 
 	sprintf (proc_name, "/proc/%d/stat", (int) pid);
 	if ((proc_fd = open(proc_name, O_RDONLY, 0)) == -1)
 		return false;  /* process is now gone */
-	len = read(proc_fd, proc_stat, sizeof(proc_stat));
+	proc_stat = xmalloc(4096);
+	len = read(proc_fd, proc_stat, 4096);
 	close(proc_fd);
-	if (len < 14)
+	if (len < 14) {
+		xfree(proc_stat);
 		return false;
+	}
 	/* skip over "PID (CMD) " */
-	if ((str_ptr = (char *)strrchr(proc_stat, ')')) == NULL)
+	if ((str_ptr = (char *)strrchr(proc_stat, ')')) == NULL) {
+		xfree(proc_stat);
 		return false;
+	}
 	if (sscanf(str_ptr + 2,
 		   "%c %d %d %d %d %d %lu ",
-		   state, &ppid, &pgrp, &session, &tty, &tpgid, &flags) != 7)
+		   state, &ppid, &pgrp, &session, &tty, &tpgid, &flags) != 7) {
+		xfree(proc_stat);
 		return false;
+	}
+	xfree(proc_stat);
 	if ((flags & CLONE_PTRACE) == 0)
 		return true;
 	return false;
diff --git a/src/slurmd/slurmstepd/slurmstepd_job.c b/src/slurmd/slurmstepd/slurmstepd_job.c
index 91aff8d37baafc240af8d4d991142e3adcee69bf..1e4b18d01dc497d41f3761c40a4cf2baaff8f63e 100644
--- a/src/slurmd/slurmstepd/slurmstepd_job.c
+++ b/src/slurmd/slurmstepd/slurmstepd_job.c
@@ -349,6 +349,8 @@ stepd_step_rec_create(launch_tasks_request_msg_t *msg, uint16_t protocol_version
 		slurm_set_addr(&resp_addr,
 			       msg->resp_port[nodeid % msg->num_resp_port],
 			       NULL);
+	} else {
+		memset(&resp_addr, 0, sizeof(slurm_addr_t));
 	}
 	job->user_managed_io = msg->user_managed_io;
 	if (!msg->io_port)
@@ -358,6 +360,8 @@ stepd_step_rec_create(launch_tasks_request_msg_t *msg, uint16_t protocol_version
 		slurm_set_addr(&io_addr,
 			       msg->io_port[nodeid % msg->num_io_port],
 			       NULL);
+	} else {
+		memset(&io_addr, 0, sizeof(slurm_addr_t));
 	}
 
 	srun = srun_info_create(msg->cred, &resp_addr, &io_addr,