diff options
author | Alex Dupre <ale@FreeBSD.org> | 2004-04-19 12:37:06 +0000 |
---|---|---|
committer | Alex Dupre <ale@FreeBSD.org> | 2004-04-19 12:37:06 +0000 |
commit | cfe00cb6bb60b7867f56c7f0dfa5b254312f6a38 (patch) | |
tree | b20bb0e70bd9183ac217cc5441704bdca52c0267 /mail/vpopmail-devel/files/patch-vpopmail.c | |
parent | Resolve 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.c | 45 |
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); + } + |