Skip to content

Commit eb4c20d

Browse files
committed
More code hardening for CLANG
bug 403
1 parent 5269d0c commit eb4c20d

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

BUILD.NOTES

+4-1
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,7 @@ Before new major release:
249249
- Review and release code
250250
- Run "make check"
251251
- Test that the prolog and epilog run
252-
- Run the test suite with SlurmUser NOT being self
252+
- Run the test suite with SlurmUser NOT being self
253+
- Test for errors reported by CLANG tool:
254+
scan-build -k -v make >m.sb.out 2>&1
255+
# and look for output in /tmp/scan-build-<DATE>

src/common/list.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,8 @@ list_node_create (List l, ListNode *pp, void *x)
956956
i->prev = &p->next;
957957
else if (i->pos == p->next)
958958
i->pos = p;
959-
assert((i->pos == *i->prev) || (i->pos == (*i->prev)->next));
959+
assert((i->pos == *i->prev) ||
960+
((*i->prev) && (i->pos == (*i->prev)->next)));
960961
}
961962

962963
return x;
@@ -996,7 +997,8 @@ list_node_destroy (List l, ListNode *pp)
996997
i->pos = p->next, i->prev = pp;
997998
else if (i->prev == &p->next)
998999
i->prev = pp;
999-
assert((i->pos == *i->prev) || (i->pos == (*i->prev)->next));
1000+
assert((i->pos == *i->prev) ||
1001+
((*i->prev) && (i->pos == (*i->prev)->next)));
10001002
}
10011003
list_node_free(p);
10021004

src/plugins/accounting_storage/mysql/as_mysql_acct.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ extern List as_mysql_get_accts(mysql_conn_t *mysql_conn, uid_t uid,
703703
}
704704
mysql_free_result(result);
705705

706-
if (acct_cond && acct_cond->with_assocs
706+
if (acct_cond && acct_cond->with_assocs && acct_cond->assoc_cond
707707
&& list_count(acct_cond->assoc_cond->acct_list)) {
708708
ListIterator assoc_itr = NULL;
709709
slurmdb_account_rec_t *acct = NULL;

src/slurmctld/controller.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -927,8 +927,10 @@ static void *_slurmctld_rpc_mgr(void *no_data)
927927
sockfd[i] = slurm_init_msg_engine_addrname_port(
928928
node_addr,
929929
slurmctld_conf.slurmctld_port+i);
930-
if (sockfd[i] == SLURM_SOCKET_ERROR)
930+
if (sockfd[i] == SLURM_SOCKET_ERROR) {
931931
fatal("slurm_init_msg_engine_addrname_port error %m");
932+
return NULL; /* Fix CLANG false positive */
933+
}
932934
slurm_get_stream_addr(sockfd[i], &srv_addr);
933935
slurm_get_ip_str(&srv_addr, &port, ip, sizeof(ip));
934936
debug2("slurmctld listening on %s:%d", ip, ntohs(port));
@@ -950,7 +952,7 @@ static void *_slurmctld_rpc_mgr(void *no_data)
950952
int max_fd = -1;
951953
FD_ZERO(&rfds);
952954
for (i=0; i<nports; i++) {
953-
FD_SET(sockfd[i], &rfds); /* CLANG false positive */
955+
FD_SET(sockfd[i], &rfds);
954956
max_fd = MAX(sockfd[i], max_fd);
955957
}
956958
if (select(max_fd+1, &rfds, NULL, NULL, NULL) == -1) {

0 commit comments

Comments
 (0)