From faf7f665c3541bf9e1a06469c92015942b40a557 Mon Sep 17 00:00:00 2001 From: z3APA3A <3APA3A@3proxy.ru> Date: Sun, 31 Jan 2016 15:01:17 +0300 Subject: [PATCH] do memset for 'external' sockaddr structures --- src/conf.c | 3 ++- src/proxymain.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/conf.c b/src/conf.c index 896b91f..b050723 100644 --- a/src/conf.c +++ b/src/conf.c @@ -271,9 +271,10 @@ static int h_external(int argc, unsigned char ** argv){ int res; #ifndef NOIPV6 struct sockaddr_in6 sa6; + memset(&sa6, 0, sizeof(sa6)); res = getip46(46, argv[1], (struct sockaddr *)&sa6); if(!res) return 1; - memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&conf.extsa:(void *)&conf.extsa6, &sa6, SASIZE(&sa6)); + memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&conf.extsa:(void *)&conf.extsa6, &sa6, sizeof(sa6)); #else res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa); if(!res) return 1; diff --git a/src/proxymain.c b/src/proxymain.c index 3193081..9bb367e 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -238,8 +238,9 @@ int MODULEMAINFUNC (int argc, char** argv){ { #ifndef NOIPV6 struct sockaddr_in6 sa6; + memset(&sa6, 0, sizeof(sa6)); error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6); - if(!error) memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&srv.extsa:(void *)&srv.extsa6, &sa6, SASIZE(&sa6)); + if(!error) memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&srv.extsa:(void *)&srv.extsa6, &sa6, sizeof(sa6)); #else error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa); #endif