From: Jean-Marc Pigeon (Delson) Date: Tue, 1 Jul 2025 13:21:56 +0000 (-0400) Subject: Fix memory leak within getsessid X-Git-Tag: tag-0.12~60 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=480c327c12e2fa408f15cf569dd943144a90d561;p=jmp%2Fmailleur Fix memory leak within getsessid --- diff --git a/lib/lvleml.c b/lib/lvleml.c index c8009af..8c25d3b 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -38,9 +38,12 @@ static void freesessid(CONTYP *contact) { -if ((contact->session!=(SESTYP *)0)&&(contact->mailfrom!=(char *)0)) { - contact->session->sfrom=strdup(contact->mailfrom); - (void) sql_mngses(contact->sqlptr,sql_update,&(contact->session)); +(void) rou_alert(0,"JMPDBG freesessid contact->session='%p'",contact->session); +if (contact->session!=(SESTYP *)0) { + if (contact->mailfrom!=(char *)0) { + contact->session->sfrom=strdup(contact->mailfrom); + (void) sql_mngses(contact->sqlptr,sql_update,&(contact->session)); + } contact->session=sql_freeses(contact->session); } } @@ -56,10 +59,10 @@ if ((contact->session!=(SESTYP *)0)&&(contact->mailfrom!=(char *)0)) { static void getsessid(CONTYP *contact) { +(void) rou_alert(0,"JMPDBG getsessid!"); if (contact!=(CONTYP *)0) { char *newsid; - contact->session=(SESTYP *)calloc(1,sizeof(SESTYP)); newsid=eml_getcursesid(contact->mainsesid,contact->numreset); contact->session=(SESTYP *)calloc(1,sizeof(SESTYP)); contact->session->sessid=newsid; @@ -417,6 +420,9 @@ while (proceed==true) { break; case 5 : //check password (void) rou_alert(0,"JMPDBG decoded=<%s>",decoded); + break; + case 6 : //everything is fine + decoded=rou_freestr(decoded); (void) transmit(contact,true,"%d 5.7.4 Authentication successful",IDOK); break; default : //SAFE Guard @@ -1902,7 +1908,7 @@ _Bool proceed; phase=0; proceed=true; while (proceed==true) { - //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase){ case 0 : //check for binding if (contact==(CONTYP *)0) { @@ -1914,8 +1920,6 @@ while (proceed==true) { (void) rou_alert(0,"Contact from peer <%s> to port <%s> terminated", contact->peerip,contact->locserv); contact->socptr=soc_release(contact->socptr); - //(void) kill(getppid(),SIGCHLD); - //(void) rou_alert(0,"%s JMPDBG signal SIGCHLD sent to='%d'",OPEP,getppid()); break; case 2 : //freeing contact memory contact=freecontact(contact);