cyrus-sasl: merge libsasl{,-devel} and make them subpkgs; fix build/install.

This commit is contained in:
Juan RP 2012-08-02 10:21:59 +02:00
parent 7f5387ea16
commit 6b1b57f667
33 changed files with 902 additions and 118 deletions

View File

@ -0,0 +1 @@
cyrus-sasl

View File

@ -0,0 +1,6 @@
libgssapi_krb5.so.2
libkrb5.so.3
libk5crypto.so.3
libcom_err.so.2
libresolv.so.2
libc.so.6

View File

@ -0,0 +1,13 @@
# Template file for 'cyrus-sasl-modules-sql'.
#
depends="cyrus-sasl>=${version}_${revision}"
short_desc="Cyrus SASL - pluggable authentication modules (GSSAPI)"
long_desc="
This is the Cyrus SASL API implementation, version 2.1. See package
libsasl and RFC 2222 for more information.
This package provides the GSSAPI authentication mechanism plugin."
do_install() {
vmove "usr/lib/sasl2/libgssapi*" usr/lib/sasl2
}

View File

@ -1,5 +1,6 @@
# Template file for 'cyrus-sasl-modules-ldap'.
#
depends="cyrus-sasl>=${version}_${revision}"
short_desc="Cyrus SASL - pluggable authentication modules (LDAP)"
long_desc="
This is the Cyrus SASL API implementation, version 2.1. See package
@ -7,9 +8,6 @@ long_desc="
This package provides the LDAP plugin."
do_install()
{
mkdir -p ${DESTDIR}/usr/lib/sasl2
mv ${SRCPKGDESTDIR}/usr/lib/sasl2/libldapdb.* ${DESTDIR}/usr/lib/sasl2
do_install() {
vmove "usr/lib/sasl2/libldapdb.*" usr/lib/sasl2
}

View File

@ -1,4 +1,3 @@
libmysqlclient.so.16
libpq.so.5
libresolv.so.2
libc.so.6

View File

@ -1,5 +1,6 @@
# Template file for 'cyrus-sasl-modules-sql'.
#
depends="cyrus-sasl>=${version}_${revision}"
short_desc="Cyrus SASL - pluggable authentication modules (SQL)"
long_desc="
This is the Cyrus SASL API implementation, version 2.1. See package
@ -7,9 +8,6 @@ long_desc="
This package provides the SQL plugin, which supports MySQL and PostgreSQL."
do_install()
{
mkdir -p ${DESTDIR}/usr/lib/sasl2
mv ${SRCPKGDESTDIR}/usr/lib/sasl2/libsql.* ${DESTDIR}/usr/lib/sasl2
do_install() {
vmove "usr/lib/sasl2/libsql.*" usr/lib/sasl2
}

View File

@ -1,9 +1,4 @@
libresolv.so.2
libc.so.6
libcrypto.so.1
libgssapi_krb5.so.2
libkrb5.so.3
libk5crypto.so.3
libcom_err.so.2
libkrb5support.so.0
libcrypt.so.1

View File

@ -1,5 +1,6 @@
# Template file for 'cyrus-sasl-plugins'.
#
depends="cyrus-sasl>=${version}_${revision}"
short_desc="Cyrus SASL - pluggable authentication modules"
long_desc="
This is the Cyrus SASL API implementation, version 2.1. See package
@ -8,10 +9,6 @@ long_desc="
This package provides the following SASL modules: LOGIN, PLAIN, ANONYMOUS,
NTLM, CRAM-MD5, and DIGEST-MD5 (with DES support)."
do_install()
{
mkdir -p ${DESTDIR}/usr/lib
mv ${SRCPKGDESTDIR}/usr/lib/sasl2 ${DESTDIR}/usr/lib
do_install() {
vmove usr/lib/sasl2 usr/lib
}

View File

@ -1,15 +1,12 @@
# Template file for 'libsasl-devel'.
#
depends="openssl-devel db-devel libsasl"
depends="openssl-devel db-devel libsasl>=${version}_${revision}"
short_desc="${sourcepkg} - development files"
long_desc="${long_desc}
This package contains files for development, headers, static libs, etc."
do_install()
{
mkdir -p ${DESTDIR}/usr
mv ${SRCPKGDESTDIR}/usr/{include,share} ${DESTDIR}/usr
do_install() {
vmove usr/include usr
vmove usr/share/man/man3 usr/share/man
}

View File

@ -1,4 +1,5 @@
libresolv.so.2
libdb-4.8.so
libc.so.6
libdl.so.2
libcrypt.so.1
libresolv.so.2
libc.so.6
libdb-4.8.so

View File

@ -0,0 +1,11 @@
# Template file for 'libsasl'.
#
short_desc="authentication abstraction library"
long_desc="${long_desc}
This package contains the runtime shared libraries."
do_install() {
vmove "usr/lib/*.so*" usr/lib
vmove "usr/lib/sasl2/libsasldb.*" usr/lib/sasl2
}

View File

@ -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

View File

@ -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"

View File

@ -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__

View File

@ -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 */

View File

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

View File

@ -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 */

View File

@ -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>

View File

@ -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,

View File

@ -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 =

View File

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

View File

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

View File

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

View File

@ -0,0 +1,170 @@
diff -ur ../cyrus-sasl-2.1.19.orig/lib/Makefile.in ./lib/Makefile.in
--- ../cyrus-sasl-2.1.19.orig/lib/Makefile.in 2004-07-02 21:40:15.000000000 +0200
+++ ./lib/Makefile.in 2004-09-07 13:21:22.746680576 +0200
@@ -120,7 +120,7 @@
JAVA_TRUE = @JAVA_TRUE@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
+LIBS = -lcrypt @LIBS@
LIBTOOL = @LIBTOOL@
LIB_CRYPT = @LIB_CRYPT@
LIB_DES = @LIB_DES@
diff -ur ../cyrus-sasl-2.1.19.orig/lib/checkpw.c ./lib/checkpw.c
--- ../cyrus-sasl-2.1.19.orig/lib/checkpw.c 2004-03-17 14:58:13.000000000 +0100
+++ ./lib/checkpw.c 2004-09-07 13:21:12.645916147 +0200
@@ -94,6 +94,23 @@
# endif
#endif
+/******************************
+ * crypt(3) patch start *
+ ******************************/
+char *crypt(const char *key, const char *salt);
+
+/* cleartext password formats */
+#define PASSWORD_FORMAT_CLEARTEXT 1
+#define PASSWORD_FORMAT_CRYPT 2
+#define PASSWORD_FORMAT_CRYPTTRAD 3
+#define PASSWORD_SALT_BUF_LEN 22
+
+/* weeds out crypt(3) password's salt */
+int _sasl_get_salt (char *dest, char *src, int format);
+
+/******************************
+ * crypt(3) patch stop *
+ ******************************/
/* we store the following secret to check plaintext passwords:
*
@@ -143,7 +160,51 @@
"*cmusaslsecretPLAIN",
NULL };
struct propval auxprop_values[3];
-
+
+ /******************************
+ * crypt(3) patch start *
+ * for password format check *
+ ******************************/
+ sasl_getopt_t *getopt;
+ void *context;
+ const char *p = NULL;
+ /**
+ * MD5: 12 char salt
+ * BLOWFISH: 16 char salt
+ */
+ char salt[PASSWORD_SALT_BUF_LEN];
+ int password_format;
+
+ /* get password format from auxprop configuration */
+ if (_sasl_getcallback(conn, SASL_CB_GETOPT, &getopt, &context) == SASL_OK) {
+ getopt(context, NULL, "password_format", &p, NULL);
+ }
+
+ /* set password format */
+ if (p) {
+ /*
+ memset(pass_format_str, '\0', PASSWORD_FORMAT_STR_LEN);
+ strncpy(pass_format_str, p, (PASSWORD_FORMAT_STR_LEN - 1));
+ */
+ /* modern, modular crypt(3) */
+ if (strncmp(p, "crypt", 11) == 0)
+ password_format = PASSWORD_FORMAT_CRYPT;
+ /* traditional crypt(3) */
+ else if (strncmp(p, "crypt_trad", 11) == 0)
+ password_format = PASSWORD_FORMAT_CRYPTTRAD;
+ /* cleartext password */
+ else
+ password_format = PASSWORD_FORMAT_CLEARTEXT;
+ } else {
+ /* cleartext password */
+ password_format = PASSWORD_FORMAT_CLEARTEXT;
+ }
+
+ /******************************
+ * crypt(3) patch stop *
+ * for password format check *
+ ******************************/
+
if (!conn || !userstr)
return SASL_BADPARAM;
@@ -180,14 +241,31 @@
goto done;
}
- /* At the point this has been called, the username has been canonified
- * and we've done the auxprop lookup. This should be easy. */
- if(auxprop_values[0].name
- && auxprop_values[0].values
- && auxprop_values[0].values[0]
- && !strcmp(auxprop_values[0].values[0], passwd)) {
- /* We have a plaintext version and it matched! */
- return SASL_OK;
+
+ /******************************
+ * crypt(3) patch start *
+ ******************************/
+
+ /* get salt */
+ _sasl_get_salt(salt, (char *) auxprop_values[0].values[0], password_format);
+
+ /* crypt(3)-ed password? */
+ if (password_format != PASSWORD_FORMAT_CLEARTEXT) {
+ /* compare password */
+ if (auxprop_values[0].name && auxprop_values[0].values && auxprop_values[0].values[0] && strcmp(crypt(passwd, salt), auxprop_values[0].values[0]) == 0)
+ return SASL_OK;
+ else
+ ret = SASL_BADAUTH;
+ }
+ else if (password_format == PASSWORD_FORMAT_CLEARTEXT) {
+ /* compare passwords */
+ if (auxprop_values[0].name && auxprop_values[0].values && auxprop_values[0].values[0] && strcmp(auxprop_values[0].values[0], passwd) == 0)
+ return SASL_OK;
+ else
+ ret = SASL_BADAUTH;
+ /******************************
+ * crypt(3) patch stop *
+ ******************************/
} else if(auxprop_values[1].name
&& auxprop_values[1].values
&& auxprop_values[1].values[0]) {
@@ -975,3 +1053,37 @@
#endif
{ NULL, NULL }
};
+
+/* weeds out crypt(3) password's salt */
+int _sasl_get_salt (char *dest, char *src, int format) {
+ int num; /* how many characters is salt long? */
+ switch (format) {
+ case PASSWORD_FORMAT_CRYPT:
+ /* md5 crypt */
+ if (src[1] == '1')
+ num = 12;
+ /* blowfish crypt */
+ else if (src[1] == '2')
+ num = (src[1] == '2' && src[2] == 'a') ? 17 : 16;
+ /* traditional crypt */
+ else
+ num = 2;
+ break;
+
+ case PASSWORD_FORMAT_CRYPTTRAD:
+ num = 2;
+ break;
+
+ default:
+ return 1;
+ }
+
+ /* destroy destination */
+ memset(dest, '\0', (num + 1));
+
+ /* copy salt to destination */
+ strncpy(dest, src, num);
+
+ return 1;
+}
+

View File

@ -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)

View File

@ -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

View File

@ -1,24 +0,0 @@
fix warnings with gcc-4.4
http://bugs.gentoo.org/248738
--- plugins/digestmd5.c
+++ plugins/digestmd5.c
@@ -2715,7 +2715,7 @@ static sasl_server_plug_t digestmd5_serv
"DIGEST-MD5", /* mech_name */
#ifdef WITH_RC4
128, /* max_ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,
@@ -4034,7 +4034,7 @@ static sasl_client_plug_t digestmd5_clie
"DIGEST-MD5",
#ifdef WITH_RC4 /* mech_name */
128, /* max ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,

View File

@ -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();

View File

@ -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 *
--- a/saslauthd/auth_sasldb.c
+++ b/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 */

View File

@ -1,37 +1,81 @@
# Template file for 'cyrus-sasl'
. ${XBPS_SRCPKGDIR}/libsasl/template
# Unset some unneeded stuff.
unset depends makedepends
pkgname=cyrus-sasl
revision=7
configure_args="--with-saslauthd=/run/saslauthd
--enable-login --enable-plain --enable-sql --disable-sqlite
--enable-postgresql --enable-mysql --enable-ldapdb --with-ldap=/usr"
depends="e2fsprogs-libs cyrus-sasl-modules"
makedepends="libsasl-devel libldap-devel mit-krb5-devel e2fsprogs-devel pam-devel openssl-devel postgresql-libs-devel libmysqlclient-devel"
version=2.1.23
revision=8
wrksrc="cyrus-sasl-${version}"
patch_args="-Np1"
depends="cyrus-sasl-modules>=${version}_${revision}"
makedepends="automake libldap-devel mit-krb5-devel e2fsprogs-devel pam-devel
openssl-devel postgresql-libs-devel libmysqlclient-devel db-devel sqlite-devel
groff"
short_desc="Cyrus SASL - auth daemon and administration tools"
long_desc="${long_desc}
maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://cyrusimap.web.cmu.edu/"
license="BSD"
distfiles="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-$version.tar.gz"
checksum=20efcc4040cbab6e89a636a07dcf5720ee07b5c62359a4e7bf2500ef6020b136
long_desc="
SASL is the Simple Authentication and Security Layer, a method for adding
authentication support to connection-based protocols. To use SASL, a protocol
includes a command for identifying and authenticating a user to a server and
for optionally negotiating protection of subsequent protocol interactions.
If its use is negotiated, a security layer is inserted between the protocol
and the connection. See RFC 2222 for more information.
This package includes the Cyrus SASL authentication daemon and administration
programs for the SASL users database and common binary files for plugin
modules."
Any of: ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI (MIT or Heimdal Kerberos 5),
NTLM, OTP, PLAIN, or LOGIN can be used. If you intend to use this package on a
server that provides SASL authentication, then you must install some of the
cyrus-sasl-modules* packages."
subpackages="${pkgname}-modules-ldap ${pkgname}-modules-sql ${pkgname}-modules"
subpackages="libsasl libsasl-devel ${pkgname}-modules-ldap
${pkgname}-modules-sql ${pkgname}-modules-gssapi ${pkgname}-modules"
systemd_services="saslauthd.service on"
conf_files="/etc/conf.d/saslauthd"
post_install() {
# Remove stuff in libsasl{,-devel} pkgs.
rm -rf ${DESTDIR}/usr/share/man/man3
rm -rf ${DESTDIR}/usr/include
rm -f ${DESTDIR}/usr/lib/libsasl*
rm -rf ${DESTDIR}/usr/lib/sasl2/libsasldb*
pre_configure() {
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
cd 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
}
do_configure() {
./configure ${CONFIGURE_SHARED_ARGS} --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 \
--with-devrandom=/dev/urandom
}
do_build() {
make ${makejobs}
}
do_install() {
make DESTDIR=${DESTDIR} install
# systemd
vinstall ${FILESDIR}/saslauthd.service 644 \
usr/lib/systemd/system
vinstall ${FILESDIR}/saslauthd.service 644 usr/lib/systemd/system
vinstall ${FILESDIR}/saslauthd.tmpfiles.d 644 \
usr/lib/tmpfiles.d saslauthd.conf
vinstall COPYING 644 usr/share/licenses/${pkgname}
}

1
srcpkgs/libsasl Symbolic link
View File

@ -0,0 +1 @@
cyrus-sasl

View File

@ -1 +1 @@
libsasl
cyrus-sasl

View File

@ -1,36 +0,0 @@
# Template file for 'libsasl'
pkgname=libsasl
version=2.1.23
revision=4
wrksrc="cyrus-sasl-${version}"
distfiles="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-$version.tar.gz"
build_style=gnu-configure
configure_args="--disable-anon --disable-cram
--disable-digest --disable-gssapi --disable-otp --disable-login
--disable-plain"
makedepends="db-devel openssl-devel"
short_desc="Cyrus SASL - authentication abstraction library"
maintainer="Juan RP <xtraeme@gmail.com>"
checksum=20efcc4040cbab6e89a636a07dcf5720ee07b5c62359a4e7bf2500ef6020b136
long_desc="
SASL is the Simple Authentication and Security Layer, a method for adding
authentication support to connection-based protocols. To use SASL, a protocol
includes a command for identifying and authenticating a user to a server and
for optionally negotiating protection of subsequent protocol interactions.
If its use is negotiated, a security layer is inserted between the protocol
and the connection. See RFC 2222 for more information.
Any of: ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI (MIT or Heimdal Kerberos 5),
NTLM, OTP, PLAIN, or LOGIN can be used. If you intend to use this package on a
server that provides SASL authentication, then you must install some of the
cyrus-sasl-modules* packages."
subpackages="libsasl-devel"
post_install()
{
# Remove unused stuff.
rm -rf ${DESTDIR}/usr/sbin
rm -rf ${DESTDIR}/usr/share/man/man8
}