From: Jean-Marc Pigeon (Delson) Date: Thu, 3 Jul 2025 00:33:43 +0000 (-0400) Subject: Trying to match remote and local md5 X-Git-Tag: tag-0.12~44 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=03a8d077de95bfbe12792d8822a40db78fc55086;p=jmp%2Fmailleur Trying to match remote and local md5 --- diff --git a/lib/lvleml.c b/lib/lvleml.c index 57d5f4d..1f6ef6c 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -354,7 +354,8 @@ static char *get_auth_md5(CONTYP *contact,int delay) char *decoded; TIMESPEC cur; char *seq; -char *b64; +char *code; +USRTYP *usr; char *line; int got; int phase; @@ -366,34 +367,64 @@ cur.tv_nsec/=10000; //100 millisec (void) rou_asprintf(&seq,"<%05d-%s@%s>", cur.tv_nsec,contact->session->sessid,contact->locname); (void) rou_alert(0,"%s JMPDBG SEQ=<%s>",OPEP,seq); -b64=cnv_setb64(seq); +code=(char *)0; +usr=(USRTYP *)0; line=(char *)0; got=0; phase=0; proceed=true; while (proceed==true) { switch (phase) { - case 0 : //preparing a string an sending it + case 0 : { //preparing a string an sending it + char *b64; + + b64=cnv_setb64(seq); (void) transmit(contact,true,"%d %s",SENDB64,b64); got=tcp_getline(contact->socptr,delay,&line); + if (got<0) + phase=999; //Answer not received in due time + b64=rou_freestr(b64); + } break; - case 1 : //extracting B64 - if (got>0) { - char *code; + case 1 : { //extracting code + char *name; //extracted name + char *ptr; - code=cnv_getb64(line); - (void) rou_alert(0,"%s JMPDBG md5 Got <%s>",OPEP,code); + code=cnv_getb64(line); + name=(char *)0; + if ((ptr=strchr(code,' '))!=(char *)0) { + *ptr='\000'; + name=strdup(code); + ptr++; + (void) memmove(code,ptr,strlen(ptr)+1); + } + if (name!=(char *)0) { + (void) sql_mngusr(contact->sqlptr,sql_select,name,&usr); + (void) rou_alert(0,"%s JMPDBG md5 name=<%s>",OPEP,name); + name=rou_freestr(name); + } + if (usr==(USRTYP *)0) { code=rou_freestr(code); - line=rou_freestr(line); + phase=999; } + line=rou_freestr(line); + } break; + case 2 : { //comparing hmac + char *local; + + local=cnv_hashmd5(usr->passwd,(unsigned char *)seq); + (void) rou_alert(0,"JMPDBG local=<%s>",local); + (void) rou_alert(0,"JMPDBG remote=<%s>",code); + local=rou_freestr(local); + usr=sql_freeusr(usr); + } default : //SAFE Guard proceed=false; break; } phase++; } -b64=rou_freestr(b64); seq=rou_freestr(seq); return decoded;