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:
parent
2b94973e0f
commit
dcbe7b91d6
@ -2456,6 +2456,9 @@ read_again:
|
|||||||
/* we can connect now */
|
/* we can connect now */
|
||||||
s->target = pcli_pid_to_server(target_pid);
|
s->target = pcli_pid_to_server(target_pid);
|
||||||
|
|
||||||
|
if (!s->target)
|
||||||
|
goto server_disconnect;
|
||||||
|
|
||||||
s->flags |= (SF_DIRECT | SF_ASSIGNED);
|
s->flags |= (SF_DIRECT | SF_ASSIGNED);
|
||||||
channel_auto_connect(req);
|
channel_auto_connect(req);
|
||||||
}
|
}
|
||||||
@ -2480,6 +2483,10 @@ send_help:
|
|||||||
b_reset(&req->buf);
|
b_reset(&req->buf);
|
||||||
b_putblk(&req->buf, "help\n", 5);
|
b_putblk(&req->buf, "help\n", 5);
|
||||||
goto read_again;
|
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)
|
int pcli_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user