]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
genlistfqdn: avoid useless memory allocation
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 13 Apr 2023 07:26:27 +0000 (09:26 +0200)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 13 Apr 2023 07:26:27 +0000 (09:26 +0200)
While here lookup for '@' from the end (reverse)

include/strgen.h
src/send_mail.c
src/strgen.c
tests/mlmmj.c

index a707e1157576a4be176e664b8766b440a054fc21..8f63a670f990298e44f30ed51ecd21532d556cf7 100644 (file)
@@ -29,7 +29,7 @@
 char *random_str(void);
 char *random_plus_addr(const char *addr);
 char *genlistname(const char *listaddr);
-char *genlistfqdn(const char *listaddr);
+const char *genlistfqdn(const char *listaddr);
 char *hostnamestr(void);
 char *mydirname(const char *path);
 const char *mybasename(const char *path);
index b5a6f0b997a31c6229d9f17005bf282649fbdbe0..9d3c24891518e61df37e44137ddf0096f5165d7d 100644 (file)
@@ -460,8 +460,8 @@ get_bounce_from_adr(const char *recipient, struct ml *ml,
 {
        char *bounceaddr, *myrecipient;
        char *a = NULL, *mymailfilename;
-       char *staticbounceaddr, *staticbounceaddr_localpart;
-       char *staticbounceaddr_domain;
+       char *staticbounceaddr, *staticbounceaddr_localpart = NULL;
+       const char *staticbounceaddr_domain = NULL;
 
        mymailfilename = xstrdup(mailfilename);
 
@@ -474,9 +474,6 @@ get_bounce_from_adr(const char *recipient, struct ml *ml,
        if (staticbounceaddr) {
                staticbounceaddr_localpart = genlistname(staticbounceaddr);
                staticbounceaddr_domain = genlistfqdn(staticbounceaddr);
-       } else {
-               staticbounceaddr_localpart = NULL;
-               staticbounceaddr_domain = NULL;
        }
 
        if (staticbounceaddr) {
@@ -486,7 +483,6 @@ get_bounce_from_adr(const char *recipient, struct ml *ml,
 
                free(staticbounceaddr);
                free(staticbounceaddr_localpart);
-               free(staticbounceaddr_domain);
        } else {
                xasprintf(&bounceaddr, "%s%sbounces-%d-%s@%s", ml->name,
                    ml->delim, index, myrecipient, ml->fqdn);
@@ -505,8 +501,8 @@ bounce_from_adr(const char *recipient, const char *listadr,
 {
        char *bounceaddr, *myrecipient, *mylistadr;
        char *listdomain, *a = NULL, *mymailfilename;
-       char *staticbounceaddr, *staticbounceaddr_localpart;
-       char *staticbounceaddr_domain;
+       char *staticbounceaddr, *staticbounceaddr_localpart = NULL;
+       const char *staticbounceaddr_domain = NULL;
        int index;
 
        mymailfilename = xstrdup(mailfilename);
@@ -532,9 +528,6 @@ bounce_from_adr(const char *recipient, const char *listadr,
        if (staticbounceaddr) {
                staticbounceaddr_localpart = genlistname(staticbounceaddr);
                staticbounceaddr_domain = genlistfqdn(staticbounceaddr);
-       } else {
-               staticbounceaddr_localpart = NULL;
-               staticbounceaddr_domain = NULL;
        }
 
        if (staticbounceaddr) {
@@ -544,7 +537,6 @@ bounce_from_adr(const char *recipient, const char *listadr,
 
                free(staticbounceaddr);
                free(staticbounceaddr_localpart);
-               free(staticbounceaddr_domain);
        } else {
                xasprintf(&bounceaddr, "%s%sbounces-%d-%s@%s", mylistadr, listdelim,
                        index, myrecipient, listdomain);
index ee5093c076428e5fe4dad49a7ed1e6f6482fe92a..b205d1482d1be808d718470d7a3d2bc59ee5df1b 100644 (file)
@@ -57,13 +57,14 @@ char *genlistname(const char *listaddr)
        return (xstrndup(listaddr, atsign - listaddr));
 }
 
-char *genlistfqdn(const char *listaddr)
+const char *genlistfqdn(const char *listaddr)
 {
        const char *atsign;
 
-       atsign = strchr(listaddr, '@');
-       MY_ASSERT(atsign);
-       return (xstrdup(atsign + 1));
+       atsign = strrchr(listaddr, '@');
+       if (atsign == NULL)
+               return (NULL);
+       return (atsign + 1);
 }
 
 char *hostnamestr(void)
index 1825cc2838c4256e17e0120296a10d4146d98528..d44dd6493a02f780022e0464e53b238b542f8247 100644 (file)
@@ -880,12 +880,12 @@ ATF_TC_BODY(genlistname, tc)
 
 ATF_TC_BODY(genlistfqdn, tc)
 {
-       char *ret;
+       const char *ret;
 
        ret = genlistfqdn("plop@bla");
        ATF_REQUIRE_STREQ(ret, "bla");
        ret = genlistfqdn("plop@bla@meh");
-       ATF_REQUIRE_STREQ(ret, "bla@meh");
+       ATF_REQUIRE_STREQ(ret, "meh");
 }
 
 ATF_TC_BODY(smtp, tc)