From 927e681145873e5045d07c9b7bb97f98e662040d Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 7 Aug 2012 11:04:17 -0500
Subject: libsasl 2.1.23

---
 abs/core/libsasl/0003_saslauthd_mdoc.patch         |  35 ++++
 abs/core/libsasl/0010_maintainer_mode.patch        |  19 ++
 .../libsasl/0011_saslauthd_ac_prog_libtool.patch   |  15 ++
 abs/core/libsasl/0012_xopen_crypt_prototype.patch  |  20 ++
 .../libsasl/0016_pid_file_lock_creation_mask.patch |  27 +++
 abs/core/libsasl/0018_auth_rimap_quotes.patch      |  35 ++++
 abs/core/libsasl/0019_ldap_deprecated.patch        |  22 +++
 .../libsasl/0022_gcc4.4_preprocessor_syntax.patch  |  26 +++
 abs/core/libsasl/0025_ld_as_needed.patch           |  27 +++
 .../libsasl/0026_drop_krb5support_dependency.patch |  14 ++
 abs/core/libsasl/0027_db5_support.patch            |  24 +++
 ...030-dont_use_la_files_for_opening_plugins.patch | 134 +++++++++++++
 abs/core/libsasl/PKGBUILD                          | 210 ++++++++++++++++++---
 abs/core/libsasl/cyrus-sasl-2.1.22-as-needed.patch |  11 ++
 .../libsasl/cyrus-sasl-2.1.22-automake-1.10.patch  |  94 +++++++++
 abs/core/libsasl/cyrus-sasl-2.1.22-crypt.patch     |  71 +++++++
 abs/core/libsasl/cyrus-sasl-2.1.22-qa.patch        |  22 +++
 abs/core/libsasl/cyrus-sasl-2.1.23-authd-fix.patch |  28 +++
 abs/core/libsasl/cyrus-sasl-db.patch               |  34 ----
 abs/core/libsasl/saslauthd                         |  49 +++++
 abs/core/libsasl/saslauthd.conf.d                  |   1 +
 21 files changed, 853 insertions(+), 65 deletions(-)
 create mode 100644 abs/core/libsasl/0003_saslauthd_mdoc.patch
 create mode 100644 abs/core/libsasl/0010_maintainer_mode.patch
 create mode 100644 abs/core/libsasl/0011_saslauthd_ac_prog_libtool.patch
 create mode 100644 abs/core/libsasl/0012_xopen_crypt_prototype.patch
 create mode 100644 abs/core/libsasl/0016_pid_file_lock_creation_mask.patch
 create mode 100644 abs/core/libsasl/0018_auth_rimap_quotes.patch
 create mode 100644 abs/core/libsasl/0019_ldap_deprecated.patch
 create mode 100644 abs/core/libsasl/0022_gcc4.4_preprocessor_syntax.patch
 create mode 100644 abs/core/libsasl/0025_ld_as_needed.patch
 create mode 100644 abs/core/libsasl/0026_drop_krb5support_dependency.patch
 create mode 100644 abs/core/libsasl/0027_db5_support.patch
 create mode 100644 abs/core/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
 create mode 100644 abs/core/libsasl/cyrus-sasl-2.1.22-as-needed.patch
 create mode 100644 abs/core/libsasl/cyrus-sasl-2.1.22-automake-1.10.patch
 create mode 100644 abs/core/libsasl/cyrus-sasl-2.1.22-crypt.patch
 create mode 100644 abs/core/libsasl/cyrus-sasl-2.1.22-qa.patch
 create mode 100644 abs/core/libsasl/cyrus-sasl-2.1.23-authd-fix.patch
 delete mode 100644 abs/core/libsasl/cyrus-sasl-db.patch
 create mode 100644 abs/core/libsasl/saslauthd
 create mode 100644 abs/core/libsasl/saslauthd.conf.d

diff --git a/abs/core/libsasl/0003_saslauthd_mdoc.patch b/abs/core/libsasl/0003_saslauthd_mdoc.patch
new file mode 100644
index 0000000..694f4bb
--- /dev/null
+++ b/abs/core/libsasl/0003_saslauthd_mdoc.patch
@@ -0,0 +1,35 @@
+0003_saslauthd_mdoc.dpatch by  <fabbe@debian.org>
+
+Use the correct path for the saslauthd.conf file, and use another
+date format (cosmetic).
+
+diff -urNad trunk~/saslauthd/saslauthd.mdoc trunk/saslauthd/saslauthd.mdoc
+--- trunk~/saslauthd/saslauthd.mdoc	2006-05-29 22:52:42.000000000 +0300
++++ trunk/saslauthd/saslauthd.mdoc	2006-07-12 15:05:25.000000000 +0300
+@@ -10,7 +10,7 @@
+ .\" manpage in saslauthd.8 whenever you change this source
+ .\" version. Only the pre-formatted manpage is installed.
+ .\"
+-.Dd 10 24 2002
++.Dd October 24 2002
+ .Dt SASLAUTHD 8
+ .Os "CMU-SASL"
+ .Sh NAME
+@@ -216,7 +216,7 @@
+ .Em (All platforms that support OpenLDAP 2.0 or higher)
+ .Pp
+ Authenticate against an ldap server.  The ldap configuration parameters are
+-read from /usr/local/etc/saslauthd.conf.  The location of this file can be
++read from /etc/saslauthd.conf.  The location of this file can be
+ changed with the -O parameter. See the LDAP_SASLAUTHD file included with the
+ distribution for the list of available parameters.
+ .It Li sia
+@@ -249,7 +249,7 @@
+ .Bl -tag -width "/var/run/saslauthd/mux"
+ .It Pa /var/run/saslauthd/mux
+ The default communications socket.
+-.It Pa /usr/local/etc/saslauthd.conf
++.It Pa /etc/saslauthd.conf
+ The default configuration file for ldap support.
+ .El
+ .Sh SEE ALSO
diff --git a/abs/core/libsasl/0010_maintainer_mode.patch b/abs/core/libsasl/0010_maintainer_mode.patch
new file mode 100644
index 0000000..cf3d02a
--- /dev/null
+++ b/abs/core/libsasl/0010_maintainer_mode.patch
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 0010_maintainer_mode.dpatch by  <fabbe@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Enable maintainer mode to avoid auto* problems.
+
+@DPATCH@
+diff -urNad trunk~/configure.in trunk/configure.in
+--- trunk~/configure.in	2006-05-29 22:52:46.000000000 +0300
++++ trunk/configure.in	2006-11-01 23:24:55.000000000 +0200
+@@ -62,6 +62,8 @@
+ AM_INIT_AUTOMAKE(cyrus-sasl, 2.1.22)
+ CMU_INIT_AUTOMAKE
+ 
++AM_MAINTAINER_MODE
++
+ # and include our config dir scripts
+ ACLOCAL="$ACLOCAL -I \$(top_srcdir)/config"
+ 
diff --git a/abs/core/libsasl/0011_saslauthd_ac_prog_libtool.patch b/abs/core/libsasl/0011_saslauthd_ac_prog_libtool.patch
new file mode 100644
index 0000000..3805b48
--- /dev/null
+++ b/abs/core/libsasl/0011_saslauthd_ac_prog_libtool.patch
@@ -0,0 +1,15 @@
+0011_saslauthd_ac_prog_libtool.dpatch by  <fabbe@debian.org>
+
+Enable libtool use.
+
+diff -urNad trunk~/saslauthd/configure.in trunk/saslauthd/configure.in
+--- trunk~/saslauthd/configure.in	2006-05-29 22:52:42.000000000 +0300
++++ trunk/saslauthd/configure.in	2006-11-01 23:41:51.000000000 +0200
+@@ -25,6 +25,7 @@
+ AC_PROG_MAKE_SET
+ AC_PROG_LN_S
+ AC_PROG_INSTALL
++AC_PROG_LIBTOOL
+ 
+ dnl Checks for build foo
+ CMU_C___ATTRIBUTE__
diff --git a/abs/core/libsasl/0012_xopen_crypt_prototype.patch b/abs/core/libsasl/0012_xopen_crypt_prototype.patch
new file mode 100644
index 0000000..d50ec83
--- /dev/null
+++ b/abs/core/libsasl/0012_xopen_crypt_prototype.patch
@@ -0,0 +1,20 @@
+0012_xopen_crypt_prototype.dpatch by  <dannf@debian.org>
+
+When _XOPEN_SOURCE is defined, the subsequent #include <unistd.h>
+will define a correct function prototype for the crypt function.
+This avoids segfaults on architectures where the size of a pointer
+is greater than the size of an integer (ia64 and amd64 are examples).
+This may be detected by looking for build log lines such as the
+following:
+auth_shadow.c:183: warning: implicit declaration of function ‘crypt’
+auth_shadow.c:183: warning: cast to pointer from integer of different
+size
+
+diff -urNad trunk~/saslauthd/auth_shadow.c trunk/saslauthd/auth_shadow.c
+--- trunk~/saslauthd/auth_shadow.c	2006-05-29 22:52:42.000000000 +0300
++++ trunk/saslauthd/auth_shadow.c	2006-11-08 13:44:23.000000000 +0200
+@@ -1,3 +1,4 @@
++#define _XOPEN_SOURCE
+ #define PWBUFSZ 256 /***SWB***/
+ 
+ /* MODULE: auth_shadow */
diff --git a/abs/core/libsasl/0016_pid_file_lock_creation_mask.patch b/abs/core/libsasl/0016_pid_file_lock_creation_mask.patch
new file mode 100644
index 0000000..e9170ce
--- /dev/null
+++ b/abs/core/libsasl/0016_pid_file_lock_creation_mask.patch
@@ -0,0 +1,27 @@
+0016_pid_file_lock_creation_mask.dpatch by Sam Hocevar <sam@zoy.org>
+
+pid_file_lock is created with a mask of 644 instead of 0644.
+This patch fixes this octal/decimal confusion as well as the
+(harmless) one in the previous umask() call.
+
+diff -urNad trunk~/saslauthd/saslauthd-main.c trunk/saslauthd/saslauthd-main.c
+--- trunk~/saslauthd/saslauthd-main.c	2006-05-29 22:52:42.000000000 +0300
++++ trunk/saslauthd/saslauthd-main.c	2007-06-26 12:07:10.000000000 +0300
+@@ -276,7 +276,7 @@
+ 		exit(1);
+ 	}
+ 
+-	umask(077);
++	umask(0077);
+ 
+ 	pid_file_size = strlen(run_path) + sizeof(PID_FILE_LOCK) + 1;
+ 	if ((pid_file_lock = malloc(pid_file_size)) == NULL) {
+@@ -287,7 +287,7 @@
+ 	strlcpy(pid_file_lock, run_path, pid_file_size);
+ 	strlcat(pid_file_lock, PID_FILE_LOCK, pid_file_size);
+ 
+-	if ((pid_file_lock_fd = open(pid_file_lock, O_CREAT|O_TRUNC|O_RDWR, 644)) < 0) {
++	if ((pid_file_lock_fd = open(pid_file_lock, O_CREAT|O_TRUNC|O_RDWR, 0644)) < 0) {
+ 		rc = errno;
+ 		logger(L_ERR, L_FUNC, "could not open pid lock file: %s", pid_file_lock);
+ 		logger(L_ERR, L_FUNC, "open: %s", strerror(rc));
diff --git a/abs/core/libsasl/0018_auth_rimap_quotes.patch b/abs/core/libsasl/0018_auth_rimap_quotes.patch
new file mode 100644
index 0000000..13fa999
--- /dev/null
+++ b/abs/core/libsasl/0018_auth_rimap_quotes.patch
@@ -0,0 +1,35 @@
+0016_auth_rimap_quotes.dpatch by  <fabbe@debian.org>
+
+All lines beginning with `## DP:' are a description of the patch.
+Avoid infinite loop when username/password has a double quote character.
+Upstream change: https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/sasl/saslauthd/auth_rimap.c.diff?r1=1.12;r2=1.13
+
+diff -urNad etch~/saslauthd/auth_rimap.c etch/saslauthd/auth_rimap.c
+--- etch~/saslauthd/auth_rimap.c	2007-03-29 15:16:20.000000000 +0300
++++ etch/saslauthd/auth_rimap.c	2008-02-13 13:42:53.000000000 +0200
+@@ -162,6 +162,7 @@
+     num_quotes = 0;
+     p1 = s;
+     while ((p1 = strchr(p1, '"')) != NULL) {
++	p1++;
+ 	num_quotes++;
+     }
+     
+@@ -438,7 +439,7 @@
+ 	syslog(LOG_WARNING, "auth_rimap: writev: %m");
+ 	memset(qlogin, 0, strlen(qlogin));
+ 	free(qlogin);
+-	memset(qpass, 0, strlen(qlogin));
++	memset(qpass, 0, strlen(qpass));
+ 	free(qpass);
+ 	(void)close(s);
+ 	return strdup(RESP_IERROR);
+@@ -447,7 +448,7 @@
+     /* don't need these any longer */
+     memset(qlogin, 0, strlen(qlogin));
+     free(qlogin);
+-    memset(qpass, 0, strlen(qlogin));
++    memset(qpass, 0, strlen(qpass));
+     free(qpass);
+ 
+     /* read and parse the LOGIN response */
diff --git a/abs/core/libsasl/0019_ldap_deprecated.patch b/abs/core/libsasl/0019_ldap_deprecated.patch
new file mode 100644
index 0000000..8825256
--- /dev/null
+++ b/abs/core/libsasl/0019_ldap_deprecated.patch
@@ -0,0 +1,22 @@
+0019_ldap_deprecated.dpatch by  dann frazier <dannf@debian.org>
+
+The function ldap_get_values, used in saslauthd/lak.c, is deprecated.
+Therefore, its prototype is not included by default when compiling
+against the ldap.h headers. As a result, the compiler cannot know the
+return type of the function at compile time, and will implicitly
+convert to a pointer. This has implications on 64-bit systems.
+This patch sets the deprecation mode on, so that the function prototype
+gets included when compiling.
+(Description by Fabian Fagerholm <fabbe@debian.org>)
+
+diff -urNad trunk~/saslauthd/lak.c trunk/saslauthd/lak.c
+--- trunk~/saslauthd/lak.c	2006-06-04 12:26:20.000000000 +0300
++++ trunk/saslauthd/lak.c	2008-02-15 14:32:11.000000000 +0200
+@@ -55,6 +55,7 @@
+ #include <openssl/des.h>
+ #endif
+ 
++#define LDAP_DEPRECATED 1
+ #include <ldap.h>
+ #include <lber.h>
+ #include <sasl.h>
diff --git a/abs/core/libsasl/0022_gcc4.4_preprocessor_syntax.patch b/abs/core/libsasl/0022_gcc4.4_preprocessor_syntax.patch
new file mode 100644
index 0000000..a49b553
--- /dev/null
+++ b/abs/core/libsasl/0022_gcc4.4_preprocessor_syntax.patch
@@ -0,0 +1,26 @@
+0022_gcc4.4_preprocessor_syntax.dpatch by  <fabbe@paniq.net>
+
+The #elif preprocessor directive requires a test condition.
+GCC 4.4 enforces this rule.
+
+diff -urNad trunk~/plugins/digestmd5.c trunk/plugins/digestmd5.c
+--- trunk~/plugins/digestmd5.c	2006-06-04 12:26:19.000000000 +0300
++++ trunk/plugins/digestmd5.c	2009-01-26 13:29:40.000000000 +0200
+@@ -2715,7 +2715,7 @@
+ 	"DIGEST-MD5",			/* mech_name */
+ #ifdef WITH_RC4
+ 	128,				/* max_ssf */
+-#elif WITH_DES
++#elif defined(WITH_DES)
+ 	112,
+ #else 
+ 	1,
+@@ -4034,7 +4034,7 @@
+ 	"DIGEST-MD5",
+ #ifdef WITH_RC4				/* mech_name */
+ 	128,				/* max ssf */
+-#elif WITH_DES
++#elif defined(WITH_DES)
+ 	112,
+ #else
+ 	1,
diff --git a/abs/core/libsasl/0025_ld_as_needed.patch b/abs/core/libsasl/0025_ld_as_needed.patch
new file mode 100644
index 0000000..67b48b4
--- /dev/null
+++ b/abs/core/libsasl/0025_ld_as_needed.patch
@@ -0,0 +1,27 @@
+Author: Matthias Klose <doko@ubuntu.com>
+Desription: Fix FTBFS, add $(SASL_DB_LIB) as dependency to libsasldb, and use
+it.
+--- a/saslauthd/Makefile.am
++++ b/saslauthd/Makefile.am
+@@ -16,7 +16,7 @@ EXTRA_saslauthd_sources = getaddrinfo.c
+ saslauthd_DEPENDENCIES = saslauthd-main.o @LTLIBOBJS@
+ saslauthd_LDADD	= @SASL_KRB_LIB@ \
+ 		  @GSSAPIBASE_LIBS@ @GSSAPI_LIBS@ @LIB_CRYPT@ @LIB_SIA@ \
+-		  @LIB_SOCKET@ @SASL_DB_LIB@ @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@
++		  @LIB_SOCKET@ ../sasldb/libsasldb.la @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@
+ 
+ testsaslauthd_SOURCES = testsaslauthd.c utils.c
+ testsaslauthd_LDADD = @LIB_SOCKET@
+--- a/sasldb/Makefile.am
++++ b/sasldb/Makefile.am
+@@ -55,8 +55,8 @@ noinst_LIBRARIES = libsasldb.a
+ 
+ libsasldb_la_SOURCES = allockey.c sasldb.h
+ EXTRA_libsasldb_la_SOURCES = $(extra_common_sources)
+-libsasldb_la_DEPENDENCIES = $(SASL_DB_BACKEND)
+-libsasldb_la_LIBADD = $(SASL_DB_BACKEND) 
++libsasldb_la_DEPENDENCIES = $(SASL_DB_BACKEND) $(SASL_DB_LIB)
++libsasldb_la_LIBADD = $(SASL_DB_BACKEND) $(SASL_DB_LIB)
+ 
+ # Prevent make dist stupidity
+ libsasldb_a_SOURCES =
diff --git a/abs/core/libsasl/0026_drop_krb5support_dependency.patch b/abs/core/libsasl/0026_drop_krb5support_dependency.patch
new file mode 100644
index 0000000..cc00867
--- /dev/null
+++ b/abs/core/libsasl/0026_drop_krb5support_dependency.patch
@@ -0,0 +1,14 @@
+Author: Roberto C. Sanchez <roberto@connexer.com>
+Description: Drop gratuitous dependency on krb5support
+--- a/cmulocal/sasl2.m4
++++ b/cmulocal/sasl2.m4
+@@ -112,9 +112,6 @@ if test "$gssapi" != no; then
+   fi
+ 
+   if test "$gss_impl" = "auto" -o "$gss_impl" = "mit"; then
+-    # check for libkrb5support first
+-    AC_CHECK_LIB(krb5support,krb5int_getspecific,K5SUP=-lkrb5support K5SUPSTATIC=$gssapi_dir/libkrb5support.a,,${LIB_SOCKET})
+-
+     gss_failed=0
+     AC_CHECK_LIB(gssapi_krb5,gss_unwrap,gss_impl="mit",gss_failed=1,
+                  ${GSSAPIBASE_LIBS} -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${K5SUP} ${LIB_SOCKET})
diff --git a/abs/core/libsasl/0027_db5_support.patch b/abs/core/libsasl/0027_db5_support.patch
new file mode 100644
index 0000000..5228240
--- /dev/null
+++ b/abs/core/libsasl/0027_db5_support.patch
@@ -0,0 +1,24 @@
+Author: Ondřej Surý <ondrej@debian.org>
+Description: Support newer Berkeley DB versions
+--- a/sasldb/db_berkeley.c
++++ b/sasldb/db_berkeley.c
+@@ -101,7 +101,7 @@ static int berkeleydb_open(const sasl_ut
+     ret = db_create(mbdb, NULL, 0);
+     if (ret == 0 && *mbdb != NULL)
+     {
+-#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
++#if (DB_VERSION_MAJOR > 4) || ((DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 1))
+ 	ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, flags, 0660);
+ #else
+ 	ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, flags, 0660);
+--- a/utils/dbconverter-2.c
++++ b/utils/dbconverter-2.c
+@@ -214,7 +214,7 @@ static int berkeleydb_open(const char *p
+     ret = db_create(mbdb, NULL, 0);
+     if (ret == 0 && *mbdb != NULL)
+     {
+-#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
++#if (DB_VERSION_MAJOR > 4) || ((DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 1))
+ 	ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, DB_CREATE, 0664);
+ #else
+ 	ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, DB_CREATE, 0664);
diff --git a/abs/core/libsasl/0030-dont_use_la_files_for_opening_plugins.patch b/abs/core/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
new file mode 100644
index 0000000..14a3224
--- /dev/null
+++ b/abs/core/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
@@ -0,0 +1,134 @@
+--- a/lib/dlopen.c
++++ b/lib/dlopen.c
+@@ -247,105 +247,6 @@ static int _sasl_plugin_load(char *plugi
+     return result;
+ }
+ 
+-/* this returns the file to actually open.
+- *  out should be a buffer of size PATH_MAX
+- *  and may be the same as in. */
+-
+-/* We'll use a static buffer for speed unless someone complains */
+-#define MAX_LINE 2048
+-
+-static int _parse_la(const char *prefix, const char *in, char *out) 
+-{
+-    FILE *file;
+-    size_t length;
+-    char line[MAX_LINE];
+-    char *ntmp = NULL;
+-
+-    if(!in || !out || !prefix || out == in) return SASL_BADPARAM;
+-
+-    /* Set this so we can detect failure */
+-    *out = '\0';
+-
+-    length = strlen(in);
+-
+-    if (strcmp(in + (length - strlen(LA_SUFFIX)), LA_SUFFIX)) {
+-	if(!strcmp(in + (length - strlen(SO_SUFFIX)),SO_SUFFIX)) {
+-	    /* check for a .la file */
+-	    strcpy(line, prefix);
+-	    strcat(line, in);
+-	    length = strlen(line);
+-	    *(line + (length - strlen(SO_SUFFIX))) = '\0';
+-	    strcat(line, LA_SUFFIX);
+-	    file = fopen(line, "r");
+-	    if(file) {
+-		/* We'll get it on the .la open */
+-		fclose(file);
+-		return SASL_FAIL;
+-	    }
+-	}
+-	strcpy(out, prefix);
+-	strcat(out, in);
+-	return SASL_OK;
+-    }
+-
+-    strcpy(line, prefix);
+-    strcat(line, in);
+-
+-    file = fopen(line, "r");
+-    if(!file) {
+-	_sasl_log(NULL, SASL_LOG_WARN,
+-		  "unable to open LA file: %s", line);
+-	return SASL_FAIL;
+-    }
+-    
+-    while(!feof(file)) {
+-	if(!fgets(line, MAX_LINE, file)) break;
+-	if(line[strlen(line) - 1] != '\n') {
+-	    _sasl_log(NULL, SASL_LOG_WARN,
+-		      "LA file has too long of a line: %s", in);
+-	    return SASL_BUFOVER;
+-	}
+-	if(line[0] == '\n' || line[0] == '#') continue;
+-	if(!strncmp(line, "dlname=", sizeof("dlname=") - 1)) {
+-	    /* We found the line with the name in it */
+-	    char *end;
+-	    char *start;
+-	    size_t len;
+-	    end = strrchr(line, '\'');
+-	    if(!end) continue;
+-	    start = &line[sizeof("dlname=")-1];
+-	    len = strlen(start);
+-	    if(len > 3 && start[0] == '\'') {
+-		ntmp=&start[1];
+-		*end='\0';
+-		/* Do we have dlname="" ? */
+-		if(ntmp == end) {
+-		    _sasl_log(NULL, SASL_LOG_DEBUG,
+-			      "dlname is empty in .la file: %s", in);
+-		    return SASL_FAIL;
+-		}
+-		strcpy(out, prefix);
+-		strcat(out, ntmp);
+-	    }
+-	    break;
+-	}
+-    }
+-    if(ferror(file) || feof(file)) {
+-	_sasl_log(NULL, SASL_LOG_WARN,
+-		  "Error reading .la: %s\n", in);
+-	fclose(file);
+-	return SASL_FAIL;
+-    }
+-    fclose(file);
+-
+-    if(!(*out)) {
+-	_sasl_log(NULL, SASL_LOG_WARN,
+-		  "Could not find a dlname line in .la file: %s", in);
+-	return SASL_FAIL;
+-    }
+-
+-    return SASL_OK;
+-}
+ #endif /* DO_DLOPEN */
+ 
+ /* loads a plugin library */
+@@ -499,18 +400,18 @@ int _sasl_load_plugins(const add_plugin_
+ 		if (length + pos>=PATH_MAX) continue; /* too big */
+ 
+ 		if (strcmp(dir->d_name + (length - strlen(SO_SUFFIX)),
+-			   SO_SUFFIX)
+-		    && strcmp(dir->d_name + (length - strlen(LA_SUFFIX)),
+-			   LA_SUFFIX))
++			   SO_SUFFIX))
+ 		    continue;
+ 
++		/* We only use .so files for loading plugins */
++
+ 		memcpy(name,dir->d_name,length);
+ 		name[length]='\0';
+ 
+-		result = _parse_la(prefix, name, tmp);
+-		if(result != SASL_OK)
+-		    continue;
+-		
++		/* Create full name with path */
++		strncpy(tmp, prefix, PATH_MAX);
++		strncat(tmp, name, PATH_MAX);
++
+ 		/* skip "lib" and cut off suffix --
+ 		   this only need be approximate */
+ 		strcpy(plugname, name + 3);
diff --git a/abs/core/libsasl/PKGBUILD b/abs/core/libsasl/PKGBUILD
index e5ba8e9..e668cda 100644
--- a/abs/core/libsasl/PKGBUILD
+++ b/abs/core/libsasl/PKGBUILD
@@ -1,54 +1,202 @@
-# $Id: PKGBUILD 96213 2010-10-19 11:41:43Z allan $
+# $Id: PKGBUILD 146449 2012-01-11 15:21:04Z stephane $
 # Maintainer: Jan de Groot <jgc@archlinux.org>
 
+# This package spans multiple repositories.
+# Always build from cyrus-sasl/trunk and merge changes to libsasl/trunk.
+
+#pkgbase=('cyrus-sasl')
+#pkgname=('cyrus-sasl' 'cyrus-sasl-gssapi' 'cyrus-sasl-ldap' 'cyrus-sasl-sql')
 pkgname=libsasl
 pkgver=2.1.23
-pkgrel=5
+pkgrel=9
 pkgdesc="Cyrus Simple Authentication Service Layer (SASL) library"
 arch=('i686' 'x86_64')
-url="http://cyrusimap.web.cmu.edu/downloads.html#sasl"
+url="http://cyrusimap.web.cmu.edu/"
 license=('custom')
-depends=('db>=4.8')
-optdepends=('cyrus-sasl: saslauthd'
-            'cyrus-sasl-plugins: authentication plugins other than sasldb')
+options=('!makeflags' '!libtool')
+makedepends=('postgresql-libs' 'libmysqlclient' 'libldap' 'krb5' 'openssl')
 source=(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-${pkgver}.tar.gz
-	cyrus-sasl-2.1.19-checkpw.c.patch
-	cyrus-sasl-db.patch)
-options=('!makeflags')
+        cyrus-sasl-2.1.19-checkpw.c.patch
+        cyrus-sasl-2.1.22-crypt.patch
+        cyrus-sasl-2.1.22-qa.patch
+        cyrus-sasl-2.1.22-automake-1.10.patch
+        cyrus-sasl-2.1.23-authd-fix.patch
+        0003_saslauthd_mdoc.patch
+        0010_maintainer_mode.patch
+        0011_saslauthd_ac_prog_libtool.patch
+        0012_xopen_crypt_prototype.patch
+        0016_pid_file_lock_creation_mask.patch
+        0018_auth_rimap_quotes.patch
+        0019_ldap_deprecated.patch
+        0022_gcc4.4_preprocessor_syntax.patch
+        0025_ld_as_needed.patch
+        0026_drop_krb5support_dependency.patch
+        0027_db5_support.patch
+        0030-dont_use_la_files_for_opening_plugins.patch
+        saslauthd.conf.d
+        saslauthd)
 md5sums=('2eb0e48106f0e9cd8001e654f267ecbc'
          'e27ddff076342e7a3041c4759817d04b'
-         '0658201497aad359c0d66b0ab8032859')
+         'd7e6886e88af04d05f3dec7f0a59ccf7'
+         '79b8a5e8689989e2afd4b7bda595a7b1'
+         'f4131b077ddb5240b375d749162f1b7a'
+         'c7ad2c70c1ef814eb4b119f316c064f2'
+         'caeeac3feba19cbbd36e7345cc805600'
+         'f45d8b60e8f74dd7f7c2ec1665fa602a'
+         '9d93880514cb5ff5da969f1ceb64a661'
+         'dfdc052a7e678db9f687482c5d52f34e'
+         '4a09f6b24b91f8450892a78e378860da'
+         '213abe7c5dfe0d7f446992787da1e780'
+         '5a0321177ad30cb5518c8b6812e3961a'
+         '0c965748970eea29fa295524821d43f0'
+         '62bf892fe4d1df41ff748e91a1afaf67'
+         'b7848957357e7c02d6490102be496bf9'
+         'd86a5aa2e3b5b7c1bad6f8b548b7ea36'
+         '8e7106f32e495e9ade69014fd1b3352a'
+         '49219af5641150edec288a3fdb65e7c1'
+         '75542f613185d5a90520ad0d7d926a20')
 
 build() {
   cd "${srcdir}/cyrus-sasl-${pkgver}"
-  patch -Np0 -i ${srcdir}/cyrus-sasl-2.1.19-checkpw.c.patch
-  patch -Np1 -i ${srcdir}/cyrus-sasl-db.patch
+  patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.19-checkpw.c.patch"
+  patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.22-crypt.patch"
+  patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.22-qa.patch"
+  patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.22-automake-1.10.patch"
+  patch -Np0 -i "${srcdir}/cyrus-sasl-2.1.23-authd-fix.patch"
+  patch -Np1 -i "${srcdir}/0003_saslauthd_mdoc.patch"
+  patch -Np1 -i "${srcdir}/0010_maintainer_mode.patch"
+  patch -Np1 -i "${srcdir}/0011_saslauthd_ac_prog_libtool.patch"
+  patch -Np1 -i "${srcdir}/0012_xopen_crypt_prototype.patch"
+  patch -Np1 -i "${srcdir}/0016_pid_file_lock_creation_mask.patch"
+  patch -Np1 -i "${srcdir}/0018_auth_rimap_quotes.patch"
+  patch -Np1 -i "${srcdir}/0019_ldap_deprecated.patch"
+  patch -Np1 -i "${srcdir}/0022_gcc4.4_preprocessor_syntax.patch"
+  patch -Np1 -i "${srcdir}/0025_ld_as_needed.patch"
+  patch -Np1 -i "${srcdir}/0026_drop_krb5support_dependency.patch"
+  patch -Np1 -i "${srcdir}/0027_db5_support.patch"
+  patch -Np1 -i "${srcdir}/0030-dont_use_la_files_for_opening_plugins.patch"
+
+  rm -f config/config.guess config/config.sub 
+  rm -f config/ltconfig config/ltmain.sh config/libtool.m4
+  rm -fr autom4te.cache
+  libtoolize -c
+  aclocal -I config -I cmulocal
+  automake -a -c
+  autoheader
+  autoconf
+
+  pushd saslauthd
+  rm -f config/config.guess config/config.sub 
+  rm -f config/ltconfig config/ltmain.sh config/libtool.m4
+  rm -fr autom4te.cache
+  libtoolize -c
+  aclocal -I config -I ../cmulocal -I ../config
+  automake -a -c
+  autoheader
+  autoconf
+  popd
+
   ./configure --prefix=/usr \
-  	--sysconfdir=/etc \
-  	--localstatedir=/var \
-	--disable-anon \
-	--disable-cram \
-	--disable-digest \
-	--disable-gssapi \
-	--enable-login \
-	--disable-otp \
-	--enable-plain \
-        --mandir=/usr/share/man
-  for dir in include lib sasldb plugins utils; do
-    pushd ${dir}
-    make
-    popd
-  done
+      --mandir=/usr/share/man \
+      --infodir=/usr/share/info \
+      --disable-static \
+      --enable-shared \
+      --enable-alwaystrue \
+      --enable-checkapop \
+      --enable-cram \
+      --enable-digest \
+      --disable-otp \
+      --disable-srp \
+      --disable-srp-setpass \
+      --disable-krb4 \
+      --enable-gssapi \
+      --enable-auth-sasldb \
+      --enable-plain \
+      --enable-anon \
+      --enable-login \
+      --enable-ntlm \
+      --disable-passdss \
+      --enable-sql \
+      --enable-ldapdb \
+      --disable-macos-framework \
+      --with-pam \
+      --with-saslauthd=/var/run/saslauthd \
+      --with-ldap \
+      --with-configdir=/etc/sasl2:/etc/sasl:/usr/lib/sasl2 \
+      --sysconfdir=/etc \
+      --with-devrandom=/dev/urandom
+  make
 }
 
-package() {
+package_libsasl() {
+  pkgdesc="Cyrus Simple Authentication Service Layer (SASL) Library"
+  depends=('openssl')
+  conflicts=('cyrus-sasl-plugins')
+
   cd "${srcdir}/cyrus-sasl-${pkgver}"
   for dir in include lib sasldb plugins utils; do
-    pushd ${dir} || return 1
+    pushd ${dir}
     make DESTDIR="${pkgdir}" install
     popd
   done
+  rm -f "${pkgdir}"/usr/lib/sasl2/libsql.so*
+  rm -f "${pkgdir}"/usr/lib/sasl2/libgssapiv2.so*
+  rm -f "${pkgdir}"/usr/lib/sasl2/libldapdb.so*
+  install -m755 -d "${pkgdir}/usr/share/licenses/libsasl"
+  install -m644 COPYING "${pkgdir}/usr/share/licenses/libsasl/"
+}
+
+package_cyrus-sasl() {
+  depends=("libsasl=${pkgver}-${pkgrel}")
+  pkgdesc="Cyrus saslauthd SASL authentication daemon"
+  backup=('etc/conf.d/saslauthd')
+
+  cd "${srcdir}/cyrus-sasl-${pkgver}/saslauthd"
+  make DESTDIR="${pkgdir}" install
+  install -m755 -d "${pkgdir}/etc/rc.d"
+  install -m755 -d "${pkgdir}/etc/conf.d"
+  install -m755 "${srcdir}/saslauthd" "${pkgdir}/etc/rc.d/"
+  install -m644 "${srcdir}/saslauthd.conf.d" "${pkgdir}/etc/conf.d/saslauthd"
+
+  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl"
+  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl/"
+}
+
+package_cyrus-sasl-gssapi() {
+  pkgdesc="GSSAPI authentication mechanism for Cyrus SASL"
+  depends=("libsasl=${pkgver}-${pkgrel}" 'krb5')
+  replaces=('cyrus-sasl-plugins')
+
+  cd "${srcdir}/cyrus-sasl-${pkgver}/plugins"
+  install -m755 -d "${pkgdir}/usr/lib/sasl2"
+  cp -a .libs/libgssapiv2.so* "${pkgdir}/usr/lib/sasl2/"
+
+  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-gssapi"
+  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-gssapi/"
+}
+
+package_cyrus-sasl-ldap() {
+  pkgdesc="ldapdb auxprop module for Cyrus SASL"
+  depends=("libsasl=${pkgver}-${pkgrel}" 'libldap')
+  replaces=('cyrus-sasl-plugins')
+
+  cd "${srcdir}/cyrus-sasl-${pkgver}/plugins"
+  install -m755 -d "${pkgdir}/usr/lib/sasl2"
+  cp -a .libs/libldapdb.so* "${pkgdir}/usr/lib/sasl2/"
+
+  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-ldap"
+  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-ldap/"
+}
+
+package_cyrus-sasl-sql() {
+  pkgdesc="SQL auxprop module for Cyrus SASL"
+  depends=("libsasl=${pkgver}-${pkgrel}" 'postgresql-libs' 'libmysqlclient')
+  replaces=('cyrus-sasl-plugins')
+
+  cd "${srcdir}/cyrus-sasl-${pkgver}/plugins"
+  install -m755 -d "${pkgdir}/usr/lib/sasl2"
+  cp -a .libs/libsql.so* "${pkgdir}/usr/lib/sasl2/"
 
-  # install license
-  install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-sql"
+  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-sql/"
 }
diff --git a/abs/core/libsasl/cyrus-sasl-2.1.22-as-needed.patch b/abs/core/libsasl/cyrus-sasl-2.1.22-as-needed.patch
new file mode 100644
index 0000000..1294cb5
--- /dev/null
+++ b/abs/core/libsasl/cyrus-sasl-2.1.22-as-needed.patch
@@ -0,0 +1,11 @@
+--- saslauthd/configure.in.orig	2006-05-23 15:53:17.000000000 -0700
++++ saslauthd/configure.in	2006-05-23 15:53:33.000000000 -0700
+@@ -77,7 +77,7 @@
+   AC_DEFINE(AUTH_SASLDB,[],[Include SASLdb Support])
+   SASL_DB_PATH_CHECK()
+   SASL_DB_CHECK()
+-  SASL_DB_LIB="$SASL_DB_LIB ../sasldb/.libs/libsasldb.al"
++  SASL_DB_LIB="../sasldb/.libs/libsasldb.a $SASL_DB_LIB"
+ fi
+ 
+ AC_ARG_ENABLE(httpform, [  --enable-httpform       enable HTTP form authentication [[no]] ],
diff --git a/abs/core/libsasl/cyrus-sasl-2.1.22-automake-1.10.patch b/abs/core/libsasl/cyrus-sasl-2.1.22-automake-1.10.patch
new file mode 100644
index 0000000..8cd71c0
--- /dev/null
+++ b/abs/core/libsasl/cyrus-sasl-2.1.22-automake-1.10.patch
@@ -0,0 +1,94 @@
+Re-merged patch by Robert Scheck <redhat@linuxnetz.de> for cyrus-sasl >= 2.1.22, which was
+originally written by Jacek Konieczny <jajcus@pld-linux.org> and makes cyrus-sasl building
+using automake 1.10.
+
+--- cyrus-sasl-2.1.22/plugins/Makefile.am		2006-05-17 18:46:16.000000000 +0200
++++ cyrus-sasl-2.1.22/plugins/Makefile.am.am110		2007-02-16 15:42:07.000000000 +0100
+@@ -82,73 +82,73 @@
+ 	libntlm.la libpassdss.la libsasldb.la libsql.la libldapdb.la
+ 
+ libplain_la_SOURCES = plain.c plain_init.c $(common_sources)
+-libplain_la_LDFLAGS = -version-info $(plain_version)
++libplain_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(plain_version)
+ libplain_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libplain_la_LIBADD = $(PLAIN_LIBS) $(COMPAT_OBJS)
+ 
+ libanonymous_la_SOURCES = anonymous.c anonymous_init.c $(common_sources)
+-libanonymous_la_LDFLAGS = -version-info $(anonymous_version)
++libanonymous_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(anonymous_version)
+ libanonymous_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libanonymous_la_LIBADD = $(COMPAT_OBJS)
+ 
+ libkerberos4_la_SOURCES = kerberos4.c kerberos4_init.c $(common_sources)
+-libkerberos4_la_LDFLAGS = -version-info $(kerberos4_version)
++libkerberos4_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(kerberos4_version)
+ libkerberos4_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libkerberos4_la_LIBADD = $(SASL_KRB_LIB) $(LIB_SOCKET) $(COMPAT_OBJS)
+ 
+ libgssapiv2_la_SOURCES = gssapi.c gssapiv2_init.c $(common_sources)
+-libgssapiv2_la_LDFLAGS = -version-info $(gssapiv2_version)
++libgssapiv2_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(gssapiv2_version)
+ libgssapiv2_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libgssapiv2_la_LIBADD = $(GSSAPIBASE_LIBS) $(GSSAPI_LIBS) $(LIB_SOCKET) $(COMPAT_OBJS)
+ 
+ libcrammd5_la_SOURCES = cram.c crammd5_init.c $(common_sources)
+-libcrammd5_la_LDFLAGS = -version-info $(crammd5_version)
++libcrammd5_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(crammd5_version)
+ libcrammd5_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libcrammd5_la_LIBADD = $(COMPAT_OBJS)
+ 
+ libdigestmd5_la_SOURCES = digestmd5.c digestmd5_init.c $(common_sources)
+-libdigestmd5_la_LDFLAGS = -version-info $(digestmd5_version)
++libdigestmd5_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(digestmd5_version)
+ libdigestmd5_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libdigestmd5_la_LIBADD = $(LIB_DES) $(LIB_SOCKET) $(COMPAT_OBJS)
+ 
+ liblogin_la_SOURCES = login.c login_init.c $(common_sources)
+-liblogin_la_LDFLAGS = -version-info $(login_version)
++liblogin_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(login_version)
+ liblogin_la_DEPENDENCIES = $(COMPAT_OBJS)
+ liblogin_la_LIBADD = $(PLAIN_LIBS) $(COMPAT_OBJS)
+ 
+ libsrp_la_SOURCES = srp.c srp_init.c $(common_sources)
+-libsrp_la_LDFLAGS = -version-info $(srp_version)
++libsrp_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(srp_version)
+ libsrp_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libsrp_la_LIBADD = $(SRP_LIBS) $(COMPAT_OBJS)
+ 
+ libotp_la_SOURCES = otp.c otp_init.c otp.h $(common_sources)
+-libotp_la_LDFLAGS = -version-info $(otp_version)
++libotp_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(otp_version)
+ libotp_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libotp_la_LIBADD = $(OTP_LIBS) $(COMPAT_OBJS)
+ 
+ libntlm_la_SOURCES = ntlm.c ntlm_init.c $(common_sources)
+-libntlm_la_LDFLAGS = -version-info $(ntlm_version)
++libntlm_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(ntlm_version)
+ libntlm_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libntlm_la_LIBADD = $(NTLM_LIBS) $(COMPAT_OBJS)
+ 
+ libpassdss_la_SOURCES = passdss.c passdss_init.c $(common_sources)
+-libpassdss_la_LDFLAGS = -version-info $(passdss_version)
++libpassdss_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(passdss_version)
+ libpassdss_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libpassdss_la_LIBADD = $(PASSDSS_LIBS) $(COMPAT_OBJS)
+ 
+ # Auxprop Plugins
+ libsasldb_la_SOURCES = sasldb.c sasldb_init.c $(common_sources)
+-libsasldb_la_LDFLAGS = -version-info $(sasldb_version)
++libsasldb_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(sasldb_version)
+ libsasldb_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libsasldb_la_LIBADD = ../sasldb/libsasldb.la $(SASL_DB_LIB) $(COMPAT_OBJS)
+ 
+ libldapdb_la_SOURCES = ldapdb.c ldapdb_init.c $(common_sources)
+-libldapdb_la_LDFLAGS = $(LIB_LDAP) -version-info $(ldapdb_version)
++libldapdb_la_LDFLAGS = $(AM_LDFLAGS) $(LIB_LDAP) -version-info $(ldapdb_version)
+ libldapdb_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libldapdb_la_LIBADD = $(COMPAT_OBJS)
+ 
+ libsql_la_SOURCES = sql.c sql_init.c $(common_sources)
+-libsql_la_LDFLAGS = $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE) -version-info $(sql_version)
++libsql_la_LDFLAGS = $(AM_LDFLAGS) $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE) -version-info $(sql_version)
+ libsql_la_DEPENDENCIES = $(COMPAT_OBJS)
+ libsql_la_LIBADD = $(COMPAT_OBJS)
+ 
diff --git a/abs/core/libsasl/cyrus-sasl-2.1.22-crypt.patch b/abs/core/libsasl/cyrus-sasl-2.1.22-crypt.patch
new file mode 100644
index 0000000..fd35632
--- /dev/null
+++ b/abs/core/libsasl/cyrus-sasl-2.1.22-crypt.patch
@@ -0,0 +1,71 @@
+http://bugs.gentoo.org/152544
+
+--- cyrus-sasl-2.1.22/lib/Makefile.am
++++ cyrus-sasl-2.1.22/lib/Makefile.am
+@@ -45,6 +45,7 @@ sasl_version = 2:22:0
+ 
+ INCLUDES=-I$(top_srcdir)/include -I$(top_srcdir)/plugins -I$(top_builddir)/include -I$(top_srcdir)/sasldb
+ 
++AM_CFLAGS = -fPIC
+ EXTRA_DIST = windlopen.c staticopen.h NTMakefile
+ EXTRA_LIBRARIES = libsasl2.a
+ noinst_LIBRARIES = @SASL_STATIC_LIBS@
+--- cyrus-sasl-2.1.22/plugins/Makefile.am
++++ cyrus-sasl-2.1.22/plugins/Makefile.am
+@@ -63,6 +63,7 @@ srp_version = 2:22:0
+ 
+ INCLUDES=-I$(top_srcdir)/include -I$(top_srcdir)/lib -I$(top_srcdir)/sasldb -I$(top_builddir)/include
+ AM_LDFLAGS = -module -export-dynamic -rpath $(plugindir)
++AM_CFLAGS = -fPIC
+ 
+ COMPAT_OBJS = @LTGETADDRINFOOBJS@ @LTGETNAMEINFOOBJS@ @LTSNPRINTFOBJS@
+ 
+--- cyrus-sasl-2.1.22/sasldb/Makefile.am
++++ cyrus-sasl-2.1.22/sasldb/Makefile.am
+@@ -48,6 +48,7 @@ INCLUDES=-I$(top_srcdir)/include -I$(top
+ 
+ extra_common_sources = db_none.c db_ndbm.c db_gdbm.c db_berkeley.c
+ 
++AM_CFLAGS = -fPIC
+ EXTRA_DIST = NTMakefile
+ 
+ noinst_LTLIBRARIES = libsasldb.la
+--- cyrus-sasl-2.1.22/utils/Makefile.am
++++ cyrus-sasl-2.1.22/utils/Makefile.am
+@@ -42,7 +42,7 @@
+ #
+ ################################################################
+ 
+-all_sasl_libs = ../lib/libsasl2.la $(SASL_DB_LIB) $(LIB_SOCKET)
++all_sasl_libs = ../lib/libsasl2.la $(SASL_DB_LIB) $(LIB_SOCKET) $(LIB_CRYPT)
+ all_sasl_static_libs = ../lib/.libs/libsasl2.a $(SASL_DB_LIB) $(LIB_SOCKET) $(GSSAPIBASE_LIBS) $(GSSAPI_LIBS) $(SASL_KRB_LIB) $(LIB_DES) $(PLAIN_LIBS) $(SRP_LIBS) $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE)
+ 
+ sbin_PROGRAMS = @SASL_DB_UTILS@ @SMTPTEST_PROGRAM@ pluginviewer
+--- cyrus-sasl-2.1.22/sample/Makefile.am
++++ cyrus-sasl-2.1.22/sample/Makefile.am
+@@ -54,10 +54,10 @@ sample_server_SOURCES = sample-server.c
+ server_SOURCES = server.c common.c common.h
+ client_SOURCES = client.c common.c common.h
+ 
+-server_LDADD = ../lib/libsasl2.la $(LIB_SOCKET)
+-client_LDADD = ../lib/libsasl2.la $(LIB_SOCKET)
++server_LDADD = ../lib/libsasl2.la $(LIB_SOCKET) $(LIB_CRYPT)
++client_LDADD = ../lib/libsasl2.la $(LIB_SOCKET) $(LIB_CRYPT)
+ 
+-sample_client_LDADD = ../lib/libsasl2.la $(LIB_SOCKET)
+-sample_server_LDADD = ../lib/libsasl2.la $(LIB_SOCKET)
++sample_client_LDADD = ../lib/libsasl2.la $(LIB_SOCKET) $(LIB_CRYPT)
++sample_server_LDADD = ../lib/libsasl2.la $(LIB_SOCKET) $(LIB_CRYPT)
+ 
+ EXTRA_DIST = NTMakefile
+--- cyrus-sasl-2.1.22/lib/Makefile.am
++++ cyrus-sasl-2.1.22/lib/Makefile.am
+@@ -63,7 +63,7 @@ lib_LTLIBRARIES = libsasl2.la
+ libsasl2_la_SOURCES = $(common_sources) $(common_headers)
+ libsasl2_la_LDFLAGS = -version-info $(sasl_version)
+ libsasl2_la_DEPENDENCIES = $(LTLIBOBJS)
+-libsasl2_la_LIBADD = $(LTLIBOBJS) $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR)
++libsasl2_la_LIBADD = $(LTLIBOBJS) $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) $(LIB_CRYPT)
+ 
+ if MACOSX
+ framedir = /Library/Frameworks/SASL2.framework
diff --git a/abs/core/libsasl/cyrus-sasl-2.1.22-qa.patch b/abs/core/libsasl/cyrus-sasl-2.1.22-qa.patch
new file mode 100644
index 0000000..4f7b04f
--- /dev/null
+++ b/abs/core/libsasl/cyrus-sasl-2.1.22-qa.patch
@@ -0,0 +1,22 @@
+fix missing prototype warnings
+
+--- cyrus-sasl-2.1.22/lib/auxprop.c
++++ cyrus-sasl-2.1.22/lib/auxprop.c
+@@ -43,6 +43,7 @@
+  */
+ 
+ #include <config.h>
++#include <stdio.h>
+ #include <sasl.h>
+ #include <prop.h>
+ #include <ctype.h>
+--- cyrus-sasl-2.1.22/pwcheck/pwcheck_getspnam.c
++++ cyrus-sasl-2.1.22/pwcheck/pwcheck_getspnam.c
+@@ -24,6 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERF
+ ******************************************************************/
+ 
+ #include <shadow.h>
++#include <string.h>
+ 
+ extern char *crypt();
+ 
diff --git a/abs/core/libsasl/cyrus-sasl-2.1.23-authd-fix.patch b/abs/core/libsasl/cyrus-sasl-2.1.23-authd-fix.patch
new file mode 100644
index 0000000..f5f372d
--- /dev/null
+++ b/abs/core/libsasl/cyrus-sasl-2.1.23-authd-fix.patch
@@ -0,0 +1,28 @@
+fix warnings:
+
+auth_sasldb.c: In function ‘auth_sasldb’:
+auth_sasldb.c:144: warning: implicit declaration of function ‘gethostname’
+
+auth_sasldb.c:153: warning: passing argument 8 of ‘_sasldb_getdata’ from incompatible pointer type
+../sasldb/sasldb.h:60: note: expected ‘size_t *’ but argument is of type ‘int *’
+
+--- saslauthd/auth_sasldb.c
++++ saslauthd/auth_sasldb.c
+@@ -41,6 +41,7 @@
+ #include <string.h>
+ #include <stdlib.h>
+ #include <pwd.h>
++#include <unistd.h>
+ /* END PUBLIC DEPENDENCIES */
+ 
+ #define RETURN(x) return strdup(x)
+@@ -131,7 +132,8 @@
+     /* VARIABLES */
+     char pw[1024];			/* pointer to passwd file entry */
+     sasl_utils_t utils;
+-    int ret, outsize;
++    int ret;
++    size_t outsize;
+     const char *use_realm;
+     char realm_buf[MAXHOSTNAMELEN];
+     /* END VARIABLES */
diff --git a/abs/core/libsasl/cyrus-sasl-db.patch b/abs/core/libsasl/cyrus-sasl-db.patch
deleted file mode 100644
index 08758ab..0000000
--- a/abs/core/libsasl/cyrus-sasl-db.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -urN aaa/cyrus-sasl-2.1.22/cmulocal/berkdb.m4 cyrus-sasl-2.1.22/cmulocal/berkdb.m4
---- aaa/cyrus-sasl-2.1.22/cmulocal/berkdb.m4	2005-04-26 21:14:07.000000000 +0200
-+++ cyrus-sasl-2.1.22/cmulocal/berkdb.m4	2006-10-02 20:36:17.137852392 +0200
-@@ -213,7 +213,7 @@
- 	fi
- 
- 	saved_LIBS=$LIBS
--        for dbname in db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db
-+        for dbname in db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db
-           do
- 	    LIBS="$saved_LIBS -l$dbname"
- 	    AC_TRY_LINK([#include <db.h>],
---- cyrus-sasl-2.1.23/sasldb/db_berkeley.c.orig	2009-04-28 17:09:18.000000000 +0200
-+++ cyrus-sasl-2.1.23/sasldb/db_berkeley.c	2010-05-18 21:02:20.418940098 +0200
-@@ -100,7 +100,7 @@
-     ret = db_create(mbdb, NULL, 0);
-     if (ret == 0 && *mbdb != NULL)
-     {
--#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
-+#if (DB_VERSION_MAJOR > 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
- 	ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, flags, 0660);
- #else
- 	ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, flags, 0660);
---- cyrus-sasl-2.1.23/utils/dbconverter-2.c.orig	2003-02-13 20:56:17.000000000 +0100
-+++ cyrus-sasl-2.1.23/utils/dbconverter-2.c	2010-05-18 21:11:09.982932556 +0200
-@@ -214,7 +214,7 @@
-     ret = db_create(mbdb, NULL, 0);
-     if (ret == 0 && *mbdb != NULL)
-     {
--#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
-+#if (DB_VERSION_MAJOR > 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
- 	ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, DB_CREATE, 0664);
- #else
- 	ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, DB_CREATE, 0664);
diff --git a/abs/core/libsasl/saslauthd b/abs/core/libsasl/saslauthd
new file mode 100644
index 0000000..6afafae
--- /dev/null
+++ b/abs/core/libsasl/saslauthd
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# source application-specific settings
+[ -f /etc/conf.d/saslauthd ] && . /etc/conf.d/saslauthd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+DAEMON_NAME="saslauthd"
+SASLAUTHD_BIN=/usr/sbin/saslauthd
+SASLAUTHD_RUN=/var/run/saslauthd
+SASLAUTHD_PID=$SASLAUTHD_RUN/saslauthd.pid
+
+case "$1" in
+  start)
+    stat_busy "Starting $DAEMON_NAME"
+    [ ! -d /var/run/saslauthd ] && install -d /var/run/saslauthd
+    if $SASLAUTHD_BIN $SASLAUTHD_OPTS >/dev/null; then
+      add_daemon $DAEMON_NAME
+      stat_done
+    else
+      stat_fail
+      exit 1
+    fi
+    ;;
+
+  stop)
+    stat_busy "Stopping $DAEMON_NAME"
+    [ -f $SASLAUTHD_PID ] && kill `cat $SASLAUTHD_PID` &>/dev/null
+    if [ $? -gt 0 ]; then
+      stat_fail
+      exit 1
+    else
+      rm_daemon $DAEMON_NAME
+      stat_done
+    fi
+    ;;
+
+  restart)
+    $0 stop
+    sleep 1
+    $0 start
+    ;;
+
+  *)
+    echo "usage: $0 {start|stop|restart}"  
+esac
+exit 0
+# vim: ts=2 sw=2 et ft=sh
diff --git a/abs/core/libsasl/saslauthd.conf.d b/abs/core/libsasl/saslauthd.conf.d
new file mode 100644
index 0000000..1672112
--- /dev/null
+++ b/abs/core/libsasl/saslauthd.conf.d
@@ -0,0 +1 @@
+SASLAUTHD_OPTS="-a pam"
-- 
cgit v0.12