-diff -urN cyrus-sasl-1.5.21.orig/acconfig.h cyrus-sasl-1.5.21/acconfig.h
---- cyrus-sasl-1.5.21.orig/acconfig.h Tue Mar 7 06:19:51 2000
-+++ cyrus-sasl-1.5.21/acconfig.h Thu Jun 1 13:08:35 2000
-@@ -64,6 +64,9 @@
- /* This is where plugins will live at runtime */
- #undef PLUGINDIR
-
-+/* This is where config files will live at runtime */
-+#undef CONFIGDIR
-+
- /* Make autoheader happy */
- #undef WITH_SYMBOL_UNDERSCORE
-
-@@ -152,6 +155,7 @@
- #endif
-
- #define SASL_PATH_ENV_VAR "SASL_PATH"
-+#define SASL_CONF_PATH_ENV_VAR "SASL_CONF_PATH"
-
- #include <stdlib.h>
- #include <sys/types.h>
-diff -urN cyrus-sasl-1.5.21.orig/configure.in cyrus-sasl-1.5.21/configure.in
---- cyrus-sasl-1.5.21.orig/configure.in Tue May 9 19:52:53 2000
-+++ cyrus-sasl-1.5.21/configure.in Thu Jun 1 13:48:11 2000
-@@ -583,6 +583,13 @@
- AC_DEFINE_UNQUOTED(PLUGINDIR, "$plugindir")
+--- cyrus-sasl-2.1.17/configure.in.orig 2003-11-28 19:37:10.000000000 +0100
++++ cyrus-sasl-2.1.17/configure.in 2003-12-03 22:45:24.790632560 +0100
+@@ -710,6 +710,13 @@
+ AC_DEFINE_UNQUOTED(PLUGINDIR, "$plugindir", [Runtime plugin location])
AC_SUBST(plugindir)
+AC_ARG_WITH(configdir, [ --with-configdir=DIR set the directory where config files will
+ be found [/etc/sasl] ],
+ configdir=$withval,
+ configdir=/etc/sasl)
-+AC_DEFINE_UNQUOTED(CONFIGDIR, "$configdir")
++AC_DEFINE_UNQUOTED(CONFIGDIR, "$configdir", [Runtime config files location])
+AC_SUBST(configdir)
+
dnl look for rc4 libraries. we accept the CMU one or one from openSSL
- AC_ARG_WITH(rc4, [ --with-rc4=DIR use rc4 (look in DIR) [yes] ],
+ AC_ARG_WITH(rc4, [ --with-rc4 use internal rc4 routines [yes] ],
with_rc4=$withval,
-diff -urN cyrus-sasl-1.5.21.orig/include/sasl.h cyrus-sasl-1.5.21/include/sasl.h
---- cyrus-sasl-1.5.21.orig/include/sasl.h Tue May 9 19:52:53 2000
-+++ cyrus-sasl-1.5.21/include/sasl.h Thu Jun 1 13:04:48 2000
-@@ -14,6 +14,7 @@
- * sasl_getopt_t client/server: Get an option value
- * sasl_log_t client/server: Log message handler
- * sasl_getpath_t client/server: Get path to search for mechanisms
-+ * sasl_getconfpath_t server: Get path to search for config file
- * sasl_getsimple_t client: Get user/language list
- * sasl_getsecret_t client: Get authentication secret
- * sasl_chalprompt_t client: Display challenge and prompt for response
-@@ -401,6 +402,25 @@
- const char * file, const int type);
+@@ -1006,6 +1013,7 @@
+ #endif
+
+ #define SASL_PATH_ENV_VAR "SASL_PATH"
++#define SASL_CONF_PATH_ENV_VAR "SASL_CONF_PATH"
+
+ #include <stdlib.h>
+ #include <sys/types.h>
+diff -durN cyrus-sasl-2.1.10.orig/include/sasl.h cyrus-sasl-2.1.10/include/sasl.h
+--- cyrus-sasl-2.1.10.orig/include/sasl.h Fri Dec 6 17:23:59 2002
++++ cyrus-sasl-2.1.10/include/sasl.h Thu Jan 9 11:44:00 2003
+@@ -467,6 +467,24 @@
+ const char *file, sasl_verify_type_t type);
+ #define SASL_CB_VERIFYFILE 4
- #define SASL_CB_VERIFYFILE (4)
-+
+/* getconfpath callback -- this allows applications to specify the
+ * colon-separated path to search for config files (by default,
+ * taken from the SASL_CONF_PATH environment variable).
+
+#define SASL_CB_GETCONFPATH (5)
- /* these are the types of files libsasl will ask about */
- #define SASL_VRFY_PLUGIN (1)
-diff -urN cyrus-sasl-1.5.21.orig/lib/common.c cyrus-sasl-1.5.21/lib/common.c
---- cyrus-sasl-1.5.21.orig/lib/common.c Fri May 5 14:41:42 2000
-+++ cyrus-sasl-1.5.21/lib/common.c Thu Jun 1 12:53:19 2000
-@@ -666,6 +666,20 @@
+ /* client/user interaction callbacks:
+ */
+diff -durN cyrus-sasl-2.1.10.orig/lib/common.c cyrus-sasl-2.1.10/lib/common.c
+--- cyrus-sasl-2.1.10.orig/lib/common.c Thu Dec 5 15:00:38 2002
++++ cyrus-sasl-2.1.10/lib/common.c Thu Jan 9 11:42:29 2003
+@@ -1040,6 +1040,22 @@
}
static int
+_sasl_getconfpath(void *context __attribute__((unused)),
+ char ** path_dest)
+{
-+ char *path;
++ char *path = NULL;
+
+ if (! path_dest)
+ return SASL_BADPARAM;
-+ path = getenv(SASL_CONF_PATH_ENV_VAR);
++ /* Honor external variable only in a safe environment */
++ if (getuid() == geteuid() && getgid() == getegid())
++ path = getenv(SASL_CONF_PATH_ENV_VAR);
+ if (! path)
+ path = CONFIGDIR;
+ return _sasl_strdup(path, path_dest, NULL);
_sasl_verifyfile(void *context __attribute__((unused)),
char *file __attribute__((unused)),
int type __attribute__((unused)))
-@@ -768,6 +782,10 @@
+@@ -1147,6 +1163,10 @@
*pproc = (int (*)()) &_sasl_getpath;
*pcontext = NULL;
return SASL_OK;
case SASL_CB_AUTHNAME:
*pproc = (int (*)()) &_sasl_getsimple;
*pcontext = conn;
-@@ -1093,6 +1111,30 @@
-
- return &default_getpath_cb;
+@@ -1475,6 +1495,30 @@
}
-+
-+const sasl_callback_t *
+
+ const sasl_callback_t *
+_sasl_find_getconfpath_callback(const sasl_callback_t *callbacks)
+{
+ static const sasl_callback_t default_getconfpath_cb = {
+ return &default_getconfpath_cb;
+}
+
-
- const sasl_callback_t *
++
++const sasl_callback_t *
_sasl_find_verifyfile_callback(const sasl_callback_t *callbacks)
-diff -urN cyrus-sasl-1.5.21.orig/lib/saslint.h cyrus-sasl-1.5.21/lib/saslint.h
---- cyrus-sasl-1.5.21.orig/lib/saslint.h Wed Mar 29 06:45:21 2000
-+++ cyrus-sasl-1.5.21/lib/saslint.h Thu Jun 1 12:56:37 2000
-@@ -59,6 +59,9 @@
+ {
+ static const sasl_callback_t default_verifyfile_cb = {
+diff -durN cyrus-sasl-2.1.10.orig/lib/saslint.h cyrus-sasl-2.1.10/lib/saslint.h
+--- cyrus-sasl-2.1.10.orig/lib/saslint.h Thu Dec 5 05:16:59 2002
++++ cyrus-sasl-2.1.10/lib/saslint.h Thu Jan 9 11:42:29 2003
+@@ -356,6 +356,9 @@
_sasl_find_getpath_callback(const sasl_callback_t *callbacks);
extern const sasl_callback_t *
+extern const sasl_callback_t *
_sasl_find_verifyfile_callback(const sasl_callback_t *callbacks);
- extern int _sasl_done_with_plugin(void *plugin);
-diff -urN cyrus-sasl-1.5.21.orig/lib/server.c cyrus-sasl-1.5.21/lib/server.c
---- cyrus-sasl-1.5.21.orig/lib/server.c Tue May 9 19:52:53 2000
-+++ cyrus-sasl-1.5.21/lib/server.c Thu Jun 1 12:59:03 2000
-@@ -540,15 +540,15 @@
- char *path_to_config=NULL, *c;
+ extern int _sasl_common_init(void);
+--- cyrus-sasl-2.1.19/lib/server.c.orig 2004-07-06 15:42:23.000000000 +0200
++++ cyrus-sasl-2.1.19/lib/server.c 2004-07-25 18:46:12.483590936 +0200
+@@ -462,7 +462,7 @@
+ size_t path_len;
char *config_filename=NULL;
- int len;
+ size_t len;
- const sasl_callback_t *getpath_cb=NULL;
+ const sasl_callback_t *getconfpath_cb=NULL;
+ /* If appname was not provided, behave as if there is no config file
+ (see also sasl_config_init() */
+@@ -471,12 +471,12 @@
+ }
+
/* get the path to the plugins; for now the config file will reside there */
- getpath_cb=_sasl_find_getpath_callback( global_callbacks.callbacks );
- if (getpath_cb==NULL) return SASL_BADPARAM;
&path_to_config);
if (result!=SASL_OK) goto done;
if (path_to_config == NULL) path_to_config = "";
-diff -urN cyrus-sasl-1.5.21.orig/man/sasl_getconfpath_t.3 cyrus-sasl-1.5.21/man/sasl_getconfpath_t.3
---- cyrus-sasl-1.5.21.orig/man/sasl_getconfpath_t.3 Thu Jan 1 01:00:00 1970
-+++ cyrus-sasl-1.5.21/man/sasl_getconfpath_t.3 Thu Jun 1 13:54:07 2000
+diff -durN cyrus-sasl-2.1.10.orig/man/sasl_getconfpath_t.3 cyrus-sasl-2.1.10/man/sasl_getconfpath_t.3
+--- cyrus-sasl-2.1.10.orig/man/sasl_getconfpath_t.3 Thu Jan 1 01:00:00 1970
++++ cyrus-sasl-2.1.10/man/sasl_getconfpath_t.3 Thu Jan 9 11:42:29 2003
@@ -0,0 +1,47 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.BR other sasl stuff
+.BR
+.BR
-\ No newline at end of file
-diff -urN cyrus-sasl-1.5.21.orig/win32/include/config.h cyrus-sasl-1.5.21/win32/include/config.h
---- cyrus-sasl-1.5.21.orig/win32/include/config.h Tue May 9 19:52:53 2000
-+++ cyrus-sasl-1.5.21/win32/include/config.h Thu Jun 1 13:07:47 2000
-@@ -72,7 +72,9 @@
+--- cyrus-sasl-2.1.17/win32/include/config.h.orig 2003-11-28 19:38:00.000000000 +0100
++++ cyrus-sasl-2.1.17/win32/include/config.h 2003-12-03 22:50:39.916726112 +0100
+@@ -91,7 +91,9 @@
#define HAVE_MEMCPY 1
#define SASL_PATH_ENV_VAR "SASL_PATH"
+#define SASL_CONF_PATH_ENV_VAR "SASL_CONF_PATH"
- #define PLUGINDIR "\\sasl-plugins"
+ #define PLUGINDIR "C:\\CMU\\bin\\sasl2"
+#define CONFIGDIR "\\sasl-configs"
/* Windows calls these functions something else
*/
-