summaryrefslogtreecommitdiff
path: root/mail/vpopmail-devel/files/patch-vpopmail.c
diff options
context:
space:
mode:
authorAlex Dupre <ale@FreeBSD.org>2004-04-19 12:37:06 +0000
committerAlex Dupre <ale@FreeBSD.org>2004-04-19 12:37:06 +0000
commitcfe00cb6bb60b7867f56c7f0dfa5b254312f6a38 (patch)
treeb20bb0e70bd9183ac217cc5441704bdca52c0267 /mail/vpopmail-devel/files/patch-vpopmail.c
parentResolve naming conflict with mail/p5-Mail-Box. (diff)
Fix a file descriptor leak in opensmtp().
Obtained from: vpopmail CVS via oliver, roam and Michael Bowe <mbowe@pipeline.com.au>
Diffstat (limited to '')
-rw-r--r--mail/vpopmail-devel/files/patch-vpopmail.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/mail/vpopmail-devel/files/patch-vpopmail.c b/mail/vpopmail-devel/files/patch-vpopmail.c
new file mode 100644
index 000000000000..71c6d5e4bed1
--- /dev/null
+++ b/mail/vpopmail-devel/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);
+ }
+