From: Jean-Marc Pigeon (Delson) Date: Sun, 15 Jun 2025 03:52:45 +0000 (-0400) Subject: Problem with soc_openfeedsock (memory corruption?) X-Git-Tag: tag-0.9~179 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=5160eb93ab890b62f15739f16eb0ef0a0f4d4b41;p=jmp%2Fmailleur Problem with soc_openfeedsock (memory corruption?) --- diff --git a/Makefile b/Makefile index 766697d..4e9f106 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,8 @@ dbgsorter: clean debug #-------------------------------------------------------------------- #To test sender onesend : clean debug - @ gdb \ + @ \ + gdb \ --args \ ./bin/sender \ -f \ @@ -128,7 +129,8 @@ dbgsend : clean debug @ cp -a \ ./data-sender/* \ $(TESTDIR)/var/spool/$(APPNAME)/queue/ - @ gdb \ + @ \ + gdb \ --args \ bin/sender \ -d2 \ @@ -139,7 +141,7 @@ dbgsend : clean debug #-------------------------------------------------------------------- #testing feed -ONEFEED=feed03.tst +ONEFEED=feed01.tst FEEDPAR = \ $(TESTIP) \ diff --git a/lib/devsoc.c b/lib/devsoc.c index 38f741b..9d6561f 100644 --- a/lib/devsoc.c +++ b/lib/devsoc.c @@ -649,7 +649,7 @@ timeout.tv_sec=swait; hints.ai_family=PF_UNSPEC; hints.ai_flags=HINTFLG; hints.ai_socktype=SOCK_STREAM; -ai=(struct addrinfo *)0; +//ai=(struct addrinfo *)0; phase=0; proceed=true; while (proceed==true) { diff --git a/lib/lvleml.c b/lib/lvleml.c index 54dbec9..d2f6733 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -901,6 +901,14 @@ return done; static RMTTYP *close_mx(RMTTYP *rmt) { +if (rmt!=(RMTTYP *)0) { + rmt->socptr=soc_closefeedsock(rmt->socptr); + rmt->mxs=dns_freemxlist(rmt->mxs); + rmt->orgdomain=rou_freestr(rmt->orgdomain); + rmt->dstdomain=rou_freestr(rmt->dstdomain); + (void) free(rmt); + rmt=(RMTTYP *)0; + } return rmt; } /* @@ -927,6 +935,7 @@ int proceed; done=false; orgdomain=strrchr(tra->mailfrom,'@'); dstdomain=strrchr(tra->rcptto,'@'); +mxs=(MXTYP **)0; rmt=(RMTTYP *)0; phase=0; proceed=true; @@ -946,6 +955,7 @@ while (proceed==true) { case 1 : //looking for MX list orgdomain++; dstdomain++; + mxs=dns_getmx(dstdomain); if (mxs==(MXTYP **)0) { (void) log_fprintlog(rmt->logptr,false,"NO MX found for domain <%s>", dstdomain); @@ -954,6 +964,7 @@ while (proceed==true) { break; case 2 : //creating rmt record rmt=(RMTTYP *)calloc(1,sizeof(RMTTYP *)); + rmt->logptr=logptr; rmt->mxs=mxs; rmt->orgdomain=strdup(orgdomain); rmt->dstdomain=strdup(dstdomain); @@ -1224,11 +1235,11 @@ while (proceed==true) { phase=-1; //lets continue to see other email break; case 3 : //Opening connection if not open - if ((rmt=connect_mx(logptr,*tra))==(RMTTYP *)0) { + if ((rmt=connect_mx(logptr,*tosend))==(RMTTYP *)0) { char cmt[100]; (void) snprintf(cmt,sizeof(cmt),"Unable to contact ANY MX to reach <%s>", - (*tra)->rcptto); + (*tosend)->rcptto); (void) log_fprintlog(logptr,false,cmt); if (tosend!=(TRATYP **)0) { TRATYP **ptr;