[PATCH] Fixed crash protection in round robin
Maxim Dounin
mdounin at mdounin.ru
Tue Dec 20 08:48:26 UTC 2022
Hello!
On Tue, Dec 20, 2022 at 04:16:37PM +0800, 乔志奇 wrote:
> # HG changeset patch
> # User 乔志奇@Matebook-Qiao <qiaozhiqi2016 at gmail.com>
> # Date 1671521412 -28800
> # Tue Dec 20 15:30:12 2022 +0800
> # Branch nginx-bugfix-crash
> # Node ID 992013158c8970318c20e2e3294dbc9311bb20c8
> # Parent 3108d4d668e4b907868b815f0441d4c893bf4188
> Fixed crash protection in round robin
>
> When all servers in the upstream are in the down state, rrp->peers will be
> NULL, initialization will crash here, and protection is needed.
>
> diff -r 3108d4d668e4 -r 992013158c89
> src/http/ngx_http_upstream_round_robin.c
> --- a/src/http/ngx_http_upstream_round_robin.c Fri Dec 16 01:15:15 2022
> +0400
> +++ b/src/http/ngx_http_upstream_round_robin.c Tue Dec 20 15:30:12 2022
> +0800
> @@ -275,6 +275,10 @@
> rrp->current = NULL;
> rrp->config = 0;
>
> + if (rrp->peers == NULL) {
> + return NGX_ERROR;
> + }
> +
> n = rrp->peers->number;
>
> if (rrp->peers->next && rrp->peers->next->number > n) {
Could you please clarify how rrp->peers can be NULL here? An
example configuration and/or test which demonstrates the problem
would be awesome. Thanks in advance.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list