public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: net-mail/vpopmail/, net-mail/vpopmail/files/
@ 2019-11-17  9:30 Michał Górny
  0 siblings, 0 replies; 3+ messages in thread
From: Michał Górny @ 2019-11-17  9:30 UTC (permalink / raw
  To: gentoo-commits

commit:     6248c40cc4b4411223a9a4f1bf98204c4c05f147
Author:     Rolf Eike Beer <eike <AT> sf-mail <DOT> de>
AuthorDate: Sat Oct 26 17:30:11 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Nov 17 09:30:35 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6248c40c

net-mail/vpopmail: add 2 more patches

Things I hit during testing.

Signed-off-by: Rolf Eike Beer <eike <AT> sf-mail.de>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...-5.4.33-check-crypt-return-value-for-NULL.patch | 146 ++++++++++++
 ...l-5.4.33-use-proper-printf-format-strings.patch | 217 ++++++++++++++++++
 net-mail/vpopmail/vpopmail-5.4.33-r5.ebuild        | 249 +++++++++++++++++++++
 3 files changed, 612 insertions(+)

diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-check-crypt-return-value-for-NULL.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-check-crypt-return-value-for-NULL.patch
new file mode 100644
index 00000000000..cfe5ce90e07
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-check-crypt-return-value-for-NULL.patch
@@ -0,0 +1,146 @@
+From b3a21a4a6d7af3dc14417c89ec2ef2732a24939b Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Sat, 26 Oct 2019 18:14:13 +0200
+Subject: [PATCH 1/2] check crypt() return value for NULL
+
+Passing NULL to strcmp() would lead to a crash otherwise.
+---
+ vcdb.c    |  7 ++++++-
+ vchkpw.c  | 11 +++++++++--
+ vldap.c   |  8 +++++++-
+ vmysql.c  |  8 +++++++-
+ vpgsql.c  |  8 +++++++-
+ vsybase.c |  8 +++++++-
+ 6 files changed, 43 insertions(+), 7 deletions(-)
+
+diff --git a/vcdb.c b/vcdb.c
+index 55c1cb5..1bf9cd8 100644
+--- a/vcdb.c
++++ b/vcdb.c
+@@ -1160,7 +1160,12 @@ void vcdb_strip_char( char *instr )
+ 
+ int vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw)
+ {
++  const char *c;
+   if ( vpw == NULL ) return(-1);
+ 
+-  return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));
++  c = crypt(clear_pass,vpw->pw_passwd);
++
++  if ( c == NULL ) return(-1);
++
++  return(strcmp(c,vpw->pw_passwd));
+ }
+diff --git a/vchkpw.c b/vchkpw.c
+index d7d4351..a7c4b9e 100644
+--- a/vchkpw.c
++++ b/vchkpw.c
+@@ -607,6 +607,7 @@ void login_system_user()
+  struct spwd *spw;
+ #endif
+  struct passwd *pw;
++ const char *c;
+ 
+   if ((pw=getpwnam(TheUser)) == NULL ) {
+     snprintf(LogLine, sizeof(LogLine), "%s: system user not found %s:%s", 
+@@ -626,9 +627,15 @@ void login_system_user()
+     vchkpw_exit(22);
+   }
+ 
+-  if ( strcmp(crypt(ThePass,spw->sp_pwdp),spw->sp_pwdp) != 0 ) {
++  c = crypt(ThePass,spw->sp_pwdp);
++
++  if ( c == NULL ) vchkpw_exit(24);
++  if ( strcmp(c,spw->sp_pwdp) != 0 ) {
+ #else
+-  if ( strcmp(crypt(ThePass,pw->pw_passwd),pw->pw_passwd) != 0 ) {
++  c = crypt(ThePass,pw->pw_passwd);
++
++  if ( c == NULL ) vchkpw_exit(24);
++  if ( strcmp(c,pw->pw_passwd) != 0 ) {
+ #endif
+     if (ENABLE_LOGGING==1||ENABLE_LOGGING==2) {
+       snprintf(LogLine, sizeof(LogLine), "%s: system password fail %s:%s", 
+diff --git a/vldap.c b/vldap.c
+index 75329ef..5fcce99 100644
+--- a/vldap.c
++++ b/vldap.c
+@@ -1495,10 +1495,16 @@ void *safe_malloc (size_t siz) {
+ /***************************************************************************/
+ 
+ int vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw) {
++    const char *c;
++
+     if ( vpw == NULL )
+         return(-1);
+ 
+-    return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));
++    c = crypt(clear_pass,vpw->pw_passwd);
++
++    if ( c == NULL ) return(-1);
++
++    return(strcmp(c,vpw->pw_passwd));
+ }
+ 
+ /***************************************************************************/
+diff --git a/vmysql.c b/vmysql.c
+index 4215a39..c5173d9 100644
+--- a/vmysql.c
++++ b/vmysql.c
+@@ -1862,7 +1862,13 @@ int vdel_limits(const char *domain)
+ /************************************************************************/
+ int vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw)
+ {
++  const char *c;
++
+   if ( vpw == NULL ) return(-1);
+ 
+-  return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));
++  c = crypt(clear_pass,vpw->pw_passwd);
++
++  if ( c == NULL ) return(-1);
++
++  return(strcmp(c,vpw->pw_passwd));
+ }
+diff --git a/vpgsql.c b/vpgsql.c
+index c55b9e2..b5dd40b 100644
+--- a/vpgsql.c
++++ b/vpgsql.c
+@@ -1667,8 +1667,14 @@ void vcreate_vlog_table()
+ 
+ int vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw)
+ {
++	const char *c;
++
+ 	  if ( vpw == NULL ) return(-1);
+ 
+-	    return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));
++	c = crypt(clear_pass,vpw->pw_passwd);
++
++	if ( c == NULL ) return(-1);
++
++	    return(strcmp(c,vpw->pw_passwd));
+ }
+ 
+diff --git a/vsybase.c b/vsybase.c
+index c6d7234..26f7447 100644
+--- a/vsybase.c
++++ b/vsybase.c
+@@ -640,7 +640,13 @@ int vshow_ip_map( int first, char *ip, char *domain);
+ 
+ int vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw)
+ {
++  const char *c;
++
+   if ( vpw == NULL ) return(-1);
+ 
+-  return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));
++  c = crypt(clear_pass,vpw->pw_passwd);
++
++  if ( c == NULL ) return(-1);
++
++  return(strcmp(c,vpw->pw_passwd));
+ }
+-- 
+2.16.4
+

diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-use-proper-printf-format-strings.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-use-proper-printf-format-strings.patch
new file mode 100644
index 00000000000..a0967166c1c
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-use-proper-printf-format-strings.patch
@@ -0,0 +1,217 @@
+From 8ebcfc44379708521c41193057bb1549a3c1a2eb Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Sat, 26 Oct 2019 18:25:12 +0200
+Subject: [PATCH 2/2] use proper printf format strings
+
+---
+ maildirquota.c  |  4 ++--
+ vlimits.c       |  8 ++++----
+ vlistlib.c      |  2 +-
+ vmoddomlimits.c |  8 ++++----
+ vpopmail.c      | 17 +++++++++--------
+ vpopmaild.c     | 20 ++++++++++----------
+ vusagec.c       |  2 +-
+ 7 files changed, 31 insertions(+), 30 deletions(-)
+
+diff --git a/maildirquota.c b/maildirquota.c
+index 1c3dd44..11a0ce3 100644
+--- a/maildirquota.c
++++ b/maildirquota.c
+@@ -400,7 +400,7 @@ static int maildirsize_read(const char *filename,	/* The filename */
+ 			first=0;
+ 			continue;
+ 		}
+-		sscanf(q, "%llu %llu", &n, &c);
++		sscanf(q, "%" PRIu64 " %" PRIu64 "", &n, &c);
+ 		*sizeptr += n;
+ 		*cntptr += c;
+ 		++ *nlines;
+@@ -806,7 +806,7 @@ int	n;
+ 		niov=2;
+ 	}
+ 
+-	sprintf(u.buf, "%llu %llu\n", maildirsize_size, maildirsize_cnt);
++	sprintf(u.buf, "%" PRIu64 " %" PRIu64 "\n", maildirsize_size, maildirsize_cnt);
+ 	iov[niov].iov_base=u.buf;
+ 	iov[niov].iov_len=strlen(u.buf);
+ 
+diff --git a/vlimits.c b/vlimits.c
+index af336d2..c4d76ba 100644
+--- a/vlimits.c
++++ b/vlimits.c
+@@ -480,10 +480,10 @@ int vlimits_write_limits_file(const char *dir, const struct vlimits *limits)
+         fprintf(fs, "maxforwards: %d\n", limits->maxforwards);
+         fprintf(fs, "maxautoresponders: %d\n", limits->maxautoresponders);
+         fprintf(fs, "maxmailinglists: %d\n", limits->maxmailinglists);
+-        fprintf(fs, "quota: %llu\n", limits->diskquota);
+-        fprintf(fs, "maxmsgcount: %llu\n", limits->maxmsgcount);
+-        fprintf(fs, "default_quota: %llu\n", limits->defaultquota);
+-        fprintf(fs, "default_maxmsgcount: %llu\n", limits->defaultmaxmsgcount);
++        fprintf(fs, "quota: %" PRIu64 "\n", limits->diskquota);
++        fprintf(fs, "maxmsgcount: %" PRIu64 "\n", limits->maxmsgcount);
++        fprintf(fs, "default_quota: %" PRIu64 "\n", limits->defaultquota);
++        fprintf(fs, "default_maxmsgcount: %" PRIu64 "\n", limits->defaultmaxmsgcount);
+         if (limits->disable_pop) fprintf(fs, "disable_pop\n");
+         if (limits->disable_imap) fprintf(fs, "disable_imap\n");
+         if (limits->disable_dialup) fprintf(fs, "disable_dialup\n");
+diff --git a/vlistlib.c b/vlistlib.c
+index 110a93e..cbb8242 100644
+--- a/vlistlib.c
++++ b/vlistlib.c
+@@ -488,7 +488,7 @@ void ezmlm_decode( listInfoType *LI ) {
+         if( (fs=fopen(TmpBuf, "r")) !=NULL ) {
+             if(fgets(TmpBuf2, sizeof(TmpBuf2), fs)) {
+                 Tmp = strtok( TmpBuf2, ":" );
+-                printf( "    First Token: %s Len: %d\n", Tmp, strlen( Tmp ));
++                printf( "    First Token: %s Len: %zu\n", Tmp, strlen( Tmp ));
+                 if( NULL != Tmp ) { 
+                    for(i=0; i<strlen(Tmp); i++) LI->SQLHost[i] = Tmp[i];
+                    LI->SQLHost[i] = (char) 0;
+diff --git a/vmoddomlimits.c b/vmoddomlimits.c
+index cff906a..7a9c8b8 100644
+--- a/vmoddomlimits.c
++++ b/vmoddomlimits.c
+@@ -207,10 +207,10 @@ int main(int argc, char *argv[])
+             printf ((limits.perm_defaultquota & VLIMIT_DISABLE_DELETE ? "DENY_DELETE  " :"ALLOW_DELETE ") );
+             
+             printf("\n");
+-            printf("Domain Quota: %llu MB\n", limits.diskquota);
+-            printf("Default User Quota: %llu bytes\n", limits.defaultquota);
+-            printf("Max Domain Messages: %llu\n", limits.maxmsgcount);
+-            printf("Default Max Messages per User: %llu\n", limits.defaultmaxmsgcount);
++            printf("Domain Quota: %" PRIu64 " MB\n", limits.diskquota);
++            printf("Default User Quota: %" PRIu64 " bytes\n", limits.defaultquota);
++            printf("Max Domain Messages: %" PRIu64 "\n", limits.maxmsgcount);
++            printf("Default Max Messages per User: %" PRIu64 "\n", limits.defaultmaxmsgcount);
+             return(vexit(0));
+         }
+                 
+diff --git a/vpopmail.c b/vpopmail.c
+index 3b6a3e5..c389c7c 100644
+--- a/vpopmail.c
++++ b/vpopmail.c
+@@ -31,6 +31,7 @@
+ #include <fcntl.h>
+ #include <time.h>
+ #include <dirent.h>
++#include <inttypes.h>
+ #include <pwd.h>
+ #include "config.h"
+ #ifdef HAVE_ERR_H
+@@ -737,13 +738,13 @@ int vadduser( char *username, char *domain, char *password, char *gecos,
+ 
+   if (limits.defaultquota > 0) {
+     if (limits.defaultmaxmsgcount > 0)
+-      snprintf (quota, sizeof(quota), "%lluS,%lluC", limits.defaultquota,
++      snprintf (quota, sizeof(quota), "%" PRIu64 "S,%" PRIu64 "C", limits.defaultquota,
+         limits.defaultmaxmsgcount);
+     else
+-      snprintf (quota, sizeof(quota), "%lluS", limits.defaultquota);
++      snprintf (quota, sizeof(quota), "%" PRIu64 "S", limits.defaultquota);
+   } else {
+     if (limits.defaultmaxmsgcount > 0)
+-      snprintf (quota, sizeof(quota), "%lluC", limits.defaultmaxmsgcount);
++      snprintf (quota, sizeof(quota), "%" PRIu64 "C", limits.defaultmaxmsgcount);
+     else
+       strcpy (quota, "NOQUOTA");
+   }
+@@ -3822,11 +3823,11 @@ static char    tempquota[128];
+ 
+     if (quota_count == 0)
+       if (quota_size == 0) strcpy (tempquota, ""); /* invalid quota */
+-      else sprintf (tempquota, "%lluS", quota_size);
++      else sprintf (tempquota, "%" PRIu64 "S", quota_size);
+     else if (quota_size == 0)
+-      sprintf (tempquota, "%lluC", quota_count);
++      sprintf (tempquota, "%" PRIu64 "C", quota_count);
+     else
+-      sprintf (tempquota, "%lluS,%lluC", quota_size, quota_count);
++      sprintf (tempquota, "%" PRIu64 "S,%" PRIu64 "C", quota_size, quota_count);
+ 
+     return tempquota;
+ }
+@@ -4050,8 +4051,8 @@ int qnprintf (char *buffer, size_t size, const char *format, ...)
+ 					snprintf (n, sizeof(n), "%u", va_arg (ap, unsigned int));
+ 					break;
+ 
+-			    case 'S':
+-					snprintf(n, sizeof(n), "%llu", va_arg(ap, storage_t));
++				case 'S':
++					snprintf(n, sizeof(n), "%" PRIu64, va_arg(ap, storage_t));
+ 					break;
+ 					
+ 				case 'l':
+diff --git a/vpopmaild.c b/vpopmaild.c
+index f257a52..9cf2981 100644
+--- a/vpopmaild.c
++++ b/vpopmaild.c
+@@ -2280,13 +2280,13 @@ int get_limits()
+     mylimits.maxautoresponders); wait_write();
+   snprintf(WriteBuf,sizeof(WriteBuf), "max_mailinglists %d" RET_CRLF, 
+     mylimits.maxmailinglists); wait_write();
+-  snprintf(WriteBuf,sizeof(WriteBuf), "disk_quota %llu" RET_CRLF, 
++  snprintf(WriteBuf,sizeof(WriteBuf), "disk_quota %" PRIu64 RET_CRLF,
+     mylimits.diskquota); wait_write();
+-  snprintf(WriteBuf,sizeof(WriteBuf), "max_msgcount %llu" RET_CRLF, 
++  snprintf(WriteBuf,sizeof(WriteBuf), "max_msgcount %" PRIu64 RET_CRLF,
+     mylimits.maxmsgcount); wait_write();
+-  snprintf(WriteBuf,sizeof(WriteBuf), "default_quota %llu" RET_CRLF, 
++  snprintf(WriteBuf,sizeof(WriteBuf), "default_quota %" PRIu64 RET_CRLF,
+     mylimits.defaultquota); wait_write();
+-  snprintf(WriteBuf,sizeof(WriteBuf), "default_maxmsgcount %llu" RET_CRLF, 
++  snprintf(WriteBuf,sizeof(WriteBuf), "default_maxmsgcount %" PRIu64 RET_CRLF,
+     mylimits.defaultmaxmsgcount); wait_write();
+ 
+   if (mylimits.disable_pop) 
+@@ -2625,9 +2625,9 @@ int get_user_size()
+ 
+   snprintf(WriteBuf, sizeof(WriteBuf), "%s", RET_OK_MORE);
+   wait_write();
+-  snprintf(WriteBuf, sizeof(WriteBuf), "size %llu" RET_CRLF, bytes);
++  snprintf(WriteBuf, sizeof(WriteBuf), "size %" PRIu64 RET_CRLF, bytes);
+   wait_write();
+-  snprintf(WriteBuf, sizeof(WriteBuf), "count %llu" RET_CRLF, cnt);
++  snprintf(WriteBuf, sizeof(WriteBuf), "count %" PRIu64 RET_CRLF, cnt);
+   wait_write();
+   snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
+ 
+@@ -2680,9 +2680,9 @@ int get_domain_size()
+     } else {
+       snprintf(WriteBuf, sizeof(WriteBuf), "user %s@%s" RET_CRLF, tmpvpw->pw_name, domain);
+       wait_write();
+-      snprintf(WriteBuf, sizeof(WriteBuf), "size %llu" RET_CRLF, bytes);
++      snprintf(WriteBuf, sizeof(WriteBuf), "size %" PRIu64 RET_CRLF, bytes);
+       wait_write();
+-      snprintf(WriteBuf, sizeof(WriteBuf), "count %llu" RET_CRLF, cnt);
++      snprintf(WriteBuf, sizeof(WriteBuf), "count %" PRIu64 RET_CRLF, cnt);
+       wait_write();
+       totalbytes += (unsigned long)bytes;
+       totalcnt += (unsigned int)cnt;
+@@ -2691,9 +2691,9 @@ int get_domain_size()
+ 
+   snprintf(WriteBuf, sizeof(WriteBuf), "domain %s" RET_CRLF, domain);
+   wait_write();
+-  snprintf(WriteBuf, sizeof(WriteBuf), "size %llu" RET_CRLF, totalbytes);
++  snprintf(WriteBuf, sizeof(WriteBuf), "size %" PRIu64 RET_CRLF, totalbytes);
+   wait_write();
+-  snprintf(WriteBuf, sizeof(WriteBuf), "count %llu" RET_CRLF, totalcnt);
++  snprintf(WriteBuf, sizeof(WriteBuf), "count %" PRIu64 RET_CRLF, totalcnt);
+   wait_write();
+   snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
+ 
+diff --git a/vusagec.c b/vusagec.c
+index c32c2fe..5cc6dda 100644
+--- a/vusagec.c
++++ b/vusagec.c
+@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
+ 	  if (uusage == -1)
+ 		 printf("%s: No data available\n", argv[i]);
+ 	  else
+-		 printf("%s: %llu byte(s) in %llu file(s)\n", *(argv[i]) == '@' ? (argv[i] + 1) : argv[i], uusage, musage);
++		 printf("%s: %" PRIu64 " byte(s) in %" PRIu64 " file(s)\n", *(argv[i]) == '@' ? (argv[i] + 1) : argv[i], uusage, musage);
+    }
+ 
+    client_close(handle);
+-- 
+2.16.4
+

diff --git a/net-mail/vpopmail/vpopmail-5.4.33-r5.ebuild b/net-mail/vpopmail/vpopmail-5.4.33-r5.ebuild
new file mode 100644
index 00000000000..3b183346bb9
--- /dev/null
+++ b/net-mail/vpopmail/vpopmail-5.4.33-r5.ebuild
@@ -0,0 +1,249 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools fixheadtails qmail
+
+HOMEPAGE="http://www.inter7.com/index.php?page=vpopmail"
+DESCRIPTION="Collection of programs to manage virtual email on Qmail servers"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="clearpasswd ipalias maildrop mysql postgres spamassassin"
+REQUIRED_USE="mysql? ( !postgres )"
+
+DEPEND="
+	acct-group/vpopmail
+	virtual/qmail
+	maildrop? ( mail-filter/maildrop )
+	mysql? ( dev-db/mysql-connector-c:0= )
+	postgres? ( dev-db/postgresql:=[server] )
+	spamassassin? ( mail-filter/spamassassin )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-5.4.9-access.violation.patch
+	"${FILESDIR}"/${PN}-lazy.patch
+	"${FILESDIR}"/${PN}-vpgsql.patch
+	"${FILESDIR}"/${PN}-double-free.patch
+	"${FILESDIR}"/${PN}-5.4.33-vdelivermail-add-static.patch
+	"${FILESDIR}"/${PN}-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch
+	"${FILESDIR}"/${PN}-5.4.33-remove-unneeded-forward-declaration.patch
+	"${FILESDIR}"/${PN}-5.4.33-clean-up-calling-maildrop.patch
+	"${FILESDIR}"/${PN}-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch
+	"${FILESDIR}"/${PN}-5.4.33-strncat.patch
+	"${FILESDIR}"/${PN}-5.4.33-unistd.patch
+	"${FILESDIR}"/${PN}-5.4.33-check-crypt-return-value-for-NULL.patch
+	"${FILESDIR}"/${PN}-5.4.33-use-proper-printf-format-strings.patch
+)
+DOCS=(
+	ChangeLog
+	doc/.
+)
+HTML_DOCS=(
+	doc_html/.
+	man_html/.
+)
+
+VPOP_HOME="/var/vpopmail"
+
+pkg_setup() {
+	upgradewarning
+}
+
+src_prepare() {
+	default
+
+	echo 'install-recursive: install-exec-am' \
+		>>"${S}"/Makefile.am || die
+
+	# fix maildir paths
+	sed -i -e 's|Maildir|.maildir|g' \
+		vchkpw.c vconvert.c vdelivermail.c \
+		vpopbull.c vpopmail.c vqmaillocal.c \
+		vuserinfo.c maildirquota.c || die
+
+	# remove vpopmail advertisement
+	sed -i -e '/printf.*vpopmail/s:vpopmail (:(:' \
+		vdelivermail.c vpopbull.c vqmaillocal.c || die
+
+	# automake/autoconf
+	mv "${S}"/configure.{in,ac} || die
+	sed -i -e 's,AM_CONFIG_HEADER,AC_CONFIG_HEADERS,g' \
+		configure.ac || die
+
+	# _FORTIFY_SOURCE
+	sed -i \
+		-e 's/\(snprintf(\s*\(LI->[a-zA-Z_]\+\),\s*\)[a-zA-Z_]\+,/\1 sizeof(\2),/' \
+		vlistlib.c || die
+
+	eautoreconf
+	ht_fix_file cdb/Makefile
+}
+
+src_configure() {
+	local -a authopts
+	if use mysql; then
+		incdir=$(mysql_config --variable=pkgincludedir || die)
+		libdir=$(mysql_config --variable=pkglibdir || die)
+		authopts+=( "--enable-auth-module=mysql"
+			"--enable-incdir=${incdir}"
+			"--enable-libdir=${libdir}"
+			"--enable-sql-logging"
+			"--enable-valias"
+			"--disable-mysql-replication"
+			"--enable-mysql-limits"
+		)
+	elif use postgres; then
+		libdir=$(pg_config --libdir || die)
+		incdir=$(pg_config --pkgincludedir || die)
+		authopts+=( "--enable-auth-module=pgsql"
+			"--enable-incdir=${incdir}"
+			"--enable-libdir=${libdir}"
+			"--enable-sql-logging"
+			"--enable-valias"
+		)
+	else
+		authopts+=( "--enable-auth-module=cdb" )
+	fi
+
+	econf ${authopts[@]} \
+		--sysconfdir=${VPOP_HOME}/etc \
+		--enable-non-root-build \
+		--enable-qmaildir=${QMAIL_HOME} \
+		--enable-qmail-newu=${QMAIL_HOME}/bin/qmail-newu \
+		--enable-qmail-inject=${QMAIL_HOME}/bin/qmail-inject \
+		--enable-qmail-newmrh=${QMAIL_HOME}/bin/qmail-newmrh \
+		--enable-vpopuser=vpopmail \
+		--enable-vpopgroup=vpopmail \
+		--enable-many-domains \
+		--enable-file-locking \
+		--enable-file-sync \
+		--enable-md5-passwords \
+		--enable-logging \
+		--enable-auth-logging \
+		--enable-log-name=vpopmail \
+		--enable-qmail-ext \
+		--disable-tcpserver-file \
+		--disable-roaming-users \
+		$(use_enable ipalias ip-alias-domains) \
+		$(use_enable clearpasswd clear-passwd) \
+		$(use_enable maildrop) \
+		$(use_enable maildrop maildrop-prog /usr/bin/maildrop) \
+		$(use_enable spamassassin)
+}
+
+src_install() {
+	emake DESTDIR="${D}" install
+	keepdir "${VPOP_HOME}"/domains
+
+	# install helper script for maildir conversion
+	into "${VPOP_HOME}"
+	dobin "${FILESDIR}"/vpopmail-Maildir-dotmaildir-fix.sh
+	into /usr
+
+	mv doc/doc_html/ doc/man_html/ . || die
+	einstalldocs
+	rm -r "${D}/${VPOP_HOME}"/doc || die
+
+	# create /etc/vpopmail.conf
+	if use mysql; then
+		insinto /etc
+		newins "${D}${VPOP_HOME}"/etc/vpopmail.mysql vpopmail.conf
+		dosym ../../etc/vpopmail.conf "${VPOP_HOME}"/etc/vpopmail.mysql
+
+		sed 's/^[^#]/# &/' -i "${D}"/etc/vpopmail.conf || die
+		echo '# Read-only DB' >> "${D}"/etc/vpopmail.conf || die
+		echo 'localhost|0|vpopmail|secret|vpopmail' >> "${D}"/etc/vpopmail.conf || die
+		echo '# Write DB' >> "${D}"/etc/vpopmail.conf || die
+		echo 'localhost|0|vpopmail|secret|vpopmail' >> "${D}"/etc/vpopmail.conf || die
+
+		# lock down perms
+		fperms 640 /etc/vpopmail.conf
+		fowners root:vpopmail /etc/vpopmail.conf
+	fi
+
+	insinto "${VPOP_HOME}"/etc
+	doins vusagec.conf
+	dosym .."${VPOP_HOME}"/etc/vusagec.conf /etc/vusagec.conf
+	sed -i 's/Disable = False;/Disable = True;/g' "${D}${VPOP_HOME}"/etc/vusagec.conf || die
+
+	einfo "Installing env.d entry"
+	doenvd "${FILESDIR}"/99vpopmail
+
+	einfo "Locking down vpopmail permissions"
+	fowners -R root:0 "${VPOP_HOME}"/{bin,etc,include}
+	fowners root:vpopmail "${VPOP_HOME}"/bin/vchkpw
+	fperms 4711 "${VPOP_HOME}"/bin/vchkpw
+}
+
+pkg_postinst() {
+	if use mysql ; then
+		elog
+		elog "You have 'mysql' turned on in your USE"
+		elog "Vpopmail needs a VALID MySQL USER. Let's call it 'vpopmail'"
+		elog "You MUST add it and then specify its passwd in the /etc/vpopmail.conf file"
+		elog
+		elog "First log into mysql as your mysql root user and pass. Then:"
+		elog "> create database vpopmail;"
+		elog "> use mysql;"
+		elog "> grant select, insert, update, delete, create, drop on vpopmail.* to"
+		elog "  vpopmail@localhost identified by 'your password';"
+		elog "> flush privileges;"
+		elog
+		elog "If you have problems with vpopmail not accepting mail properly,"
+		elog "please ensure that /etc/vpopmail.conf is chmod 640 and"
+		elog "owned by root:vpopmail"
+		elog
+	fi
+
+	# do this for good measure
+	if [[ -e /etc/vpopmail.conf ]]; then
+		chmod 640 /etc/vpopmail.conf || die
+		chown root:vpopmail /etc/vpopmail.conf || die
+	fi
+
+	upgradewarning
+}
+
+pkg_postrm() {
+	elog "The vpopmail DATA will NOT be removed automatically."
+	elog "You can delete them manually by removing the ${VPOP_HOME} directory."
+}
+
+upgradewarning() {
+	if has_version "<=net-mail/vpopmail-5.2.1-r8"; then
+		ewarn
+		ewarn "Massive important warning if you are upgrading to 5.2.1-r8 or older"
+		ewarn "The internal structure of the mail storage has changed for"
+		ewarn "consistancy with the rest of Gentoo! Please review and utilize the "
+		ewarn "script at ${VPOP_HOME}/bin/vpopmail-Maildir-dotmaildir-fix.sh"
+		ewarn "to upgrade your system! (It can do conversions both ways)."
+		ewarn "You should be able to run it right away without any changes."
+		ewarn
+	fi
+
+	elog
+	elog "Use of vpopmail's tcp.smtp[.cdb] is also deprecated now, consider"
+	elog "using net-mail/relay-ctrl instead."
+	elog
+
+	if use mysql; then
+		if has_version "<=net-mail/vpopmail-5.4.17"; then
+			elog
+			elog "If you are upgrading from 5.4.17 or older, you have to fix your"
+			elog "MySQL tables, please see the UPGRADE file in the documentation!"
+			elog
+		fi
+	fi
+
+	ewarn
+	ewarn "Newer versions of vpopmail contain a quota daemon called vusaged."
+	ewarn "This ebuild DOES NOT INSTALL vusaged and has therefore disabled"
+	ewarn "its usage in ${VPOP_HOME}/etc/vusagec.conf. DO NOT ENABLE!"
+	ewarn "Otherwise mail delivery WILL BREAK"
+	ewarn
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-mail/vpopmail/, net-mail/vpopmail/files/
@ 2020-07-31 20:43 Sergei Trofimovich
  0 siblings, 0 replies; 3+ messages in thread
From: Sergei Trofimovich @ 2020-07-31 20:43 UTC (permalink / raw
  To: gentoo-commits

commit:     aabed522aad1d11f21f585fec92c13355fdfac95
Author:     Rolf Eike Beer <eike <AT> sf-mail <DOT> de>
AuthorDate: Fri Jul 31 20:15:01 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Jul 31 20:42:08 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aabed522

net-mail/vpopmail: fix build with PostgreSQL and onchange script

Closes: https://bugs.gentoo.org/734884
Signed-off-by: Rolf Eike Beer <eike <AT> sf-mail.de>
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 .../files/vpopmail-5.4.33-vpgsql-onchange.patch    | 26 ++++++++++++++++++++++
 net-mail/vpopmail/vpopmail-5.4.33-r7.ebuild        |  1 +
 2 files changed, 27 insertions(+)

diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-vpgsql-onchange.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-vpgsql-onchange.patch
new file mode 100644
index 00000000000..4fcd3a51a0b
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-vpgsql-onchange.patch
@@ -0,0 +1,26 @@
+From c317829c750438fbb16867cbadb196328f3ba567 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Fri, 31 Jul 2020 22:09:50 +0200
+Subject: [PATCH] fix build when using PostgreSQL and --enable-onchange-script
+
+This obviously has never worked.
+---
+ vpgsql.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vpgsql.c b/vpgsql.c
+index b5dd40b..7d8e5c0 100644
+--- a/vpgsql.c
++++ b/vpgsql.c
+@@ -1456,7 +1456,7 @@ int valias_delete_domain( char *domain)
+ #ifdef ONCHANGE_SCRIPT
+   if( allow_onchange ) {
+      /* tell other programs that data has changed */
+-     snprintf ( onchange_buf, MAX_BUFF, "%s@%s - %s", alias, domain, alias_line);
++     snprintf ( onchange_buf, MAX_BUFF, "%s", domain );
+      call_onchange ( "valias_delete_domain" );
+      }
+ #endif
+-- 
+2.26.2
+

diff --git a/net-mail/vpopmail/vpopmail-5.4.33-r7.ebuild b/net-mail/vpopmail/vpopmail-5.4.33-r7.ebuild
index face2fb6b99..ce3584c722a 100644
--- a/net-mail/vpopmail/vpopmail-5.4.33-r7.ebuild
+++ b/net-mail/vpopmail/vpopmail-5.4.33-r7.ebuild
@@ -39,6 +39,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-5.4.33-unistd.patch
 	"${FILESDIR}"/${PN}-5.4.33-check-crypt-return-value-for-NULL.patch
 	"${FILESDIR}"/${PN}-5.4.33-use-proper-printf-format-strings.patch
+	"${FILESDIR}"/${PN}-5.4.33-vpgsql-onchange.patch
 )
 DOCS=(
 	ChangeLog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: net-mail/vpopmail/, net-mail/vpopmail/files/
@ 2023-03-20  5:36 Sam James
  0 siblings, 0 replies; 3+ messages in thread
From: Sam James @ 2023-03-20  5:36 UTC (permalink / raw
  To: gentoo-commits

commit:     8b4861aa18c6c0bd2860bbb859ae9238416b243b
Author:     Rolf Eike Beer <eike <AT> sf-mail <DOT> de>
AuthorDate: Sat Dec 24 13:18:19 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar 20 05:31:58 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8b4861aa

net-mail/vpopmail: add missing headers in configure tests

Closes: https://bugs.gentoo.org/885873
Closes: https://bugs.gentoo.org/900192
Signed-off-by: Rolf Eike Beer <eike <AT> sf-mail.de>
Closes: https://github.com/gentoo/gentoo/pull/30231
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...33-add-missing-headers-in-configure-tests.patch | 40 ++++++++++++++++++++++
 net-mail/vpopmail/vpopmail-5.4.33-r9.ebuild        |  1 +
 2 files changed, 41 insertions(+)

diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-add-missing-headers-in-configure-tests.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-add-missing-headers-in-configure-tests.patch
new file mode 100644
index 000000000000..1fa1fbaf3af4
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-add-missing-headers-in-configure-tests.patch
@@ -0,0 +1,40 @@
+From 6a2bc617c8ca8368697e971b6456b5b07a1c8b18 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 15 Dec 2022 21:34:18 +0100
+Subject: [PATCH 1/5] add missing headers in configure tests
+
+See: https://bugs.gentoo.org/885873
+---
+ configure    | 2 ++
+ configure.in | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/configure b/configure
+index 43030d8..a4b0d54 100755
+--- a/configure
++++ b/configure
+@@ -5686,6 +5686,8 @@ else
+   #include <stdio.h>
+   #include <pwd.h>
+   #include <stdlib.h>
++  #include <string.h>
++  #include <unistd.h>
+ 
+   int main() {
+     struct passwd *pw;
+diff --git a/configure.in b/configure.in
+index c4e32d4..f557f26 100644
+--- a/configure.in
++++ b/configure.in
+@@ -423,6 +423,8 @@ AC_TRY_RUN( [
+   #include <stdio.h>
+   #include <pwd.h>
+   #include <stdlib.h>
++  #include <string.h>
++  #include <unistd.h>
+ 
+   int main() {
+     struct passwd *pw;
+-- 
+2.35.3
+

diff --git a/net-mail/vpopmail/vpopmail-5.4.33-r9.ebuild b/net-mail/vpopmail/vpopmail-5.4.33-r9.ebuild
index d186cf1de43e..ee9f8d6f2750 100644
--- a/net-mail/vpopmail/vpopmail-5.4.33-r9.ebuild
+++ b/net-mail/vpopmail/vpopmail-5.4.33-r9.ebuild
@@ -42,6 +42,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-5.4.33-use-proper-printf-format-strings.patch
 	"${FILESDIR}"/${PN}-5.4.33-vpgsql-onchange.patch
 	"${FILESDIR}"/${PN}-5.4.33-avoid-duplicate-definitions-of-MYSQL_READ_-and-MYSQL.patch
+	"${FILESDIR}"/${PN}-5.4.33-add-missing-headers-in-configure-tests.patch
 )
 DOCS=(
 	ChangeLog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-03-20  5:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-20  5:36 [gentoo-commits] repo/gentoo:master commit in: net-mail/vpopmail/, net-mail/vpopmail/files/ Sam James
  -- strict thread matches above, loose matches on Subject: below --
2020-07-31 20:43 Sergei Trofimovich
2019-11-17  9:30 Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox