diff --git a/src/plugins/sched/wiki/msg.c b/src/plugins/sched/wiki/msg.c index 9c4ce94e45aafa1ec1d9f08abd932b77cb75b014..91103102a35456906e1cf09b755ebbebe9f4d396 100644 --- a/src/plugins/sched/wiki/msg.c +++ b/src/plugins/sched/wiki/msg.c @@ -315,7 +315,7 @@ static size_t _write_bytes(int fd, char *buf, const size_t size) static char * _recv_msg(slurm_fd new_fd) { char header[10]; - uint32_t size; + unsigned long size; char *buf; if (_read_bytes((int) new_fd, header, 9) != 9) { @@ -325,7 +325,7 @@ static char * _recv_msg(slurm_fd new_fd) return NULL; } - if (sscanf(header, "%ul", &size) != 1) { + if (sscanf(header, "%lu", &size) != 1) { err_code = -244; err_msg = "malformed message header"; error("wiki: malformed message header (%s)", header); @@ -357,7 +357,7 @@ static size_t _send_msg(slurm_fd new_fd, char *buf, size_t size) debug("wiki msg send:%s", buf); - (void) sprintf(header, "%08ld\n", (long int) size); + (void) sprintf(header, "%08lu\n", (unsigned long) size); if (_write_bytes((int) new_fd, header, 9) != 9) { error("wiki: failed to write message header %m"); return 0; diff --git a/src/plugins/sched/wiki/start_job.c b/src/plugins/sched/wiki/start_job.c index 00cc6f2018b5d9d8a03feb413198a0f506cb3a59..c8e0cbf623138d35f02fefa71cb55b287f22870f 100644 --- a/src/plugins/sched/wiki/start_job.c +++ b/src/plugins/sched/wiki/start_job.c @@ -51,7 +51,7 @@ extern int start_job(char *cmd_ptr, int *err_code, char **err_msg) int i; uint32_t jobid; hostlist_t hl; - char host_string[1024]; + char host_string[2048]; static char reply_msg[128]; arg_ptr = strstr(cmd_ptr, "ARG="); @@ -82,12 +82,22 @@ extern int start_job(char *cmd_ptr, int *err_code, char **err_msg) node_ptr[i] = ','; } hl = hostlist_create(node_ptr); + if (hl == NULL) { + *err_code = -300; + *err_msg = "STARTJOB TASKLIST is invalid"; + error("wiki: STARTJOB TASKLIST is invalid: %s", + node_ptr"); + return -1; + } + hostlist_uniq(hl); /* for now, don't worry about task layout */ + hostlist_sort(hl); i = hostlist_ranged_string(hl, sizeof(host_string), host_string); hostlist_destroy(hl); if (i < 0) { *err_code = -300; *err_msg = "STARTJOB has invalid TASKLIST"; - error("wiki: STARTJOB has invalid TASKLIST"); + error("wiki: STARTJOB has invalid TASKLIST: %s", + host_string); return -1; } if (_start_job(jobid, host_string, err_code, err_msg) != 0) @@ -146,7 +156,7 @@ static int _start_job(uint32_t jobid, char *hostlist, *err_msg = "Invalid TASKLIST"; error("wiki: Attempt to set invalid node list for job %u, %s", jobid, hostlist); - xfree(hostlist); + xfree(new_node_list); rc = -1; goto fini; }