commit:     42c2e7821f58eb46902dbb54c6db929ea2fc54be
Author:     Cristian Othón Martínez Vera <cfuga <AT> cfuga <DOT> mx>
AuthorDate: Wed Feb 11 20:43:59 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Feb 11 23:40:27 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=42c2e782

mail-mta/sendmail: fix CDB map memory leak

Link: https://narkive.com/tsmcN7nY.2
Signed-off-by: Cristian Othón Martínez Vera <cfuga <AT> cfuga.mx>
Part-of: https://github.com/gentoo/gentoo/pull/45764
Closes: https://github.com/gentoo/gentoo/pull/45764
Signed-off-by: Sam James <sam <AT> gentoo.org>

 mail-mta/sendmail/files/sendmail-8.18.1-cdb.patch | 47 +++++++++++++++++++++++
 mail-mta/sendmail/sendmail-8.18.1.10-r4.ebuild    |  1 +
 mail-mta/sendmail/sendmail-8.18.1.15-r2.ebuild    |  1 +
 mail-mta/sendmail/sendmail-8.18.1.16-r1.ebuild    |  1 +
 mail-mta/sendmail/sendmail-8.18.2-r1.ebuild       |  1 +
 5 files changed, 51 insertions(+)

diff --git a/mail-mta/sendmail/files/sendmail-8.18.1-cdb.patch 
b/mail-mta/sendmail/files/sendmail-8.18.1-cdb.patch
new file mode 100644
index 000000000000..aee9a747b73d
--- /dev/null
+++ b/mail-mta/sendmail/files/sendmail-8.18.1-cdb.patch
@@ -0,0 +1,47 @@
+Link: https://narkive.com/tsmcN7nY.2 
+
+--- a/sendmail/map.c
++++ b/sendmail/map.c
+@@ -3042,7 +3042,7 @@
+       char **av;
+       int *statp;
+ {
+-      char *data;
++      char *data, *result;
+       struct cdb *cdbmap;
+       unsigned int klen, dlen;
+       int st, fd;
+@@ -3050,6 +3050,7 @@
+       char buf[MAXPATHLEN];
+ 
+       data = NULL;
++      result = NULL;
+       cdbmap = map->map_db1;
+       if (tTd(38, 20))
+               sm_dprintf("cdb_map_lookup(%s, %s)\n", map->map_mname, name);
+@@ -3136,14 +3137,22 @@
+       else
+       {
+               dlen = cdb_datalen(cdbmap);
+-              data = malloc(dlen + 1);
++              data = (char *) sm_malloc(dlen + 1);
++              if (NULL == data)
++              {
++                      *statp = EX_TEMPFAIL;
++                      return NULL;
++              }
+               cdb_read(cdbmap, data, dlen, cdb_datapos(cdbmap));
+               data[dlen] = '\0';
+       }
+       if (bitset(MF_MATCHONLY, map->map_mflags))
+-              return map_rewrite(map, name, strlen(name), NULL);
++              result = map_rewrite(map, name, strlen(name), NULL);
+       else
+-              return map_rewrite(map, data, dlen, av);
++              result = map_rewrite(map, data, dlen, av);
++
++      SM_FREE(data);
++      return result;
+ }
+ 
+ /*

diff --git a/mail-mta/sendmail/sendmail-8.18.1.10-r4.ebuild 
b/mail-mta/sendmail/sendmail-8.18.1.10-r4.ebuild
index 3ba7b980fc98..3d3d4e8c9dbd 100644
--- a/mail-mta/sendmail/sendmail-8.18.1.10-r4.ebuild
+++ b/mail-mta/sendmail/sendmail-8.18.1.10-r4.ebuild
@@ -87,6 +87,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-8.16.1-build-system.patch
        "${FILESDIR}"/${PN}-8.18.1-tcpwrappers.patch
        "${FILESDIR}"/${PN}-8.18.1-more-c23.patch
+       "${FILESDIR}"/${PN}-8.18.1-cdb.patch
 )
 
 src_prepare() {

diff --git a/mail-mta/sendmail/sendmail-8.18.1.15-r2.ebuild 
b/mail-mta/sendmail/sendmail-8.18.1.15-r2.ebuild
index 624a74948ac6..d26adb5cc1c5 100644
--- a/mail-mta/sendmail/sendmail-8.18.1.15-r2.ebuild
+++ b/mail-mta/sendmail/sendmail-8.18.1.15-r2.ebuild
@@ -87,6 +87,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-8.16.1-build-system.patch
        "${FILESDIR}"/${PN}-8.18.1-tcpwrappers.patch
        "${FILESDIR}"/${PN}-8.18.1-more-c23.patch
+       "${FILESDIR}"/${PN}-8.18.1-cdb.patch
 )
 
 src_prepare() {

diff --git a/mail-mta/sendmail/sendmail-8.18.1.16-r1.ebuild 
b/mail-mta/sendmail/sendmail-8.18.1.16-r1.ebuild
index 6d8b04badd2c..6e6bed8467e1 100644
--- a/mail-mta/sendmail/sendmail-8.18.1.16-r1.ebuild
+++ b/mail-mta/sendmail/sendmail-8.18.1.16-r1.ebuild
@@ -85,6 +85,7 @@ PDEPEND="
 PATCHES=(
        "${FILESDIR}"/${PN}-8.13.1-delivered_hdr.patch
        "${FILESDIR}"/${PN}-8.16.1-build-system.patch
+       "${FILESDIR}"/${PN}-8.18.1-cdb.patch
 )
 
 src_prepare() {

diff --git a/mail-mta/sendmail/sendmail-8.18.2-r1.ebuild 
b/mail-mta/sendmail/sendmail-8.18.2-r1.ebuild
index 9e34afe12038..bed697169c2b 100644
--- a/mail-mta/sendmail/sendmail-8.18.2-r1.ebuild
+++ b/mail-mta/sendmail/sendmail-8.18.2-r1.ebuild
@@ -85,6 +85,7 @@ PDEPEND="
 PATCHES=(
        "${FILESDIR}"/${PN}-8.13.1-delivered_hdr.patch
        "${FILESDIR}"/${PN}-8.16.1-build-system.patch
+       "${FILESDIR}"/${PN}-8.18.1-cdb.patch
 )
 
 src_prepare() {

Reply via email to