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() {
