BUG/MEDIUM: mworker/cli: crash when trying to access an old PID in prompt mode

The master process encounter a crash when trying to access an old
process which left from the master CLI.

To reproduce the problem, you need a prompt to a previous worker, then
wait for this worker to leave, once it left launch a command from this
prompt. The s->target is then filled with a NULL which is dereferenced
when trying to connect().

This patch fixes the problem by checking if s->target is NULL.

Must be backported as far as 2.0.
This commit is contained in:
William Lallemand 2021-12-10 14:14:53 +01:00
parent 2b94973e0f
commit dcbe7b91d6

View File

@ -2456,6 +2456,9 @@ read_again:
/* we can connect now */
s->target = pcli_pid_to_server(target_pid);
if (!s->target)
goto server_disconnect;
s->flags |= (SF_DIRECT | SF_ASSIGNED);
channel_auto_connect(req);
}
@ -2480,6 +2483,10 @@ send_help:
b_reset(&req->buf);
b_putblk(&req->buf, "help\n", 5);
goto read_again;
server_disconnect:
pcli_reply_and_close(s, "Can't connect to the target CLI!\n");
return 0;
}
int pcli_wait_for_response(struct stream *s, struct channel *rep, int an_bit)