Fix a file descriptor leak in opensmtp().

Obtained from:	vpopmail CVS via oliver, roam and
		Michael Bowe <mbowe@pipeline.com.au>
This commit is contained in:
Alex Dupre 2004-04-19 12:37:06 +00:00
parent f2b6b072db
commit cfe00cb6bb
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=107580
2 changed files with 46 additions and 0 deletions

View file

@ -7,6 +7,7 @@
PORTNAME= vpopmail
PORTVERSION= 5.5.0
PORTREVISION= 1
CATEGORIES= mail
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE_EXTENDED}
MASTER_SITE_SUBDIR= ${PORTNAME}

View file

@ -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);
}