]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mlmmj-process: reduce memory allocation
authorBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Feb 2023 15:58:25 +0000 (16:58 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Feb 2023 15:58:25 +0000 (16:58 +0100)
When matching the mailing lists, addrmatch extracts the extra part of the
recipient. only allocate memory for it if there is actually something
there.

src/utils.c
tests/mlmmj.c

index 87f64a232b703272f01c27b47afd6e5c0df7ebd9..1f4c245ddce0492b879d4dfbd73bd2c755c8d0b7 100644 (file)
@@ -273,7 +273,8 @@ addrmatch(const char *listaddr, const char *addr,
 
        if (recipextra) {
                len = atsign - delim;
-               *recipextra = xstrndup(delim, len);
+               if (len > 0)
+                       *recipextra = xstrndup(delim, len);
        }
 
        return (true);
index 96fc89337c30e330ccbb740a4e35a81642d3c26b..281cc93a025f116ba5aac285027f9d8c2af4b045 100644 (file)
@@ -2049,7 +2049,7 @@ ATF_TC_BODY(addrmatch, tc)
        ATF_REQUIRE(!addrmatch("lists@test.org", "nope@test.org", "+", &extra));
        ATF_REQUIRE(!addrmatch("lists@test.org", "nope@test.org", NULL, &extra));
        ATF_REQUIRE(addrmatch("lists@test.org", "lists+@test.org", "+", &extra));
-       ATF_REQUIRE_STREQ(extra, "");
+       ATF_REQUIRE(extra == NULL);
        ATF_REQUIRE(!addrmatch("lists@test.org", "list+@test.org", "+", &extra));
        ATF_REQUIRE(!addrmatch("lists@test.org", "lists+@bla.org", "+", &extra));
        ATF_REQUIRE(!addrmatch("lists@test.org", "bla+@test.org", "+", &extra));