# svn update At revision 5. # cd src # svn diff -r 4:5 s_auth.c > s_auth.c.diff # Index: s_auth.c =================================================================== --- s_auth.c (revision 4) +++ s_auth.c (revision 5) @@ -261,11 +261,15 @@ { char authbuf[64]; char ruser[12],system[8]; +char sremp[8],slocp[8]; int len; u_short remp=0,locp=0; *system=0; *ruser=0; +*sremp=0; +*slocp=0; + Debug((DEBUG_NOTICE,"read_authports(%x) fd %d authfd %d stat %d",cptr,cptr->fd,cptr->authfd,cptr->status)); /* * Nasty. Cant allow any other reads from client fd while we're @@ -284,17 +288,23 @@ if((len=recv(cptr->authfd,authbuf,63,0))>=0) #endif { + char *p; + authbuf[len]=0; + if((p=index(authbuf,13)) || (p=index(authbuf,10))) + *p=0; } cptr->lasttime=time(NULL); -if((len>0) && sscanf(authbuf,"%hd , %hd : USERID : %7s : %11s",&remp,&locp,system,ruser)==4) +if((len>0) && strscan(authbuf,"%5 , %5 : USERID : %7 : %11",sremp,slocp,system,ruser)==4) { Debug((DEBUG_INFO,"auth reply ok [%s] [%s]",system,ruser)); + remp=atoi(sremp); + locp=atoi(slocp); } else if(len!=0) { - Debug((DEBUG_ERROR,"local %d remote %d",locp,remp)); + Debug((DEBUG_ERROR,"local %s remote %s",slocp,sremp)); Debug((DEBUG_ERROR,"bad auth reply in [%s]",authbuf)); *ruser=0; }