freebsd-ports/mail/vpopmail-devel/files/patch-vpopmail.c
Alex Dupre cfe00cb6bb Fix a file descriptor leak in opensmtp().
Obtained from:	vpopmail CVS via oliver, roam and
		Michael Bowe <mbowe@pipeline.com.au>
2004-04-19 12:37:06 +00:00

45 lines
1.3 KiB
C

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