summaryrefslogtreecommitdiff
path: root/mail/vpopmail
diff options
context:
space:
mode:
authorPeter Pentchev <roam@FreeBSD.org>2004-04-19 12:09:50 +0000
committerPeter Pentchev <roam@FreeBSD.org>2004-04-19 12:09:50 +0000
commitef5ef83888ffb5d519064da1b4ae2e7bdcaedf3c (patch)
tree933e8df0bab8da549a1e421dbedbaf73fe8a42e7 /mail/vpopmail
parentFix plist. (diff)
Fix a file descriptor leak in opensmtp().
Obtained from: vpopmail CVS via oliver and Michael Bowe <mbowe@pipeline.com.au>
Notes
Notes: svn path=/head/; revision=107577
Diffstat (limited to 'mail/vpopmail')
-rw-r--r--mail/vpopmail/Makefile1
-rw-r--r--mail/vpopmail/files/patch-vpopmail.c45
2 files changed, 46 insertions, 0 deletions
diff --git a/mail/vpopmail/Makefile b/mail/vpopmail/Makefile
index e90604cf3d94..99601df89b4c 100644
--- a/mail/vpopmail/Makefile
+++ b/mail/vpopmail/Makefile
@@ -7,6 +7,7 @@
PORTNAME= vpopmail
PORTVERSION= 5.4.3
+PORTREVISION= 1
CATEGORIES= mail
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
diff --git a/mail/vpopmail/files/patch-vpopmail.c b/mail/vpopmail/files/patch-vpopmail.c
new file mode 100644
index 000000000000..71c6d5e4bed1
--- /dev/null
+++ b/mail/vpopmail/files/patch-vpopmail.c
@@ -0,0 +1,45 @@
+--- vpopmail.c.orig Mon Mar 1 16:33:32 2004
++++ vpopmail.c Sun Apr 18 01:11:37 2004
+@@ -2462,6 +2462,11 @@
+
+ mytime = time(NULL);
+
++ ipaddr = get_remote_ip();
++ if ( ipaddr == NULL ) {
++ return 0;
++ }
++
+ #ifdef FILE_LOCKING
+ /* by default the OPEN_SMTP_LOK_FILE is ~vpopmail/etc/open-smtp.lock */
+ if ( (fs_lok_file=fopen(OPEN_SMTP_LOK_FILE, "w+")) == NULL) return(-1);
+@@ -2481,10 +2486,10 @@
+ }
+ }
+
+- /* by default the OPEN_SMTP_TMP_FILE is ~vpopmail/etc/open-smtp.tmp */
++ /* by default the OPEN_SMTP_TMP_FILE is ~vpopmail/etc/open-smtp.tmp.pid */
+ snprintf(open_smtp_tmp_filename, sizeof(open_smtp_tmp_filename),
+ "%s.%lu", OPEN_SMTP_TMP_FILE, (long unsigned)getpid());
+- /* create the tmp file as open-smtp.tmp.pid */
++ /* create the tmp file */
+ fs_tmp_file = fopen(open_smtp_tmp_filename, "w+");
+
+ if ( fs_tmp_file == NULL ) {
+@@ -2493,17 +2498,6 @@
+ fclose(fs_lok_file);
+ #endif /* FILE_LOCKING */
+ /* failed to create the tmp file */
+- return(-1);
+- }
+-
+- ipaddr = get_remote_ip();
+-
+- if ( ipaddr == NULL ) {
+-#ifdef FILE_LOCKING
+- unlock_lock(fileno(fs_lok_file), 0, SEEK_SET, 0);
+- fclose(fs_lok_file);
+-#endif /* FILE_LOCKING */
+- /* failed to get user's ip address */
+ return(-1);
+ }
+