summaryrefslogtreecommitdiffstats
path: root/imap/imapd.c
diff options
context:
space:
mode:
authorSam Varshavchik2022-01-17 15:14:06 -0500
committerSam Varshavchik2022-01-17 15:15:02 -0500
commit6ff4d7ff79a967b58b6eca3506b48c5d3219f3dc (patch)
tree651e32310c73c86c316db520174fe89e63bc5e7f /imap/imapd.c
parent49028a9eb32a570b3bc73777d0474e458c1c1949 (diff)
downloadcourier-libs-6ff4d7ff79a967b58b6eca3506b48c5d3219f3dc.tar.bz2
Fix minor memory leaks.
bdbobj_nextkey can leak memory. Looks like some glibc or valgrind configs detect memory leaks from putenv(), use setenv() instead. It's POSIX 2001. Take this opportunity to clean up the test script.
Diffstat (limited to 'imap/imapd.c')
-rw-r--r--imap/imapd.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/imap/imapd.c b/imap/imapd.c
index c0a4aa9..ccc1991 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -6591,16 +6591,11 @@ int uid=0;
static void dogethostname()
{
-char buf[2048];
-char *p;
+ char buf[2048];
if (gethostname(buf, sizeof(buf)) < 0)
strcpy(buf, "courier-imap");
- p=malloc(strlen(buf)+sizeof("HOSTNAME="));
- if (!p)
- write_error_exit(0);
- strcat(strcpy(p, "HOSTNAME="), buf);
- putenv(p);
+ setenv("HOSTNAME", buf, 1);
}
#if 0
@@ -6764,14 +6759,13 @@ int main(int argc, char **argv)
{
const char *p;
- putenv("TCPREMOTEIP=127.0.0.1");
- putenv("TCPREMOTEPORT=0");
+ setenv("TCPREMOTEIP", "127.0.0.1", 1);
+ setenv("TCPREMOTEPORT", "0", 1);
p=getenv("AUTHENTICATED");
if (!p || !*p)
{
struct passwd *pw=getpwuid(getuid());
- char *me;
if (!pw)
{
@@ -6781,12 +6775,7 @@ int main(int argc, char **argv)
exit(1);
}
- me=malloc(sizeof("AUTHENTICATED=")+strlen(pw->pw_name));
- if (!me)
- write_error_exit(0);
-
- strcat(strcpy(me, "AUTHENTICATED="), pw->pw_name);
- putenv(me);
+ setenv("AUTHENTICATED", pw->pw_name, 1);
}
}
@@ -6805,7 +6794,7 @@ int main(int argc, char **argv)
if (!protocol || !*protocol)
protocol="IMAP";
- putenv("IMAP_STARTTLS=NO"); /* No longer grok STARTTLS */
+ setenv("IMAP_STARTTLS", "NO", 1); /* No longer grok STARTTLS */
/* We use select() with a timeout, so use non-blocking filedescs */