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