1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-28 10:08:24 +00:00

o Update to 4.0.4

o Add options:
	- WITH_PAM and WITH_STANDALONE_MODE [1]
	- WITHOUT_IPV6 [2]
	- WITHOUT_U_OPTION [3]
o Remove patch merged into distribution

Submitted by:	Sean Wal <sean0x77@yahoo.com> [1]
Prompted by:	too many [2],
		"Karsten W. Rohrbach" <karsten@rohrbach.de> [3]
This commit is contained in:
Mario Sergio Fujikawa Ferreira 2002-04-30 20:05:13 +00:00
parent 438248d5fd
commit 7d6dc21e6e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=58380
3 changed files with 33 additions and 122 deletions

View File

@ -6,8 +6,7 @@
#
PORTNAME= qpopper
PORTVERSION= 4.0.3
PORTREVISION= 3
PORTVERSION= 4.0.4
CATEGORIES= mail ipv6
MASTER_SITES= ftp://ftp.qualcomm.com/eudora/servers/unix/popper/%SUBDIR%/ \
ftp://sunsite.doc.ic.ac.uk/Mirrors/ftp.qualcomm.com/eudora/servers/unix/popper/%SUBDIR%/
@ -16,7 +15,7 @@ DISTNAME= ${PORTNAME}${PORTVERSION}
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 400014
.if ${OSVERSION} >= 400014 && !defined(WITHOUT_IPV6)
PATCH_SITES= http://www.imasy.or.jp/~ume/ipv6/
PATCHFILES= qpopper4.0.3-ipv6-20010504.diff.gz
PATCH_DIST_STRIP= -p1
@ -70,11 +69,25 @@ pre-everything::
@${ECHO_MSG} "WITH_APOP_ONLY=yes builds with APOP authentication only"
@${ECHO_MSG} "WITH_DRAC=yes builds with Dynamic Relay Authorization"
@${ECHO_MSG} " Control support"
@${ECHO_MSG} "WITH_FULL_POPD_DEBUG=yes buils with more verbose debugging"
@${ECHO_MSG} "WITHOUT_IPV6=yes builds without IPv6 support"
@${ECHO_MSG} "WITH_FULL_POPD_DEBUG=yes builds with more verbose debugging"
@${ECHO_MSG} "WITH_PAM=yes builds with PAM authentication"
@${ECHO_MSG} "WITH_POPPASSD=yes builds the poppassd daemon"
@${ECHO_MSG} "WITHOUT_QPOPAUTH_SETUID=yes does not install qpopauth setuid to pop user"
@${ECHO_MSG} "WITH_SAMPLE_POPUSERS_FILE=yes builds a default (otherwise,"
@${ECHO_MSG} " use an empty file) reject file"
@${ECHO_MSG} "WITH_STANDALONE_MODE=yes builds qpopper to be run without inetd"
@${ECHO_MSG} "WITHOUT_U_OPTION=yes forbids daemon command line option"
@${ECHO_MSG} " -u which allows, after a user authenticates,"
@${ECHO_MSG} " process options from a file called"
@${ECHO_MSG} " .qpopper-options in the user's home directory"
@${ECHO_MSG} " This file can be owned by and writable by the"
@${ECHO_MSG} " If improperly written, may cause a buffer"
@${ECHO_MSG} " overflow which may remove such user's mail box"
# If WITH_APOP_ONLY variable present in the environment, qpopper builds
# with APOP authentication only.
@ -95,6 +108,11 @@ BUILD_DEPENDS+= ${LOCALBASE}/lib/libdrac.a:${PORTSDIR}/mail/drac
CONFIGURE_ARGS+= --enable-debugging
.endif
# If WITH_PAM variable present qpopper builds with PAM authentication
.if defined(WITH_PAM)
CONFIGURE_ARGS+= --with-pam=pop3
.endif
# If WITH_POPPASSD variable present in the environment, qpopper builds
# with poppassd support.
.if defined(WITH_POPPASSD)
@ -105,6 +123,12 @@ EPOPPASSD= ""
EPOPPASSD= "@comment "
.endif
# If WITH STANDALONE_MODE variable present qpopper is built so it runs
# without inetd
.if defined(WITH_STANDALONE_MODE)
CONFIGURE_ARGS+= --enable-standalone
.endif
.if exists(/usr/lib/libssl.a) && exists(/usr/lib/libcrypto.a)
CONFIGURE_ARGS+= --with-openssl=/usr
.elif exists(${LOCALBASE}/lib/libssl.a) && exists(${LOCALBASE}/lib/libcrypto.a)
@ -121,9 +145,12 @@ post-patch:
@${RM} -f ${WRKSRC}/popper/md5.h
@${PERL} -pi -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/man/*
.if defined(WITH_POPPASSD)
@${PERL} -pi -ne "s|/usr/bin/smbpasswd|${PREFIX}/bin/smbpasswd|" \
@${PERL} -pi -ne "s|/usr/bin/smbpasswd|${LOCALBASE}/bin/smbpasswd|" \
${WRKSRC}/password/poppassd.c
.endif
.if defined(WITHOUT_U_OPTION)
@${PERL} -pi -e 's|(getopt \(.+?)u|\1|' ${WRKSRC}/popper/main.c
.endif
pre-configure:
@(cd ${WRKSRC}; ${CHMOD} u+w configure*)

View File

@ -1,2 +1,2 @@
MD5 (qpopper4.0.3.tar.gz) = 7dbe34c677e26617b1c02ca8abe1982c
MD5 (qpopper4.0.4.tar.gz) = 77f0968cd10b0d5236114838d9f507e5
MD5 (qpopper4.0.3-ipv6-20010504.diff.gz) = a4d5a3d0990517a2e23eb6f026006d19

View File

@ -1,116 +0,0 @@
--- popper/popper.c.orig Fri Jun 1 23:24:14 2001
+++ popper/popper.c Sun Mar 31 05:03:49 2002
@@ -125,8 +125,8 @@
state_table * s;
char message [ MAXLINELEN ];
pop_result rslt = POP_FAILURE;
- char * tgetline();
- char * getline();
+ ssize_t tgetline();
+ ssize_t getline();
/*
* seed random with the current time to nearest second
@@ -287,7 +287,7 @@
if ( hangup ) {
pop_exit ( &p, HANGUP );
}
- else if ( tgetline ( message, MAXLINELEN, &p, pop_timeout ) == NULL ) {
+ else if ( tgetline ( message, MAXLINELEN, &p, pop_timeout ) < 0 ) {
pop_exit ( &p, (poptimeout) ? TIMEOUT : ABORT );
}
else if ( StackSize ( &(p.InProcess) ) ) {
@@ -400,8 +400,8 @@
* the input is discarded.
*/
-char
-*getline ( char *str, int size, POP *pPOP )
+ssize_t
+getline ( char *str, int size, POP *pPOP )
{
char *p = NULL;
char *pEnd = NULL;
@@ -451,7 +451,7 @@
}
_DEBUG_LOG3 ( pPOP, "getline() returning %d: '%.*s'",
strlen(str), MIN(25, (int) strlen(str)), str );
- return ( str );
+ return ( strlen(str) );
} /* got a line */
nRoom = pPOP->pcInBuf + nBufSz - pPOP->pcInEnd;
@@ -483,7 +483,22 @@
else
len = read ( pPOP->input_fd, junk, sizeof(junk) );
if ( len <= 0 )
- break;
+ {
+ /*
+ * patch by Isao SEKI <iseki@gongon.com> and
+ * Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+ * return 0 is meaningless after buffer overflow
+ */
+
+ /* do not touch buffer before returning
+ * since it seems that qpopper
+ * believes in the contents of str
+ */
+
+ pop_log (pPOP, POP_NOTICE, HERE,
+ "read 0 byte. Possible buffer overflow\n");
+ return (-1);
+ }
q = strchr ( junk, '\n' );
if ( q == NULL ) {
disc += len;
@@ -522,7 +537,7 @@
} /* loop and discard until we see a '\n' */
_DEBUG_LOG1 ( pPOP, "getline() returning %d", strlen(str) );
- return ( str );
+ return ( strlen(str) );
} /* nRoom == 0 */
if ( pPOP->tls_started )
@@ -544,7 +559,7 @@
} /* main loop */
_DEBUG_LOG0 ( pPOP, "getline() returning NULL" );
- return ( NULL );
+ return ( -1 );
}
@@ -552,12 +567,12 @@
/*
* Get a line of input with a timeout. This part does the timeout
*/
-char *
+ssize_t
tgetline ( char *str, int size, POP *p, int timeout )
{
int ring();
-
-
+ ssize_t result;
+
(void) signal ( SIGALRM, VOIDSTAR ring );
alarm ( timeout );
if ( setjmp ( env ) ) {
@@ -565,12 +580,13 @@
pop_log ( p, POP_NOTICE, HERE, "(v%s) Timeout (%d secs) during "
"nw read from %s at %s (%s)",
VERSION, timeout, p->user, p->client, p->ipaddr );
+ result = 0;
}
else
- str = getline ( str, size, p );
+ result = getline ( str, size, p );
alarm ( 0 );
signal ( SIGALRM, SIG_DFL );
- return ( str );
+ return ( result );
}