From 266e62644c2afb5f068a670f8a9aead7db0d7793 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Tue, 22 Feb 2022 15:45:23 +0300 Subject: [PATCH] Fix RADIUS Login-Service/Login-TCP-Port length --- src/authradius.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/authradius.c b/src/authradius.c index 42fc7ff..58872b9 100644 --- a/src/authradius.c +++ b/src/authradius.c @@ -424,20 +424,18 @@ int radsend(struct clientparam * param, int auth, int stop){ } /* Login-Service */ - op = param->operation; - for(len=0; op; len++)op>>=1; *ptr++ = PW_LOGIN_SERVICE; - *ptr++ = 4; - (*(uint16_t *)ptr)=htons((uint16_t)(len + 1000)); - ptr+=2; - total_length+=4; + *ptr++ = 6; + (*(uint32_t *)ptr)=htonl(param->operation<<8); + ptr+=4; + total_length+=6; /* Login-TCP-Port */ *ptr++ = PW_LOGIN_TCP_PORT; - *ptr++ = 4; - (*(uint16_t *)ptr)=*SAPORT(¶m->req); - ptr+=2; - total_length+=4; + *ptr++ = 6; + (*(uint32_t *)ptr)=htonl((uint32_t)ntohs((*SAPORT(¶m->req)))); + ptr+=4; + total_length+=6; if(*SAFAMILY(¶m->req) == AF_INET6){