mail-mta/sendmail: fix CDB map memory leak

Link: https://narkive.com/tsmcN7nY.2
Signed-off-by: Cristian Othón Martínez Vera <cfuga@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@gentoo.org>
This commit is contained in:
Cristian Othón Martínez Vera
2026-02-11 14:43:59 -06:00
committed by Sam James
parent dd813d7597
commit 42c2e7821f
5 changed files with 51 additions and 0 deletions

View File

@@ -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;
}
/*

View File

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

View File

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

View File

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

View File

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