Skip to content

Commit 53ac5d6

Browse files
gfrankliuxiaokai-wang
authored andcommitted
Same index integer overflow fix from nginx-upsync-module: weibocom/nginx-upsync-module#139 (#18)
1 parent d3b17e4 commit 53ac5d6

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/ngx_stream_upsync_module.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ typedef struct {
100100
typedef struct {
101101
ngx_str_t host;
102102

103-
ngx_uint_t index;
103+
uint64_t index;
104104

105105
ngx_event_t upsync_ev;
106106
ngx_event_t upsync_timeout_ev;
@@ -699,7 +699,8 @@ static ngx_int_t
699699
ngx_stream_upsync_check_index(ngx_stream_upsync_server_t *upsync_server)
700700
{
701701
char *p;
702-
ngx_uint_t i, index = 0;
702+
ngx_uint_t i;
703+
uint64_t index = 0;
703704
ngx_upsync_conf_t *upsync_type_conf;
704705

705706
upsync_type_conf = upsync_server->upscf->upsync_type_conf;
@@ -711,8 +712,8 @@ ngx_stream_upsync_check_index(ngx_stream_upsync_server_t *upsync_server)
711712
NGX_INDEX_HEARDER_LEN) == 0) {
712713
p = ngx_strchr(state.headers[i][1], '\r');
713714
*p = '\0';
714-
index = ngx_atoi((u_char *)state.headers[i][1],
715-
(size_t)ngx_strlen((u_char *)state.headers[i][1]));
715+
index = strtoull((char *)state.headers[i][1],
716+
(char **)NULL, 10);
716717
break;
717718
}
718719
}
@@ -735,8 +736,8 @@ ngx_stream_upsync_check_index(ngx_stream_upsync_server_t *upsync_server)
735736
NGX_INDEX_ETCD_HEARDER_LEN) == 0) {
736737
p = ngx_strchr(state.headers[i][1], '\r');
737738
*p = '\0';
738-
index = ngx_atoi((u_char *)state.headers[i][1],
739-
(size_t)ngx_strlen((u_char *)state.headers[i][1]));
739+
index = strtoull((char *)state.headers[i][1],
740+
(char **)NULL, 10);
740741
break;
741742
}
742743
}
@@ -2484,15 +2485,15 @@ ngx_stream_upsync_send_handler(ngx_event_t *event)
24842485
ngx_memzero(request, ngx_pagesize);
24852486

24862487
if (upsync_type_conf->upsync_type == NGX_STREAM_UPSYNC_CONSUL) {
2487-
ngx_sprintf(request, "GET %V?recurse&index=%d HTTP/1.0\r\nHost: %V\r\n"
2488+
ngx_sprintf(request, "GET %V?recurse&index=%uL HTTP/1.0\r\nHost: %V\r\n"
24882489
"Accept: */*\r\n\r\n",
24892490
&upscf->upsync_send, upsync_server->index,
24902491
&upscf->upsync_host);
24912492
}
24922493

24932494
if (upsync_type_conf->upsync_type == NGX_STREAM_UPSYNC_ETCD) {
24942495
if (upsync_server->index != 0) {
2495-
ngx_sprintf(request, "GET %V?wait=true&recursive=true&waitIndex=%d"
2496+
ngx_sprintf(request, "GET %V?wait=true&recursive=true&waitIndex=%uL"
24962497
" HTTP/1.0\r\nHost: %V\r\nAccept: */*\r\n\r\n",
24972498
&upscf->upsync_send, upsync_server->index,
24982499
&upscf->upsync_host);
@@ -3496,7 +3497,7 @@ ngx_stream_client_send(ngx_stream_conf_client *client,
34963497
ngx_memzero(request, ngx_pagesize);
34973498

34983499
if (upsync_type_conf->upsync_type == NGX_STREAM_UPSYNC_CONSUL) {
3499-
ngx_sprintf(request, "GET %V?recurse&index=%d HTTP/1.0\r\nHost: %V\r\n"
3500+
ngx_sprintf(request, "GET %V?recurse&index=%uL HTTP/1.0\r\nHost: %V\r\n"
35003501
"Accept: */*\r\n\r\n",
35013502
&upscf->upsync_send, upsync_server->index,
35023503
&upscf->conf_server.name);

0 commit comments

Comments
 (0)