Skip to content

Commit 04e52c1

Browse files
bugfix: nginx crashed when binding local address failed from lua.
fmt@entry=0x59c7f6 "bind(%V) failed", args=args@entry=0x7fff82779258) at src/core/ngx_string.c:255
1 parent ed8cb8f commit 04e52c1

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/ngx_http_lua_balancer.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ ngx_http_lua_ffi_balancer_bind_to_local_addr(ngx_http_request_t *r,
994994
bp = (ngx_http_lua_balancer_peer_data_t *) u->peer.data;
995995

996996
if (bp->local == NULL) {
997-
bp->local = ngx_palloc(r->pool, sizeof(ngx_addr_t));
997+
bp->local = ngx_palloc(r->pool, sizeof(ngx_addr_t) + addr_len + 1);
998998
if (bp->local == NULL) {
999999
p = ngx_snprintf(errbuf, *errbuf_size, "no memory");
10001000
*errbuf_size = p - errbuf;
@@ -1009,6 +1009,11 @@ ngx_http_lua_ffi_balancer_bind_to_local_addr(ngx_http_request_t *r,
10091009
return NGX_ERROR;
10101010
}
10111011

1012+
bp->local->name.len = addr_len;
1013+
bp->local->name.data = (u_char *) (bp->local + 1);
1014+
memcpy(bp->local->name.data, addr, addr_len);
1015+
bp->local->name.data[addr_len] = '\0';
1016+
10121017
return NGX_OK;
10131018
}
10141019

0 commit comments

Comments
 (0)