Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stream sni: fixed segfault that addr_conf->default_server is NULL #1685

Merged
merged 1 commit into from
Nov 11, 2022

Conversation

chobits
Copy link
Member

@chobits chobits commented Nov 11, 2022

If INET6 is enabled, ngx_stream_add_addrs6 is runned instead of ngx_stream_add_addrs. The stream sni logic forgot to initialize addr_conf->default_server in ngx_stream_add_addrs6().

If INET6 is enabled, ngx_stream_add_addrs6 is runned instead of
ngx_stream_add_addrs. The stream sni logic forgot to initialize
addr_conf->default_server in ngx_stream_add_addrs6().
@chobits
Copy link
Member Author

chobits commented Nov 11, 2022

cc @mrpre

segfault found by tests/nginx-tests/nginx-tests/stream_variables.t

Program received signal SIGSEGV, Segmentation fault.                [9/1955]ngx_stream_init_connection (c=0x558215485e58)
    at src/stream/ngx_stream_handler.c:130
130         s->main_conf = ((ngx_stream_core_srv_conf_t*)addr_conf->default_server)->ctx->main_conf;                                                    (gdb) p addr_conf->default_server
$1 = (void *) 0x0                                                          
 (gdb) bt                                                                    #0  ngx_stream_init_connection (c=0x558215485e58)
    at src/stream/ngx_stream_handler.c:130
#1  0x0000558213cc8a08 in ngx_event_accept (ev=0x5582154a4290)
    at src/event/ngx_event_accept.c:329
#2  0x0000558213cdc696 in ngx_epoll_process_events (cycle=0x55821546b6e0,
    timer=60000, flags=1) at src/event/modules/ngx_epoll_module.c:972
#3  0x0000558213cc4e20 in ngx_process_events_and_timers (
    cycle=0x55821546b6e0) at src/event/ngx_event.c:260
#4  0x0000558213cd99b2 in ngx_worker_process_cycle (cycle=0x55821546b6e0,
    data=0x0) at src/os/unix/ngx_process_cycle.c:811

@chobits
Copy link
Member Author

chobits commented Nov 11, 2022

After this commit, case passed.

$ sh runtest.sh tests/nginx-tests/nginx-tests/stream_variables.t
tests/nginx-tests/nginx-tests/stream_variables.t
tests/nginx-tests/nginx-tests/stream_variables.t .. ok
All tests successful.
Files=1, Tests=10,  0 wallclock secs ( 0.01 usr  0.00 sys +  0.06 cusr  0.05 csys =  0.12 CPU)
Result: PASS

@chobits chobits requested review from mrpre and wangfakang November 11, 2022 11:07
@chobits
Copy link
Member Author

chobits commented Nov 11, 2022

approved by @mrpre

@chobits chobits merged commit a83220a into alibaba:master Nov 11, 2022
@harry-xm
Copy link
Contributor

@chobits Would you mind renaming NGX_STREAM_SNI to T_NGX_STREAM_SNI? This seems to be a Tengine-specific flag.

@chobits
Copy link
Member Author

chobits commented Nov 14, 2022

@harry-xm thats ok to change it to T_XXX

@chobits chobits added this to the 2.4.0 milestone Feb 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants