use uint16 instead of char

This commit is contained in:
z3apa3a 2021-04-22 11:21:31 +03:00
parent bad85a3d51
commit cc2979ee5b

View File

@ -255,18 +255,19 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
if(SAISNULL(&param->sinsl))param->sinsl = param->sincr; if(SAISNULL(&param->sinsl))param->sinsl = param->sincr;
#ifndef NOIPV6 #ifndef NOIPV6
else if(cur->cidr && *SAFAMILY(&param->sinsl) == AF_INET6){ else if(cur->cidr && *SAFAMILY(&param->sinsl) == AF_INET6){
char c; uint16_t c;
int i; int i;
for(i = 0; i < 16; i++){ for(i = 0; i < 8; i++){
if(i%8)myrand(&param->sincr, sizeof(param->sincr)); if(i==4)myrand(&param->sincr, sizeof(param->sincr));
else if(i%4) myrand(&param->req, sizeof(param->req)); else if(i==6) myrand(&param->req, sizeof(param->req));
if(i*8 >= cur->cidr) ((char *)SAADDR(&param->sinsl))[i] = rand(); if(i*16 >= cur->cidr) ((uint16_t *)SAADDR(&param->sinsl))[i] |= rand();
else if ((i+1)*8 > cur->cidr){ else if ((i+1)*16 > cur->cidr){
c = rand(); c = rand();
c >>= (cur->cidr - (i*8)); c >>= (cur->cidr - (i*16));
((char *)SAADDR(&param->sinsl))[i] |= c; c |= ntohs(((uint16_t *)SAADDR(&param->sinsl))[i]);
((uint16_t *)SAADDR(&param->sinsl))[i] = htons(c);
} }
} }
} }