From 86b78dedd7470a8684134417d427cdb9fe2c23cc Mon Sep 17 00:00:00 2001 From: Max Lv Date: Fri, 23 Jan 2015 15:43:23 +0800 Subject: [PATCH] fix potential overflow --- src/local.c | 6 ++++-- src/redir.c | 6 ++++-- src/server.c | 4 +++- src/tunnel.c | 6 ++++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/local.c b/src/local.c index 551a6579..2ac0609c 100644 --- a/src/local.c +++ b/src/local.c @@ -911,8 +911,10 @@ int main(int argc, char **argv) } break; case 's': - remote_addr[remote_num].host = optarg; - remote_addr[remote_num++].port = NULL; + if (remote_num < MAX_REMOTE_NUM) { + remote_addr[remote_num].host = optarg; + remote_addr[remote_num++].port = NULL; + } break; case 'p': remote_port = optarg; diff --git a/src/redir.c b/src/redir.c index e8dd3f60..b051f2db 100644 --- a/src/redir.c +++ b/src/redir.c @@ -613,8 +613,10 @@ int main(int argc, char **argv) while ((c = getopt(argc, argv, "f:s:p:l:k:t:m:c:b:a:")) != -1) { switch (c) { case 's': - remote_addr[remote_num].host = optarg; - remote_addr[remote_num++].port = NULL; + if (remote_num < MAX_REMOTE_NUM) { + remote_addr[remote_num].host = optarg; + remote_addr[remote_num++].port = NULL; + } break; case 'p': remote_port = optarg; diff --git a/src/server.c b/src/server.c index eeec1c51..dd97fc36 100644 --- a/src/server.c +++ b/src/server.c @@ -1043,7 +1043,9 @@ int main(int argc, char **argv) } break; case 's': - server_host[server_num++] = optarg; + if (server_num < MAX_REMOTE_NUM) { + server_host[server_num++] = optarg; + } break; case 'p': server_port = optarg; diff --git a/src/tunnel.c b/src/tunnel.c index 3899dc5e..da8f0425 100644 --- a/src/tunnel.c +++ b/src/tunnel.c @@ -655,8 +655,10 @@ int main(int argc, char **argv) while ((c = getopt(argc, argv, "f:s:p:l:k:t:m:i:c:b:L:a:uv")) != -1) { switch (c) { case 's': - remote_addr[remote_num].host = optarg; - remote_addr[remote_num++].port = NULL; + if (remote_num < MAX_REMOTE_NUM) { + remote_addr[remote_num].host = optarg; + remote_addr[remote_num++].port = NULL; + } break; case 'p': remote_port = optarg;