diff options
author | Peter Pentchev <roam@FreeBSD.org> | 2009-03-16 13:51:24 +0000 |
---|---|---|
committer | Peter Pentchev <roam@FreeBSD.org> | 2009-03-16 13:51:24 +0000 |
commit | b060afc4069037288a3209537a6c521940116228 (patch) | |
tree | e23f81c66839a1dd998bda2c2e8a6098c1240e91 | |
parent | 24ad2e513ed14925eb228d169e1bf851621d32e8 (diff) |
Notes
23 files changed, 490 insertions, 81 deletions
diff --git a/mail/vpopmail/Makefile b/mail/vpopmail/Makefile index 4ebcc576fbe3..4015b7925716 100644 --- a/mail/vpopmail/Makefile +++ b/mail/vpopmail/Makefile @@ -6,8 +6,7 @@ # PORTNAME= vpopmail -PORTVERSION= 5.4.26 -PORTREVISION= 1 +PORTVERSION= 5.4.27 CATEGORIES= mail MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= ${PORTNAME} @@ -18,6 +17,8 @@ COMMENT= Easy virtual domain and authentication package for use with qmail BUILD_DEPENDS= ${LOCALBASE}/bin/tcprules:${PORTSDIR}/sysutils/ucspi-tcp RUN_DEPENDS= ${LOCALBASE}/bin/tcprules:${PORTSDIR}/sysutils/ucspi-tcp +PATCH_STRIP= -p1 + USE_QMAIL= yes CONFLICTS= vpopmail-devel-5.* @@ -119,6 +120,14 @@ CONFIGURE_ARGS= --enable-qmaildir=${QMAIL_PREFIX} \ # WITH_SYBASE_APP - the app for connecting to the Sybase server (vpopmail) # WITH_SYBASE_DB - the name of the Sybase database to connect to (vpopmail) # +# Courier IMAP configuration options for authvchkpw +# +# WARNING: This is NOT TESTED, not in the least. +# Please report any success or failure to the port maintainer, +# Peter Pentchev <roam@FreeBSD.org> +# +# WITH_COURIER_IMAPLOGIN - the path to the imaplogin program +# WITH_COURIER_IMAPD - the path to the imapd program RELAYCLEAR?= 30 SPAM_THRESHOLD?=15 @@ -322,10 +331,14 @@ CONFIGURE_ARGS+= --enable-spamassassin \ --enable-spamc-prog=${LOCALBASE}/bin/spamc \ --enable-spam-threshold=${SPAM_THRESHOLD} .if defined(WITH_SPAMFOLDER) -CONFIGURE_ARGS+= --enable-spam-junkfolder +CONFIGURE_ARGS+= --enable-spam-junkfolder .endif .endif +WITH_COURIER_IMAPLOGIN?= ${LOCALBASE}/sbin/imaplogin +WITH_VPOPMAIL_AUTHVCHKPW?= ${PREFIX}/vpopmail/bin/authvchkpw +WITH_COURIER_IMAPD?= ${LOCALBASE}/bin/imapd + DOCS= README README.activedirectory README.filelocking \ README.ipaliasdomains README.ldap README.maildrop \ README.mysql \ @@ -387,6 +400,9 @@ pre-configure: ${REINPLACE_CMD} -E -e "s/(#define SYBASE_DATABASE.*)vpopmail(.*)/\1${WITH_SYBASE_DB}\2/" ${WRKSRC}/vsybase.h .endif .endif + ${REINPLACE_CMD} -E -e "s@(#define PATH_IMAPLOGIN.*)VPOPMAILDIR.*@\1\"${WITH_COURIER_IMAPLOGIN}\"@" ${WRKSRC}/authvchkpw.c + ${REINPLACE_CMD} -E -e "s@(#define PATH_AUTHVCHKPW.*)VPOPMAILDIR.*@\1\"${WITH_VPOPMAIL_AUTHVCHKPW}\"@" ${WRKSRC}/authvchkpw.c + ${REINPLACE_CMD} -E -e "s@(#define PATH_IMAPD.*)VPOPMAILDIR.*@\1\"${WITH_COURIER_IMAPD}\"@" ${WRKSRC}/authvchkpw.c ${MKDIR} ${VCFGDIR} post-install: diff --git a/mail/vpopmail/distinfo b/mail/vpopmail/distinfo index 1fd06f4edb1d..c5d3d7168d6b 100644 --- a/mail/vpopmail/distinfo +++ b/mail/vpopmail/distinfo @@ -1,3 +1,3 @@ -MD5 (vpopmail-5.4.26.tar.gz) = 152380bf92892805708f568e9b1a9ac8 -SHA256 (vpopmail-5.4.26.tar.gz) = 6212191b045615c1f2cf8ed3bc6c18326ec6547e30962da07455ab2119f58fb2 -SIZE (vpopmail-5.4.26.tar.gz) = 523930 +MD5 (vpopmail-5.4.27.tar.gz) = 1deaa77ec6841f9aa65c0ea8908a53da +SHA256 (vpopmail-5.4.27.tar.gz) = 8bd6fa09294ae1d450f9e976f04d1ef4661ff01b992aad2fbe41d8ed2651b306 +SIZE (vpopmail-5.4.27.tar.gz) = 525807 diff --git a/mail/vpopmail/files/Makefile.in-noportdocs.patch b/mail/vpopmail/files/Makefile.in-noportdocs.patch index 79c6a88e2acb..fa071d3b0064 100644 --- a/mail/vpopmail/files/Makefile.in-noportdocs.patch +++ b/mail/vpopmail/files/Makefile.in-noportdocs.patch @@ -1,7 +1,9 @@ -diff -urN -x .svn ../../freebsd-port/vpopmail/Makefile.in ./Makefile.in ---- ../../freebsd-port/vpopmail/Makefile.in Fri Jan 26 17:13:24 2007 -+++ ./Makefile.in Mon Jan 8 13:17:46 2007 -@@ -863,7 +863,7 @@ +Do not install the documentation files. +Only applied if NOPORTDOCS is defined during the port's build. + +--- a/Makefile.in ++++ b/Makefile.in +@@ -998,7 +998,7 @@ @SET_MAKE@ install-exec-am: @@ -10,11 +12,10 @@ diff -urN -x .svn ../../freebsd-port/vpopmail/Makefile.in ./Makefile.in if test ! -d $(DESTDIR)@vpopmaildir@/$$d; then \ $(INSTALL) -d -g @vpopgroup@ -m 0755 -o @vpopuser@ \ $(DESTDIR)@vpopmaildir@/$$d ; \ -@@ -919,14 +919,6 @@ - $(INSTALL) -o root -m 0444 $$include \ +@@ -1054,14 +1054,6 @@ $(DESTDIR)@vpopmaildir@/include/ ; \ done -- + - $(INSTALL) -d $(DESTDIR)@vpopmaildir@/doc/man_html - $(INSTALL) -d $(DESTDIR)@vpopmaildir@/doc/doc_html - $(INSTALL) -o @vpopuser@ -m 0444 -g @vpopgroup@ \ @@ -22,6 +23,7 @@ diff -urN -x .svn ../../freebsd-port/vpopmail/Makefile.in ./Makefile.in - - $(INSTALL) -o @vpopuser@ -m 0444 -g @vpopgroup@ \ - doc/doc_html/*.* $(DESTDIR)@vpopmaildir@/doc/doc_html/ - +- fix-priv: if test -r $(MYSQLCONF); then \ + chown @vpopuser@ $(MYSQLCONF) ; \ diff --git a/mail/vpopmail/files/patch-Makefile.in b/mail/vpopmail/files/patch-Makefile.in index 17c45af7b093..373198353ea8 100644 --- a/mail/vpopmail/files/patch-Makefile.in +++ b/mail/vpopmail/files/patch-Makefile.in @@ -1,8 +1,62 @@ ---- ../../vendor/vpopmail/Makefile.in 2007-10-07 23:44:14.000000000 +0300 -+++ Makefile.in 2007-10-08 16:26:04.000000000 +0300 -@@ -299,12 +299,11 @@ - noinst_HEADERS = md5.h vpopmail.h file_lock.h vauth.h vlimits.h maildirquota.h vcdb.h vldap.h vmysql.h voracle.h vpgsql.h vsybase.h vlog.h global.h hmac_md5.h seek.h - COMMONSOURCES = vpopmail.c md5.c bigdir.c vauth.c file_lock.c vpalias.c seek.c vlimits.c maildirquota.c +Install the config files with a -dist extension. +Do not unconditionally add -fPIC, this is done only for shared libs. +Attach backfill.c and authvchkpw.c to the build. + +--- a/Makefile.in ++++ b/Makefile.in +@@ -44,7 +44,7 @@ + valias$(EXEEXT) vuserinfo$(EXEEXT) vmkpasswd$(EXEEXT) \ + vipmap$(EXEEXT) vdominfo$(EXEEXT) vconvert$(EXEEXT) \ + vkill$(EXEEXT) vmoddomlimits$(EXEEXT) vchangepw$(EXEEXT) \ +- dotqmail2valias$(EXEEXT) vpopmaild$(EXEEXT) vlist$(EXEEXT) ++ dotqmail2valias$(EXEEXT) vpopmaild$(EXEEXT) vlist$(EXEEXT) authvchkpw$(EXEEXT) + subdir = . + DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +@@ -71,7 +71,8 @@ + libvpopmail_a-vpalias.$(OBJEXT) libvpopmail_a-seek.$(OBJEXT) \ + libvpopmail_a-vlimits.$(OBJEXT) \ + libvpopmail_a-maildirquota.$(OBJEXT) \ +- libvpopmail_a-vutil.$(OBJEXT) libvpopmail_a-vlistlib.$(OBJEXT) ++ libvpopmail_a-vutil.$(OBJEXT) libvpopmail_a-vlistlib.$(OBJEXT) \ ++ libvpopmail_a-backfill.$(OBJEXT) + am_libvpopmail_a_OBJECTS = $(am__objects_1) + libvpopmail_a_OBJECTS = $(am_libvpopmail_a_OBJECTS) + am__installdirs = "$(DESTDIR)$(vpopmailbindir)" +@@ -147,6 +148,9 @@ + am_vpopmaild_OBJECTS = vpopmaild.$(OBJEXT) + vpopmaild_OBJECTS = $(am_vpopmaild_OBJECTS) + vpopmaild_DEPENDENCIES = libvpopmail.a ++am_authvchkpw_OBJECTS = authvchkpw.$(OBJEXT) hmac_md5.$(OBJEXT) ++authvchkpw_OBJECTS = $(am_authvchkpw_OBJECTS) ++authvchkpw_DEPENDENCIES = libvpopmail.a + am_vsetuserquota_OBJECTS = vsetuserquota.$(OBJEXT) + vsetuserquota_OBJECTS = $(am_vsetuserquota_OBJECTS) + vsetuserquota_DEPENDENCIES = libvpopmail.a +@@ -170,7 +174,7 @@ + $(vlist_SOURCES) $(vmkpasswd_SOURCES) $(vmoddomlimits_SOURCES) \ + $(vmoduser_SOURCES) $(vpasswd_SOURCES) $(vpopbull_SOURCES) \ + $(vpopmaild_SOURCES) $(vsetuserquota_SOURCES) \ +- $(vuserinfo_SOURCES) ++ $(vuserinfo_SOURCES) $(authvchkpw_SOURCES) + DIST_SOURCES = $(libvpopmail_a_SOURCES) $(clearopensmtp_SOURCES) \ + $(dotqmail2valias_SOURCES) $(vaddaliasdomain_SOURCES) \ + $(vadddomain_SOURCES) $(vadduser_SOURCES) $(valias_SOURCES) \ +@@ -181,7 +185,7 @@ + $(vlist_SOURCES) $(vmkpasswd_SOURCES) $(vmoddomlimits_SOURCES) \ + $(vmoduser_SOURCES) $(vpasswd_SOURCES) $(vpopbull_SOURCES) \ + $(vpopmaild_SOURCES) $(vsetuserquota_SOURCES) \ +- $(vuserinfo_SOURCES) ++ $(vuserinfo_SOURCES) $(authvchkpw_SOURCES) + RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ +@@ -310,14 +314,13 @@ + SUBDIRS = cdb + EXTRA_DIST = README.* cdb/* vcdb.c vldap.c vmysql.c voracle.pc vpgsql.c vsybase.c + noinst_HEADERS = md5.h vpopmail.h file_lock.h vauth.h vlimits.h maildirquota.h vcdb.h vldap.h vmysql.h voracle.h vpgsql.h vsybase.h vlog.h global.h hmac_md5.h seek.h vutil.h +-COMMONSOURCES = vpopmail.c md5.c bigdir.c vauth.c file_lock.c vpalias.c seek.c vlimits.c maildirquota.c vutil.c vlistlib.c ++COMMONSOURCES = vpopmail.c md5.c bigdir.c vauth.c file_lock.c vpalias.c seek.c vlimits.c maildirquota.c vutil.c vlistlib.c backfill.c CONFIG_CLEAN_FILES = vauth.c cdb/conf-cc cdb/conf-ld cdb/compile cdb/load -MYSQLCONF = $(DESTDIR)@vpopmaildir@/etc/vpopmail.mysql -VLIMITS = $(DESTDIR)@vpopmaildir@/etc/vlimits.default @@ -15,3 +69,35 @@ vpopmailbindir = @vpopmaildir@/bin vuserinfo_SOURCES = vuserinfo.c maildirquota.c vuserinfo_LDADD = libvpopmail.a @auth_libs@ +@@ -325,6 +328,8 @@ + vlist_LDADD = libvpopmail.a @auth_libs@ + vpopmaild_SOURCES = vpopmaild.c + vpopmaild_LDADD = libvpopmail.a @auth_libs@ ++authvchkpw_SOURCES = authvchkpw.c hmac_md5.c ++authvchkpw_LDADD = libvpopmail.a @auth_libs@ + vdominfo_SOURCES = vdominfo.c + vdominfo_LDADD = libvpopmail.a @auth_libs@ + vchkpw_SOURCES = vchkpw.c md5.c hmac_md5.c +@@ -524,6 +529,9 @@ + vpopmaild$(EXEEXT): $(vpopmaild_OBJECTS) $(vpopmaild_DEPENDENCIES) + @rm -f vpopmaild$(EXEEXT) + $(LINK) $(vpopmaild_OBJECTS) $(vpopmaild_LDADD) $(LIBS) ++authvchkpw$(EXEEXT): $(authvchkpw_OBJECTS) $(authvchkpw_DEPENDENCIES) ++ @rm -f authvchkpw$(EXEEXT) ++ $(LINK) $(authvchkpw_OBJECTS) $(authvchkpw_LDADD) $(LIBS) + vsetuserquota$(EXEEXT): $(vsetuserquota_OBJECTS) $(vsetuserquota_DEPENDENCIES) + @rm -f vsetuserquota$(EXEEXT) + $(LINK) $(vsetuserquota_OBJECTS) $(vsetuserquota_LDADD) $(LIBS) +@@ -609,6 +617,12 @@ + libvpopmail_a-vlistlib.obj: vlistlib.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvpopmail_a_CFLAGS) $(CFLAGS) -c -o libvpopmail_a-vlistlib.obj `if test -f 'vlistlib.c'; then $(CYGPATH_W) 'vlistlib.c'; else $(CYGPATH_W) '$(srcdir)/vlistlib.c'; fi` + ++libvpopmail_a-backfill.o: backfill.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvpopmail_a_CFLAGS) $(CFLAGS) -c -o libvpopmail_a-backfill.o `test -f 'backfill.c' || echo '$(srcdir)/'`backfill.c ++ ++libvpopmail_a-backfill.obj: backfill.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvpopmail_a_CFLAGS) $(CFLAGS) -c -o libvpopmail_a-backfill.obj `if test -f 'backfill.c'; then $(CYGPATH_W) 'backfill.c'; else $(CYGPATH_W) '$(srcdir)/backfill.c'; fi` ++ + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, diff --git a/mail/vpopmail/files/patch-README.onchange b/mail/vpopmail/files/patch-README.onchange index 6cb2d1912527..bbb0bd606fa8 100644 --- a/mail/vpopmail/files/patch-README.onchange +++ b/mail/vpopmail/files/patch-README.onchange @@ -1,6 +1,7 @@ -diff -urN -x .svn ../../vendor/vpopmail/README.onchange ./README.onchange ---- ../../vendor/vpopmail/README.onchange 2007-10-07 23:44:14.000000000 +0300 -+++ ./README.onchange 2007-10-08 11:53:54.000000000 +0300 +Fix a typo. + +--- a/README.onchange ++++ b/README.onchange @@ -8,7 +8,7 @@ only the inital call triggers the script. For example vadddomain uses vadduser and vmoduser to create the postmaster user, and set its diff --git a/mail/vpopmail/files/patch-README.vdelivermail b/mail/vpopmail/files/patch-README.vdelivermail index 34915ded9153..975e729714fc 100644 --- a/mail/vpopmail/files/patch-README.vdelivermail +++ b/mail/vpopmail/files/patch-README.vdelivermail @@ -1,6 +1,7 @@ -diff -urN -x .svn ../../vendor/vpopmail/README.vdelivermail ./README.vdelivermail ---- ../../vendor/vpopmail/README.vdelivermail 2007-10-07 23:44:14.000000000 +0300 -+++ ./README.vdelivermail 2007-10-08 11:53:30.000000000 +0300 +Fix a typo. + +--- a/README.vdelivermail ++++ b/README.vdelivermail @@ -57,7 +57,7 @@ If you are not sure what you are doing writing .qmail files, and mucking around diff --git a/mail/vpopmail/files/patch-README.vpopmaild b/mail/vpopmail/files/patch-README.vpopmaild index 227f83321619..8b63ade6fd27 100644 --- a/mail/vpopmail/files/patch-README.vpopmaild +++ b/mail/vpopmail/files/patch-README.vpopmaild @@ -1,6 +1,7 @@ -diff -urN -x .svn ../../vendor/vpopmail/README.vpopmaild ./README.vpopmaild ---- ../../vendor/vpopmail/README.vpopmaild 2007-10-07 23:44:14.000000000 +0300 -+++ ./README.vpopmaild 2007-10-08 12:10:43.000000000 +0300 +Fix a couple of typos and grammatical errors. + +--- a/README.vpopmaild ++++ b/README.vpopmaild @@ -243,7 +243,7 @@ Rights required: Must be a valid email address.
@@ -19,7 +20,7 @@ diff -urN -x .svn ../../vendor/vpopmail/README.vpopmaild ./README.vpopmaild means the user can not change passwords.
no_password_change, no_pop, no_webmail, no_imap, bounce_mail, no_relay,
-@@ -630,7 +630,7 @@ +@@ -631,7 +631,7 @@ Rights required: SA_ADMIN
Action: List all domains on the system, and their parent domain.
@@ -28,7 +29,7 @@ diff -urN -x .svn ../../vendor/vpopmail/README.vpopmaild ./README.vpopmaild When both are given, the data is broken up into pages with lines_per_page
lines on each. The page returned is specified by page.
-@@ -1087,7 +1087,7 @@ +@@ -1088,7 +1088,7 @@ The actual error messages are stored in the file vpopmaild.msg for easy translation.
Once there are other language files, I'll create a directory to store the various
language files, and use a symlink to select a language. Error messages are set
diff --git a/mail/vpopmail/files/patch-authvchkpw.c b/mail/vpopmail/files/patch-authvchkpw.c new file mode 100644 index 000000000000..2c88e00429e7 --- /dev/null +++ b/mail/vpopmail/files/patch-authvchkpw.c @@ -0,0 +1,213 @@ +Buffer handling: +- use snprintf() instead of strncpy() to ensure null-termination; +- explicitly pass sizeof(var) as a second argument to snprintf() to + protect against a variable definition changing in the future; +- display the correct amount of failed-to-allocate memory. +Fix a misspelling of TCPREMOTEIP that would prevent POP-before-SMTP. +Enclose a write() into a loop so that it succeeds even for amounts +too large to write at once. +Display an error message if the execv() in exec_local() fails and +propagate the error all the way up to main()'s exit code. +Extract the indiargs as separate defines so that the port's Makefile may +modify them easily. +Mark two function parameters as unused. +Fix a couple of const-related compiler warnings. + +--- a/authvchkpw.c ++++ b/authvchkpw.c +@@ -56,6 +56,18 @@ + #define AUTH_SIZE 512 + #endif + ++#ifndef __unused ++#ifdef __GNUC__ ++#define __unused __attribute__((unused)) ++#else ++#define __unused ++#endif ++#endif ++ ++#define PATH_IMAPLOGIN VPOPMAILDIR"/sbin/imaplogin" ++#define PATH_AUTHVCHKPW VPOPMAILDIR"/libexec/authlib/authvchkpw" ++#define PATH_IMAPD VPOPMAILDIR"/bin/imapd" ++ + int authlen = AUTH_SIZE; + static int exec_local(char **, char *, char *, struct vqpasswd *, char *); + static char hextab[] = "0123456789abcdef"; +@@ -72,7 +84,7 @@ + } + + int +-pw_comp(char *testlogin, char *password, char *challenge, char *response) ++pw_comp(char *login __unused, char *password, char *challenge, char *response) + { + unsigned char digest[16]; + unsigned char digascii[33]; +@@ -107,7 +119,7 @@ + * getEnvConfigStr + */ + void +-getEnvConfigStr(char **source, char *envname, char *defaultValue) ++getEnvConfigStr(char **source, const char *envname, char *defaultValue) + { + if (!(*source = getenv(envname))) + *source = defaultValue; +@@ -117,8 +129,8 @@ + int + Login_Tasks(pw, user, ServiceType) + struct passwd *pw; +- const char *user; +- char *ServiceType; ++ char *user; ++ const char *ServiceType __unused; + { + char *domain, *ptr; + char fqemail[MAX_BUFF]; +@@ -133,17 +145,17 @@ + + if (!pw) + return(1); +- lowerit((char *) user); ++ lowerit(user); + lowerit(pw->pw_name); + if (!(ptr = strchr(user, '@'))) + { + getEnvConfigStr(&domain, "DEFAULT_DOMAIN", DEFAULT_DOMAIN); + lowerit(domain); +- snprintf(fqemail, MAX_BUFF, "%s@%s", user, domain); ++ snprintf(fqemail, sizeof(fqemail), "%s@%s", user, domain); + } else + { + domain = ptr + 1; +- strncpy(fqemail, user, MAX_BUFF); ++ snprintf(fqemail, sizeof(fqemail), "%s", user); + *ptr = 0; + } + if (access(pw->pw_dir, F_OK)) +@@ -157,7 +169,7 @@ + #ifdef MIN_LOGIN_INTERVAL + last_time = vget_lastauth(pw, domain); + #endif +- if (!(ptr = getenv("TCPERMOTEIP"))) ++ if (!(ptr = getenv("TCPREMOTEIP"))) + ptr = "0.0.0.0"; + vset_lastauth(pw->pw_name, domain, ptr); + #ifdef MIN_LOGIN_INTERVAL +@@ -170,10 +182,12 @@ + } + + int +-pipe_exec(char **argv, char *tmpbuf, int len) ++pipe_exec(char **argv, char *tmpbuf, size_t len) + { + int pipe_fd[2]; + void (*pstat) (); ++ ssize_t n; ++ size_t pos; + + if ((pstat = signal(SIGPIPE, SIG_IGN)) == SIG_ERR) + { +@@ -196,7 +210,10 @@ + close(pipe_fd[0]); + if(pipe_fd[1] != 3 && pipe_fd[1] != 4) + close(pipe_fd[1]); +- if(write(4, tmpbuf, len) != len) ++ pos = 0; ++ while(pos < len && (n = write(4, tmpbuf + pos, len - pos)) > 0) ++ pos += n; ++ if (pos < len) + { + fprintf(stderr, "pipe_exec: %s: %s\n", argv[1], strerror(errno)); + signal(SIGPIPE, pstat); +@@ -214,13 +231,13 @@ + { + char *buf, *tmpbuf, *login, *challenge, *crypt_pass, + *prog_name, *service, *service_type; +- char user[AUTH_SIZE], domain[AUTH_SIZE], Email[MAX_BUFF]; ++ char user[MAX_BUFF], domain[MAX_BUFF], Email[MAX_BUFF]; + int count, offset; + uid_t uid; + gid_t gid; + struct vqpasswd *pw; +- char *(indiargs[]) = { VPOPMAILDIR"/sbin/imaplogin", VPOPMAILDIR"/libexec/authlib/authvchkpw", +- VPOPMAILDIR"/bin/imapd", "Maildir", 0 }; ++ char *(indiargs[]) = { PATH_IMAPLOGIN, PATH_AUTHVCHKPW, ++ PATH_IMAPD, "Maildir", 0 }; + + if ((prog_name = strrchr(argv[0], '/'))) + prog_name++; +@@ -274,7 +291,7 @@ + } + if (!(buf = calloc(1, (offset + 1) * sizeof(char)))) + { +- fprintf(stderr, "%s: malloc-%d: %s\n", prog_name, authlen + 1, strerror(errno)); ++ fprintf(stderr, "%s: malloc-%d: %s\n", prog_name, offset + 1, strerror(errno)); + return(1); + } + memcpy(buf, tmpbuf, offset); +@@ -327,7 +344,7 @@ + pipe_exec(argv, buf, offset); + return (1); + } +- snprintf(Email, MAX_BUFF, "%s@%s", user, domain); ++ snprintf(Email, sizeof(Email), "%s@%s", user, domain); + if (vauth_open(0)) + { + fprintf(stderr, "%s: inquery: %s\n", prog_name, strerror(errno)); +@@ -404,8 +421,7 @@ + pipe_exec(argv, buf, offset); + return (1); + } +- exec_local(argv + argc - 2, login, domain, pw, service); +- return(0); ++ return(exec_local(argv + argc - 2, login, domain, pw, service)); + } + + static int +@@ -420,7 +436,7 @@ + #endif + for (cptr = TheUser, ptr = userid;*ptr && *ptr != '@';*cptr++ = *ptr++); + *cptr = 0; +- strncpy(TmpBuf, service, MAX_BUFF); ++ snprintf(TmpBuf, sizeof(TmpBuf), "%s", service); + if ((ptr = strrchr(TmpBuf, ':'))) + *ptr = 0; + status = Login_Tasks(pw, userid, TmpBuf); +@@ -430,22 +446,22 @@ + return(1); + } + close_connection(); +- snprintf(Maildir, MAX_BUFF, "%s/Maildir", status == 2 ? "/mail/tmp" : pw->pw_dir); ++ snprintf(Maildir, sizeof(Maildir), "%s/Maildir", status == 2 ? "/mail/tmp" : pw->pw_dir); + if (access(pw->pw_dir, F_OK) || access(Maildir, F_OK) || chdir(pw->pw_dir)) + { + fprintf(stderr, "chdir: %s: %s\n", pw->pw_dir, strerror(errno)); + return(1); + } +- snprintf(authenv1, MAX_BUFF, "AUTHENTICATED=%s", userid); +- snprintf(authenv2, MAX_BUFF, "AUTHADDR=%s@%s", TheUser, TheDomain); +- snprintf(authenv3, MAX_BUFF, "AUTHFULLNAME=%s", pw->pw_gecos); ++ snprintf(authenv1, sizeof(authenv1), "AUTHENTICATED=%s", userid); ++ snprintf(authenv2, sizeof(authenv2), "AUTHADDR=%s@%s", TheUser, TheDomain); ++ snprintf(authenv3, sizeof(authenv3), "AUTHFULLNAME=%s", pw->pw_gecos); + #ifdef USE_MAILDIRQUOTA + size_limit = parse_quota(pw->pw_shell, &count_limit); +- snprintf(authenv4, MAX_BUFF, "MAILDIRQUOTA=%"PRIu64"S,%"PRIu64"C", size_limit, count_limit); ++ snprintf(authenv4, sizeof(authenv4), "MAILDIRQUOTA=%"PRIu64"S,%"PRIu64"C", size_limit, count_limit); + #else +- snprintf(authenv4, MAX_BUFF, "MAILDIRQUOTA=%sS", pw->pw_shell); ++ snprintf(authenv4, sizeof(authenv4), "MAILDIRQUOTA=%sS", pw->pw_shell); + #endif +- snprintf(authenv5, MAX_BUFF, "MAILDIR=%s", Maildir); ++ snprintf(authenv5, sizeof(authenv5), "MAILDIR=%s", Maildir); + putenv(authenv1); + putenv(authenv2); + putenv(authenv3); +@@ -453,6 +469,7 @@ + putenv(authenv5); + close_connection(); + execv(argv[0], argv); ++ fprintf(stderr, "pipe_exec: %s: %s\n", argv[0], strerror(errno)); + return(1); + } + diff --git a/mail/vpopmail/files/patch-backfill.c b/mail/vpopmail/files/patch-backfill.c new file mode 100644 index 000000000000..b2156922239d --- /dev/null +++ b/mail/vpopmail/files/patch-backfill.c @@ -0,0 +1,33 @@ +Buffer handling: +- convert a strncpy() to snprintf() to ensure null-termination; +- explicitly pass sizeof(var) as the second argument of snprintf(). + +--- a/backfill.c ++++ b/backfill.c +@@ -56,7 +56,7 @@ + return(-1); + #endif + /*- format a new string */ +- snprintf(bak_file, MAX_BUFF, "%s.bak", filename); ++ snprintf(bak_file, sizeof(bak_file), "%s.bak", filename); + if (rename(filename, bak_file)) + { + fprintf(stderr, "rename %s->%s: %s\n", filename, bak_file, strerror(errno)); +@@ -155,7 +155,7 @@ + fprintf(stderr, "%s: No such domain\n", domain); + return((char *) 0); + } +- snprintf(filename, MAX_BUFF, "%s/.dir_control_free", ptr); ++ snprintf(filename, sizeof(filename), "%s/.dir_control_free", ptr); + if (operation == 1) /*- Delete */ + { + if (!(fp = fopen(filename, "r"))) +@@ -193,7 +193,7 @@ + } else + if (operation == 2) /*- add */ + { +- (void) strncpy(tmpbuf, path, MAX_BUFF); ++ snprintf(tmpbuf, sizeof(tmpbuf), "%s", path); + if ((ptr = strstr(tmpbuf, username))) + { + if (ptr != tmpbuf) diff --git a/mail/vpopmail/files/patch-cdb-Makefile b/mail/vpopmail/files/patch-cdb-Makefile index 213fc43728bb..d53e4d358999 100644 --- a/mail/vpopmail/files/patch-cdb-Makefile +++ b/mail/vpopmail/files/patch-cdb-Makefile @@ -1,5 +1,7 @@ ---- cdb/Makefile.orig Thu Jun 15 17:00:43 2006 -+++ cdb/Makefile Thu Jun 15 17:01:23 2006 +Do not unconditionally add -fPIC, this is only done for the shared libs. + +--- a/cdb/Makefile ++++ b/cdb/Makefile @@ -43,7 +43,7 @@ compile: \ warn-auto.sh conf-cc diff --git a/mail/vpopmail/files/patch-config.h.in b/mail/vpopmail/files/patch-config.h.in index 4cbffef593f6..ac7d1a4b4d0f 100644 --- a/mail/vpopmail/files/patch-config.h.in +++ b/mail/vpopmail/files/patch-config.h.in @@ -1,6 +1,7 @@ -diff -urN -x .svn ../../vendor/vpopmail/config.h.in ./config.h.in ---- ../../vendor/vpopmail/config.h.in 2007-12-25 00:51:28.000000000 +0200 -+++ ./config.h.in 2007-12-25 04:13:39.000000000 +0200 +Add two SpamAssassin-related definitions. + +--- a/config.h.in ++++ b/config.h.in @@ -277,6 +277,12 @@ #undef SPAMC_PROG diff --git a/mail/vpopmail/files/patch-configure b/mail/vpopmail/files/patch-configure index 6c00c36966ba..403e704b158b 100644 --- a/mail/vpopmail/files/patch-configure +++ b/mail/vpopmail/files/patch-configure @@ -1,7 +1,14 @@ -diff -urN -x .svn ../../vendor/vpopmail/configure ./configure ---- ../../vendor/vpopmail/configure 2007-12-25 00:51:28.000000000 +0200 -+++ ./configure 2007-12-25 04:16:03.000000000 +0200 -@@ -1308,6 +1308,8 @@ +Add the --enable-spam-threshold and --enable-spam-junkfolder options. +Do not try to create the etc/vpopmail directory and tcp.smtp in place, +this is done by the port at install time. +FreeBSD does not have libresolv. +Pass the correct compiler and linker flags to the cdb build. +FreeBSD does not need -R $libdir (a.k.a. --rpath) - the MySQL client +library is added to ldconfig's search path in its own startup script. + +--- a/configure ++++ b/configure +@@ -1326,6 +1326,8 @@ --enable-onchange-script Enable onchange script. See README.onchange for more info. --enable-spamassassin Enable spamassassin. See README.spamassassin for more info. --enable-spamc-prog=PATH Full path to spamc program /usr/{local/}bin/spamc. @@ -10,7 +17,7 @@ diff -urN -x .svn ../../vendor/vpopmail/configure ./configure --enable-maildrop Enable maildrop. See README.maildrop for more info. --enable-maildrop-prog=PATH Full path to maildrop program /usr/{local/}bin/maildrop. --enable-domains-dir=TEXT Directory in ~vpopmail to store domains (default=domains). -@@ -6729,27 +6731,6 @@ +@@ -6504,27 +6506,6 @@ #---------------------------------------------------------------------- @@ -38,7 +45,7 @@ diff -urN -x .svn ../../vendor/vpopmail/configure ./configure { echo "$as_me:$LINENO: checking whether roaming-users has been enabled" >&5 echo $ECHO_N "checking whether roaming-users has been enabled... $ECHO_C" >&6; } # Check whether --enable-roaming-users was given. -@@ -6836,30 +6817,9 @@ +@@ -6611,30 +6592,9 @@ # Check whether --enable-tcpserver_file was given. if test "${enable_tcpserver_file+set}" = set; then enableval=$enable_tcpserver_file; tcpserver_file="$enableval" @@ -70,7 +77,7 @@ diff -urN -x .svn ../../vendor/vpopmail/configure ./configure { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } -@@ -7368,6 +7328,44 @@ +@@ -7143,6 +7103,44 @@ #define SPAMC_PROG "$spamc_prog" _ACEOF @@ -115,7 +122,16 @@ diff -urN -x .svn ../../vendor/vpopmail/configure ./configure ;; esac -@@ -7688,7 +7686,7 @@ +@@ -7396,7 +7394,7 @@ + { (exit 1); exit 1; }; } + fi + +- auth_libs="-Xlinker -R -Xlinker $libdir -L$libdir $extralibflags -lmysqlclient -lz -lm" ++ auth_libs="-L$libdir $extralibflags -lmysqlclient -lz -lm" + + ;; + +@@ -7463,7 +7461,7 @@ #define USE_LDAP $USE_LDAP _ACEOF @@ -124,7 +140,7 @@ diff -urN -x .svn ../../vendor/vpopmail/configure ./configure auth_inc="-I/usr/local/include" -@@ -10204,8 +10202,8 @@ +@@ -9954,8 +9952,8 @@ ;; esac diff --git a/mail/vpopmail/files/patch-vdelivermail.c b/mail/vpopmail/files/patch-vdelivermail.c index 25dc2b6b406e..ceca87cf5704 100644 --- a/mail/vpopmail/files/patch-vdelivermail.c +++ b/mail/vpopmail/files/patch-vdelivermail.c @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vdelivermail.c ./vdelivermail.c ---- ../../vendor/vpopmail/vdelivermail.c 2007-10-07 23:44:14.000000000 +0300 -+++ ./vdelivermail.c 2008-03-17 11:28:45.000000000 +0200 +Add SpamAssassin support. +Drop the unneeded MAX_ENV_BUFF definition. + +--- a/vdelivermail.c ++++ b/vdelivermail.c @@ -74,6 +74,7 @@ int is_spam(); #endif @@ -115,7 +117,17 @@ diff -urN -x .svn ../../vendor/vpopmail/vdelivermail.c ./vdelivermail.c /* This is an command */ if ( *address == '|' ) { -@@ -1207,19 +1251,22 @@ +@@ -895,9 +939,6 @@ + */ + void run_command(char *prog) + { +- +-#define MAX_ENV_BUFF 100 +- + int child; + char *(args[4]); + int wstat; +@@ -1211,19 +1252,22 @@ * * in the email headers for X-Spam-Level: which * * we put in each spam email * * @@ -142,7 +154,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vdelivermail.c ./vdelivermail.c /* check for blank line, end of headers */ for(k=j,found=0;k<i;++k) { -@@ -1242,13 +1289,19 @@ +@@ -1246,13 +1290,19 @@ } if ( found == 0 ) { InHeaders=0; diff --git a/mail/vpopmail/files/patch-vlist.c b/mail/vpopmail/files/patch-vlist.c index 1803f83340e3..8e17d908f172 100644 --- a/mail/vpopmail/files/patch-vlist.c +++ b/mail/vpopmail/files/patch-vlist.c @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vlist.c ./vlist.c ---- ../../vendor/vpopmail/vlist.c 2007-12-25 05:03:25.000000000 +0200 -+++ ./vlist.c 2007-12-25 07:31:17.000000000 +0200 +Do not impose an arbitrary limit of 100 list entries. +Fix the usage message and an error message. + +--- a/vlist.c ++++ b/vlist.c @@ -44,6 +44,7 @@ #include <sys/stat.h> #include <sys/wait.h> diff --git a/mail/vpopmail/files/patch-vlistlib.c b/mail/vpopmail/files/patch-vlistlib.c index 1d363d36d998..6497481bbb06 100644 --- a/mail/vpopmail/files/patch-vlistlib.c +++ b/mail/vpopmail/files/patch-vlistlib.c @@ -1,6 +1,12 @@ -diff -urN -x .svn ../../vendor/vpopmail/vlistlib.c ./vlistlib.c ---- ../../vendor/vpopmail/vlistlib.c 2007-12-25 05:03:25.000000000 +0200 -+++ ./vlistlib.c 2007-12-25 07:31:17.000000000 +0200 +Honor lots of limits - convert sprintf() to snprintf(), use the correct +limit size, etc. +Check a couple more calls for errors. +Wait for the correct child process - waitpid() instead of wait(). +Add two closedir()'s to fix file descriptor leaks. +Look for the arguments properly if progname should ever containing spaces. + +--- a/vlistlib.c ++++ b/vlistlib.c @@ -193,26 +193,26 @@ if( DomainOnly ) { // Have domain diff --git a/mail/vpopmail/files/patch-vmysql.c b/mail/vpopmail/files/patch-vmysql.c index 1c7b5509cebe..94afce09a399 100644 --- a/mail/vpopmail/files/patch-vmysql.c +++ b/mail/vpopmail/files/patch-vmysql.c @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vmysql.c ./vmysql.c ---- ../../vendor/vpopmail/vmysql.c 2007-10-07 23:44:14.000000000 +0300 -+++ vmysql.c 2007-12-25 03:47:54.000000000 +0200 +Fix the virtual alias support. +Implement SQL_REMOVE_DELETED. + +--- a/vmysql.c ++++ b/vmysql.c @@ -596,12 +596,14 @@ #endif diff --git a/mail/vpopmail/files/patch-vpalias.c b/mail/vpopmail/files/patch-vpalias.c index a3746333c45a..9a5da14c4bca 100644 --- a/mail/vpopmail/files/patch-vpalias.c +++ b/mail/vpopmail/files/patch-vpalias.c @@ -1,6 +1,7 @@ -diff -urN -x .svn ../../vendor/vpopmail/vpalias.c ./vpalias.c ---- ../../vendor/vpopmail/vpalias.c 2007-12-25 05:03:25.000000000 +0200 -+++ ./vpalias.c 2007-12-25 07:31:16.000000000 +0200 +Honor the correct limits. + +--- a/vpalias.c ++++ b/vpalias.c @@ -30,11 +30,11 @@ /* Globals */ diff --git a/mail/vpopmail/files/patch-vpgsql.c b/mail/vpopmail/files/patch-vpgsql.c index 4df66e130519..159d53d477c7 100644 --- a/mail/vpopmail/files/patch-vpgsql.c +++ b/mail/vpopmail/files/patch-vpgsql.c @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c ---- ../../vendor/vpopmail/vpgsql.c 2007-10-07 23:44:14.000000000 +0300 -+++ vpgsql.c 2007-12-25 03:47:54.000000000 +0200 +Implement valias support. +Implement SQL_REMOVE_DELETED. + +--- a/vpgsql.c ++++ b/vpgsql.c @@ -390,13 +390,15 @@ #endif @@ -62,7 +64,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c + + if ( (err=vauth_open(0)) != 0 ) return(NULL); + -+ qnprintf( SqlBufRead, SQL_BUF_SIZE, ++ qnprintf( SqlBufRead, SQL_BUF_SIZE, + "select distinct alias from valias where domain = '%s' order by alias", domain ); + + if ( ! (pgres=PQexec(pgc, SqlBufRead)) @@ -84,7 +86,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c + if (valias_current == NULL) valias_current = temp_entry; + } + PQclear (pgres); -+ pgres = NULL; ++ pgres = NULL; + + if (valias_current == NULL) return NULL; /* no results */ + else return(valias_current->data); @@ -99,7 +101,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c +{ + if (valias_current == NULL) return NULL; + valias_current = linklist_del (valias_current); -+ ++ + if (valias_current == NULL) return NULL; /* no results */ + else return(valias_current->data); +} diff --git a/mail/vpopmail/files/patch-vpopmail.c b/mail/vpopmail/files/patch-vpopmail.c index 1ab4ec597f8a..cdd05eaa566d 100644 --- a/mail/vpopmail/files/patch-vpopmail.c +++ b/mail/vpopmail/files/patch-vpopmail.c @@ -1,6 +1,11 @@ -diff -urN -x .svn ../../vendor/vpopmail/vpopmail.c ./vpopmail.c ---- ../../vendor/vpopmail/vpopmail.c 2007-12-25 05:03:25.000000000 +0200 -+++ ./vpopmail.c 2007-12-25 07:31:16.000000000 +0200 +Implement SpamAssassin support. +Honor limits correctly. +Wait for the correct child process - waitpid() instead of wait(). +Check for a couple more errors. +Add a closedir() to fix a file descriptor leak. + +--- a/vpopmail.c ++++ b/vpopmail.c @@ -945,6 +945,7 @@ /* print error message and return and error */ @@ -14,7 +19,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vpopmail.c ./vpopmail.c } -k = strlen(s) - i - 1; -+k = strlen(s) - i; ++k = strlen(s) - i; if( i>0 ) { for( j=0; j<k; j++ ) { diff --git a/mail/vpopmail/files/patch-vutil.c b/mail/vpopmail/files/patch-vutil.c index 327e507c3d61..cb80e8ffa397 100644 --- a/mail/vpopmail/files/patch-vutil.c +++ b/mail/vpopmail/files/patch-vutil.c @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vutil.c ./vutil.c ---- ../../vendor/vpopmail/vutil.c 2007-12-25 05:03:25.000000000 +0200 -+++ ./vutil.c 2007-12-25 07:31:16.000000000 +0200 +Optimize a lot of calls by just using access(2). +Fix a file descriptor and FILE structure leak. + +--- a/vutil.c ++++ b/vutil.c @@ -76,13 +76,7 @@ */ diff --git a/mail/vpopmail/files/sql-remove-deleted.patch b/mail/vpopmail/files/sql-remove-deleted.patch index 6a8cd18d6bbc..25daff82e702 100644 --- a/mail/vpopmail/files/sql-remove-deleted.patch +++ b/mail/vpopmail/files/sql-remove-deleted.patch @@ -1,7 +1,9 @@ -diff -urN -x .svn ../../freebsd-port/vpopmail/config.h.in ./config.h.in ---- ../../freebsd-port/vpopmail/config.h.in Wed Oct 4 15:59:54 2006 -+++ ./config.h.in Wed Oct 4 16:02:18 2006 -@@ -354,3 +354,5 @@ +Activate the SQL_REMOVE_DELETED code. +Only applied if this is requested at port build time. + +--- a/config.h.in ++++ b/config.h.in +@@ -371,3 +371,5 @@ /* Define to `int' if <sys/types.h> doesn't define. */ #undef uid_t diff --git a/mail/vpopmail/files/vchkpw-smtp-auth.patch b/mail/vpopmail/files/vchkpw-smtp-auth.patch index 9fed9c96371d..6b7c737668a5 100644 --- a/mail/vpopmail/files/vchkpw-smtp-auth.patch +++ b/mail/vpopmail/files/vchkpw-smtp-auth.patch @@ -1,6 +1,8 @@ -diff -urN -x .svn ../../vendor/vpopmail/vchkpw.c ./vchkpw.c ---- ../../vendor/vpopmail/vchkpw.c Tue Oct 3 17:40:12 2006 -+++ ./vchkpw.c Tue Oct 3 17:58:48 2006 +Fix the SMTP auth calculations - use the correct order of arguments. +Only applied if requested at port build time. + +--- a/vchkpw.c ++++ b/vchkpw.c @@ -441,7 +441,8 @@ /* Check CRAM-MD5 auth */ if(ConnType == SMTP_CONN) { diff --git a/mail/vpopmail/pkg-plist b/mail/vpopmail/pkg-plist index 7bedb95d862e..1e07433d886b 100644 --- a/mail/vpopmail/pkg-plist +++ b/mail/vpopmail/pkg-plist @@ -1,3 +1,4 @@ +vpopmail/bin/authvchkpw vpopmail/bin/clearopensmtp vpopmail/bin/dotqmail2valias vpopmail/bin/vaddaliasdomain |