sasl/sasl.patch

changeset 724
b318ab5c5f26
child 727
914043724d20
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/sasl/sasl.patch	Fri Oct 05 22:37:14 2012 +0200
     1.3 @@ -0,0 +1,600 @@
     1.4 +Index: configure
     1.5 +--- configure.orig	2006-05-18 21:30:13 +0200
     1.6 ++++ configure	2008-12-25 18:48:51 +0100
     1.7 +@@ -3944,9 +3944,6 @@
     1.8 + 
     1.9 + fi
    1.10 + 
    1.11 +-if test "$ac_cv_c_compiler_gnu" = yes; then
    1.12 +-  CFLAGS="-Wall -W ${CFLAGS}"
    1.13 +-fi
    1.14 + 
    1.15 + 
    1.16 + # Check whether --with-purecov or --without-purecov was given.
    1.17 +@@ -5125,7 +5122,7 @@
    1.18 + 	fi
    1.19 + 
    1.20 + 	saved_LIBS=$LIBS
    1.21 +-        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
    1.22 ++        for dbname in db
    1.23 +           do
    1.24 + 	    LIBS="$saved_LIBS -l$dbname"
    1.25 + 	    cat >conftest.$ac_ext <<_ACEOF
    1.26 +@@ -5205,6 +5202,54 @@
    1.27 + fi
    1.28 + rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
    1.29 +         fi
    1.30 ++        if test "$dblib" = "no"; then
    1.31 ++	    cat >conftest.$ac_ext <<_ACEOF
    1.32 ++/* confdefs.h.  */
    1.33 ++_ACEOF
    1.34 ++cat confdefs.h >>conftest.$ac_ext
    1.35 ++cat >>conftest.$ac_ext <<_ACEOF
    1.36 ++/* end confdefs.h.  */
    1.37 ++#include <db.h>
    1.38 ++int
    1.39 ++main ()
    1.40 ++{
    1.41 ++dbm_open(NULL, 0, 0, 0, NULL, NULL, NULL);
    1.42 ++  ;
    1.43 ++  return 0;
    1.44 ++}
    1.45 ++_ACEOF
    1.46 ++rm -f conftest.$ac_objext conftest$ac_exeext
    1.47 ++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
    1.48 ++  (eval $ac_link) 2>conftest.er1
    1.49 ++  ac_status=$?
    1.50 ++  grep -v '^ *+' conftest.er1 >conftest.err
    1.51 ++  rm -f conftest.er1
    1.52 ++  cat conftest.err >&5
    1.53 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    1.54 ++  (exit $ac_status); } &&
    1.55 ++	 { ac_try='test -z "$ac_c_werror_flag"
    1.56 ++			 || test ! -s conftest.err'
    1.57 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    1.58 ++  (eval $ac_try) 2>&5
    1.59 ++  ac_status=$?
    1.60 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    1.61 ++  (exit $ac_status); }; } &&
    1.62 ++	 { ac_try='test -s conftest$ac_exeext'
    1.63 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    1.64 ++  (eval $ac_try) 2>&5
    1.65 ++  ac_status=$?
    1.66 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    1.67 ++  (exit $ac_status); }; }; then
    1.68 ++  BDB_LIBADD="$BDB_LIBADD -ldb"; dblib="berkeley"; dbname=db
    1.69 ++else
    1.70 ++  echo "$as_me: failed program was:" >&5
    1.71 ++sed 's/^/| /' conftest.$ac_ext >&5
    1.72 ++
    1.73 ++dblib="no"
    1.74 ++fi
    1.75 ++rm -f conftest.err conftest.$ac_objext \
    1.76 ++      conftest$ac_exeext conftest.$ac_ext
    1.77 ++        fi
    1.78 + 	LIBS=$saved_LIBS
    1.79 + 
    1.80 + 	LDFLAGS=$BDB_SAVE_LDFLAGS
    1.81 +@@ -5882,7 +5927,7 @@
    1.82 + 	fi
    1.83 + 
    1.84 + 	saved_LIBS=$LIBS
    1.85 +-        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
    1.86 ++        for dbname in db
    1.87 +           do
    1.88 + 	    LIBS="$saved_LIBS -l$dbname"
    1.89 + 	    cat >conftest.$ac_ext <<_ACEOF
    1.90 +@@ -5962,6 +6007,54 @@
    1.91 + fi
    1.92 + rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
    1.93 +         fi
    1.94 ++        if test "$dblib" = "no"; then
    1.95 ++	    cat >conftest.$ac_ext <<_ACEOF
    1.96 ++/* confdefs.h.  */
    1.97 ++_ACEOF
    1.98 ++cat confdefs.h >>conftest.$ac_ext
    1.99 ++cat >>conftest.$ac_ext <<_ACEOF
   1.100 ++/* end confdefs.h.  */
   1.101 ++#include <db.h>
   1.102 ++int
   1.103 ++main ()
   1.104 ++{
   1.105 ++dbm_open(NULL, 0, 0, 0, NULL, NULL, NULL);
   1.106 ++  ;
   1.107 ++  return 0;
   1.108 ++}
   1.109 ++_ACEOF
   1.110 ++rm -f conftest.$ac_objext conftest$ac_exeext
   1.111 ++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   1.112 ++  (eval $ac_link) 2>conftest.er1
   1.113 ++  ac_status=$?
   1.114 ++  grep -v '^ *+' conftest.er1 >conftest.err
   1.115 ++  rm -f conftest.er1
   1.116 ++  cat conftest.err >&5
   1.117 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
   1.118 ++  (exit $ac_status); } &&
   1.119 ++	 { ac_try='test -z "$ac_c_werror_flag"
   1.120 ++			 || test ! -s conftest.err'
   1.121 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   1.122 ++  (eval $ac_try) 2>&5
   1.123 ++  ac_status=$?
   1.124 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
   1.125 ++  (exit $ac_status); }; } &&
   1.126 ++	 { ac_try='test -s conftest$ac_exeext'
   1.127 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   1.128 ++  (eval $ac_try) 2>&5
   1.129 ++  ac_status=$?
   1.130 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
   1.131 ++  (exit $ac_status); }; }; then
   1.132 ++  BDB_LIBADD="$BDB_LIBADD -ldb"; dblib="berkeley"; dbname=db
   1.133 ++else
   1.134 ++  echo "$as_me: failed program was:" >&5
   1.135 ++sed 's/^/| /' conftest.$ac_ext >&5
   1.136 ++
   1.137 ++dblib="no"
   1.138 ++fi
   1.139 ++rm -f conftest.err conftest.$ac_objext \
   1.140 ++      conftest$ac_exeext conftest.$ac_ext
   1.141 ++        fi
   1.142 + 	LIBS=$saved_LIBS
   1.143 + 
   1.144 + 	LDFLAGS=$BDB_SAVE_LDFLAGS
   1.145 +@@ -12005,20 +12098,20 @@
   1.146 +      fi
   1.147 + 
   1.148 +      LIB_SQLITE_DIR=$LIB_SQLITE
   1.149 +-     LIB_SQLITE="$LIB_SQLITE -lsqlite"
   1.150 ++     LIB_SQLITE="$LIB_SQLITE -lsqlite3"
   1.151 + 
   1.152 +      if test -d ${with_sqlite}/include; then
   1.153 +          CPPFLAGS="${CPPFLAGS} -I${with_sqlite}/include"
   1.154 +      else
   1.155 +          CPPFLAGS="${CPPFLAGS} -I${with_sqlite}"
   1.156 +      fi
   1.157 +-       echo "$as_me:$LINENO: checking for sqlite_open in -lsqlite" >&5
   1.158 +-echo $ECHO_N "checking for sqlite_open in -lsqlite... $ECHO_C" >&6
   1.159 ++       echo "$as_me:$LINENO: checking for sqlite3_open in -lsqlite3" >&5
   1.160 ++echo $ECHO_N "checking for sqlite3_open in -lsqlite3... $ECHO_C" >&6
   1.161 + if test "${ac_cv_lib_sqlite_sqlite_open+set}" = set; then
   1.162 +   echo $ECHO_N "(cached) $ECHO_C" >&6
   1.163 + else
   1.164 +   ac_check_lib_save_LIBS=$LIBS
   1.165 +-LIBS="-lsqlite $LIB_SQLITE_DIR $LIBS"
   1.166 ++LIBS="-lsqlite3 $LIB_SQLITE_DIR $LIBS"
   1.167 + cat >conftest.$ac_ext <<_ACEOF
   1.168 + #line $LINENO "configure"
   1.169 + /* confdefs.h.  */
   1.170 +@@ -12033,11 +12126,11 @@
   1.171 + #endif
   1.172 + /* We use char because int might match the return type of a gcc2
   1.173 +    builtin and then its argument prototype would still apply.  */
   1.174 +-char sqlite_open ();
   1.175 ++char sqlite3_open ();
   1.176 + int
   1.177 + main ()
   1.178 + {
   1.179 +-sqlite_open ();
   1.180 ++sqlite3_open ();
   1.181 +   ;
   1.182 +   return 0;
   1.183 + }
   1.184 +Index: lib/saslint.h
   1.185 +--- lib/saslint.h.orig	2006-04-18 22:25:45 +0200
   1.186 ++++ lib/saslint.h	2008-12-25 18:48:51 +0100
   1.187 +@@ -109,8 +109,6 @@
   1.188 +   const char *appname;
   1.189 + } sasl_global_callbacks_t;
   1.190 + 
   1.191 +-extern sasl_global_callbacks_t global_callbacks;
   1.192 +-
   1.193 + typedef struct _sasl_external_properties 
   1.194 + {
   1.195 +     sasl_ssf_t ssf;
   1.196 +Index: lib/server.c
   1.197 +--- lib/server.c.orig	2006-05-17 18:46:13 +0200
   1.198 ++++ lib/server.c	2008-12-25 18:48:51 +0100
   1.199 +@@ -95,7 +95,7 @@
   1.200 + 
   1.201 + static mech_list_t *mechlist = NULL; /* global var which holds the list */
   1.202 + 
   1.203 +-sasl_global_callbacks_t global_callbacks;
   1.204 ++static sasl_global_callbacks_t global_callbacks;
   1.205 + 
   1.206 + /* set the password for a user
   1.207 +  *  conn        -- SASL connection
   1.208 +@@ -477,16 +477,8 @@
   1.209 +         return SASL_CONTINUE;
   1.210 +     }
   1.211 + 
   1.212 +-    /* get the path to the config file */
   1.213 +-    getconfpath_cb = _sasl_find_getconfpath_callback( global_callbacks.callbacks );
   1.214 +-    if (getconfpath_cb == NULL) return SASL_BADPARAM;
   1.215 +-
   1.216 +-    /* getconfpath_cb->proc MUST be a sasl_getconfpath_t; if only C had a type
   1.217 +-       system */
   1.218 +-    result = ((sasl_getconfpath_t *)(getconfpath_cb->proc))(getconfpath_cb->context,
   1.219 +-						    &path_to_config);
   1.220 +-    if (result != SASL_OK) goto done;
   1.221 +-    if (path_to_config == NULL) path_to_config = "";
   1.222 ++    result = SASL_OK;
   1.223 ++    path_to_config = "@l_sysconfdir@";
   1.224 + 
   1.225 +     next = path_to_config;
   1.226 + 
   1.227 +Index: plugins/sql.c
   1.228 +--- plugins/sql.c.orig	2006-04-07 15:42:16 +0200
   1.229 ++++ plugins/sql.c	2008-12-25 21:57:47 +0100
   1.230 +@@ -150,9 +150,15 @@
   1.231 + 	return -1;
   1.232 +     }
   1.233 +     if (value) {
   1.234 +-	strncpy(value, row[0], size-2);
   1.235 +-	value[size-1] = '\0';
   1.236 +-	if (value_len) *value_len = strlen(value);
   1.237 ++        unsigned long *col_lens;
   1.238 ++        size_t col_len;
   1.239 ++        col_lens = mysql_fetch_lengths(result);
   1.240 ++        col_len = (size_t)col_lens[0];
   1.241 ++        if (col_len > size - 1);
   1.242 ++            col_len = size - 1;
   1.243 ++	memcpy(value, row[0], col_len);
   1.244 ++	value[col_len] = '\0';
   1.245 ++	if (value_len) *value_len = col_len;
   1.246 +     }
   1.247 +     
   1.248 +     /* free result */
   1.249 +@@ -277,7 +283,7 @@
   1.250 +     ExecStatusType status;
   1.251 +     
   1.252 +     /* run the query */
   1.253 +-    result = PQexec(conn, cmd);
   1.254 ++    result = PQexecParams(conn, cmd, 0, NULL, NULL, NULL, NULL, 1);
   1.255 +     
   1.256 +     /* check the status */
   1.257 +     status = PQresultStatus(result);
   1.258 +@@ -298,6 +304,7 @@
   1.259 +     row_count = PQntuples(result);
   1.260 +     if (!row_count) {
   1.261 + 	/* umm nothing found */
   1.262 ++	utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: no result found for query %s", cmd);
   1.263 + 	utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found");
   1.264 + 	PQclear(result);
   1.265 + 	return -1;
   1.266 +@@ -310,9 +317,26 @@
   1.267 +     /* now get the result set value and value_len */
   1.268 +     /* we only fetch one because we don't care about the rest */
   1.269 +     if (value) {
   1.270 +-	strncpy(value, PQgetvalue(result,0,0), size-2);
   1.271 +-	value[size-1] = '\0';
   1.272 +-	if (value_len) *value_len = strlen(value);
   1.273 ++        if (PQgetisnull(result, 0, 0)) {
   1.274 ++            size_t col_len;
   1.275 ++            col_len = strlen(SQL_NULL_VALUE);
   1.276 ++            if (col_len > size - 1)
   1.277 ++                col_len = size - 1;
   1.278 ++            memcpy(value, SQL_NULL_VALUE, col_len);
   1.279 ++            value[col_len] = '\0';
   1.280 ++            if (value_len)
   1.281 ++                *value_len = col_len;
   1.282 ++        }
   1.283 ++        else {
   1.284 ++            size_t col_len;
   1.285 ++            col_len = (size_t)PQgetlength(result, 0, 0);
   1.286 ++            if (col_len > size - 1);
   1.287 ++                col_len = size - 1;
   1.288 ++            memcpy(value, PQgetvalue(result, 0, 0), col_len);
   1.289 ++            value[col_len] = '\0';
   1.290 ++            if (value_len)
   1.291 ++                *value_len = col_len;
   1.292 ++        }
   1.293 +     }
   1.294 +     
   1.295 +     /* free result */
   1.296 +@@ -342,7 +366,7 @@
   1.297 + #endif /* HAVE_PGSQL */
   1.298 + 
   1.299 + #ifdef HAVE_SQLITE
   1.300 +-#include <sqlite.h>
   1.301 ++#include <sqlite3.h>
   1.302 + 
   1.303 + static void *_sqlite_open(char *host __attribute__((unused)),
   1.304 + 			  char *port __attribute__((unused)),
   1.305 +@@ -352,21 +376,23 @@
   1.306 + 			  const char *database, const sasl_utils_t *utils)
   1.307 + {
   1.308 +     int rc;
   1.309 +-    sqlite *db;
   1.310 ++    sqlite3 *db;
   1.311 +     char *zErrMsg = NULL;
   1.312 + 
   1.313 +-    db = sqlite_open(database, 0, &zErrMsg);
   1.314 +-    if (db == NULL) {
   1.315 ++    rc = sqlite3_open(database, &db);
   1.316 ++    if (rc != SQLITE_OK) {
   1.317 ++	zErrMsg = (char *)sqlite3_errmsg(db);
   1.318 + 	utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", zErrMsg);
   1.319 +-	sqlite_freemem (zErrMsg);
   1.320 ++	sqlite3_free (zErrMsg);
   1.321 ++	sqlite3_close (db);
   1.322 + 	return NULL;
   1.323 +     }
   1.324 + 
   1.325 +-    rc = sqlite_exec(db, "PRAGMA empty_result_callbacks = ON", NULL, NULL, &zErrMsg);
   1.326 ++    rc = sqlite3_exec(db, "PRAGMA empty_result_callbacks = ON", NULL, NULL, &zErrMsg);
   1.327 +     if (rc != SQLITE_OK) {
   1.328 + 	utils->log(NULL, SASL_LOG_ERR, "sql plugin: %s", zErrMsg);
   1.329 +-	sqlite_freemem (zErrMsg);
   1.330 +-	sqlite_close(db);
   1.331 ++	sqlite3_free (zErrMsg);
   1.332 ++	sqlite3_close(db);
   1.333 + 	return NULL;
   1.334 +     }
   1.335 + 
   1.336 +@@ -388,62 +414,67 @@
   1.337 +     return 0;
   1.338 + }
   1.339 + 
   1.340 +-static int sqlite_my_callback(void *pArg, int argc __attribute__((unused)),
   1.341 +-			      char **argv,
   1.342 +-			      char **columnNames __attribute__((unused)))
   1.343 +-{
   1.344 +-    char **result = (char**)pArg;
   1.345 +-
   1.346 +-    if (argv == NULL) {
   1.347 +-	*result = NULL;				/* no record */
   1.348 +-    } else if (argv[0] == NULL) {
   1.349 +-	*result = strdup(SQL_NULL_VALUE);	/* NULL IS SQL_NULL_VALUE */
   1.350 +-    } else {
   1.351 +-	*result = strdup(argv[0]);
   1.352 +-    }
   1.353 +-
   1.354 +-    return /*ABORT*/1;
   1.355 +-}
   1.356 +-
   1.357 + static int _sqlite_exec(void *db, const char *cmd, char *value, size_t size,
   1.358 + 		        size_t *value_len, const sasl_utils_t *utils)
   1.359 + {
   1.360 +     int rc;
   1.361 +-    char *result = NULL;
   1.362 +-    char *zErrMsg = NULL;
   1.363 ++    sqlite3_stmt *stmt;
   1.364 ++    const char *todo;
   1.365 ++    size_t len;
   1.366 + 
   1.367 +-    rc = sqlite_exec((sqlite*)db, cmd, sqlite_my_callback, (void*)&result, &zErrMsg);
   1.368 +-    if (rc != SQLITE_OK && rc != SQLITE_ABORT) {
   1.369 +-	utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: %s ", zErrMsg);
   1.370 +-	sqlite_freemem (zErrMsg);
   1.371 ++    rc = sqlite3_prepare((sqlite3*)db, cmd, (int)strlen(cmd), &stmt, &todo);
   1.372 ++    if (rc != SQLITE_OK) {
   1.373 ++	utils->log(NULL, SASL_LOG_DEBUG, "sql plugin error: %s", sqlite3_errmsg((sqlite3*)db));
   1.374 + 	return -1;
   1.375 +     }
   1.376 +-
   1.377 +-    if (rc == SQLITE_OK) {
   1.378 ++    rc = sqlite3_step(stmt);
   1.379 ++    if (rc != SQLITE_ROW && rc != SQLITE_DONE) {
   1.380 ++	utils->log(NULL, SASL_LOG_DEBUG, "sql plugin error: %s", sqlite3_errmsg((sqlite3*)db));
   1.381 ++	sqlite3_finalize(stmt);
   1.382 ++	return -1;
   1.383 ++    }
   1.384 ++    if (sqlite3_column_count(stmt) == 0) {
   1.385 + 	/* no results (BEGIN, COMMIT, DELETE, INSERT, UPDATE) */
   1.386 ++	sqlite3_finalize(stmt);
   1.387 + 	return 0;
   1.388 +     }
   1.389 +-
   1.390 +-    if (result == NULL) {
   1.391 ++    if (rc == SQLITE_DONE) {
   1.392 + 	/* umm nothing found */
   1.393 ++	utils->log(NULL, SASL_LOG_DEBUG, "sql plugin: no result found for query %s", cmd);
   1.394 + 	utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found");
   1.395 ++	sqlite3_finalize(stmt);
   1.396 + 	return -1;
   1.397 +     }
   1.398 +-
   1.399 +-    /* XXX: Duplication cannot be found by this method. */
   1.400 +-
   1.401 +-    /* now get the result set value and value_len */
   1.402 +-    /* we only fetch one because we don't care about the rest */
   1.403 +-    if (value) {
   1.404 +-	strncpy(value, result, size - 2);
   1.405 +-	value[size - 1] = '\0';
   1.406 +-	if (value_len) {
   1.407 +-	    *value_len = strlen(value);
   1.408 +-	}
   1.409 ++    rc = sqlite3_column_type(stmt, 0);
   1.410 ++    switch (rc) {
   1.411 ++        case SQLITE_NULL: {
   1.412 ++            len = strlen(SQL_NULL_VALUE);
   1.413 ++            if (len > size - 1)
   1.414 ++                len = size - 1;
   1.415 ++	    memcpy(value, SQL_NULL_VALUE, len);
   1.416 ++            value[len] = '\0';
   1.417 ++	    if (value_len)
   1.418 ++	        *value_len = len;
   1.419 ++            break;
   1.420 ++        }
   1.421 ++        default: {
   1.422 ++            const void *blob = sqlite3_column_blob(stmt, 0);
   1.423 ++            len = (size_t)sqlite3_column_bytes(stmt, 0);
   1.424 ++            if (len > size - 1)
   1.425 ++                len = size - 1;
   1.426 ++	    memcpy(value, blob, len);
   1.427 ++            value[len] = '\0';
   1.428 ++	    if (value_len)
   1.429 ++	        *value_len = len;
   1.430 ++            break;
   1.431 ++        }
   1.432 +     }
   1.433 +-
   1.434 +-    /* free result */
   1.435 +-    free(result);
   1.436 ++    rc = sqlite3_step(stmt);
   1.437 ++    if (rc != SQLITE_DONE) {
   1.438 ++	utils->log(NULL, SASL_LOG_WARN,
   1.439 ++		   "sql plugin: found duplicate row for query %s", cmd);
   1.440 ++    }
   1.441 ++    sqlite3_finalize(stmt);
   1.442 +     return 0;
   1.443 + }
   1.444 + 
   1.445 +@@ -464,7 +495,7 @@
   1.446 + 
   1.447 + static void _sqlite_close(void *db)
   1.448 + {
   1.449 +-    sqlite_close((sqlite*)db);
   1.450 ++    sqlite3_close((sqlite3 *)db);
   1.451 + }
   1.452 + #endif /* HAVE_SQLITE */
   1.453 + 
   1.454 +@@ -771,7 +802,7 @@
   1.455 +     settings = (sql_settings_t *) glob_context;
   1.456 +     
   1.457 +     sparams->utils->log(NULL, SASL_LOG_DEBUG,
   1.458 +-			"sql plugin Parse the username %s\n", user);
   1.459 ++			"sql plugin parse the username %s\n", user);
   1.460 +     
   1.461 +     user_buf = sparams->utils->malloc(ulen + 1);
   1.462 +     if (!user_buf) goto done;
   1.463 +@@ -849,7 +880,7 @@
   1.464 + 	}
   1.465 +     
   1.466 + 	sparams->utils->log(NULL, SASL_LOG_DEBUG,
   1.467 +-			    "sql plugin create statement from %s %s %s\n",
   1.468 ++			    "sql plugin create statement from name=%s user=%s realm=%s\n",
   1.469 + 			    realname, escap_userid, escap_realm);
   1.470 + 	
   1.471 + 	/* create a statement that we will use */
   1.472 +@@ -864,9 +895,15 @@
   1.473 + 	/* run the query */
   1.474 + 	if (!settings->sql_engine->sql_exec(conn, query, value, sizeof(value),
   1.475 + 					    &value_len, sparams->utils)) {
   1.476 ++            sparams->utils->log(NULL, SASL_LOG_DEBUG,
   1.477 ++                                "sql plugin query successful\n");
   1.478 + 	    sparams->utils->prop_set(sparams->propctx, cur->name,
   1.479 + 				     value, value_len);
   1.480 + 	}
   1.481 ++        else {
   1.482 ++            sparams->utils->log(NULL, SASL_LOG_DEBUG,
   1.483 ++                                "sql plugin query failed\n");
   1.484 ++        }
   1.485 + 	
   1.486 + 	sparams->utils->free(query);
   1.487 +     }
   1.488 +Index: sample/client.c
   1.489 +--- sample/client.c.orig	2004-03-09 18:35:32 +0100
   1.490 ++++ sample/client.c	2008-12-25 18:48:51 +0100
   1.491 +@@ -133,13 +133,11 @@
   1.492 +     return SASL_OK;
   1.493 + }
   1.494 + 
   1.495 +-#ifndef HAVE_GETPASSPHRASE
   1.496 + static char *
   1.497 +-getpassphrase(const char *prompt)
   1.498 ++my_getpassphrase(const char *prompt)
   1.499 + {
   1.500 +   return getpass(prompt);
   1.501 + }
   1.502 +-#endif /* ! HAVE_GETPASSPHRASE */
   1.503 + 
   1.504 + static int
   1.505 + getsecret(sasl_conn_t *conn,
   1.506 +@@ -155,7 +153,7 @@
   1.507 +     if (! conn || ! psecret || id != SASL_CB_PASS)
   1.508 + 	return SASL_BADPARAM;
   1.509 + 
   1.510 +-    password = getpassphrase("Password: ");
   1.511 ++    password = my_getpassphrase("Password: ");
   1.512 +     if (! password)
   1.513 + 	return SASL_FAIL;
   1.514 + 
   1.515 +Index: sample/sample-client.c
   1.516 +--- sample/sample-client.c.orig	2004-10-26 13:14:33 +0200
   1.517 ++++ sample/sample-client.c	2008-12-25 18:48:51 +0100
   1.518 +@@ -244,13 +244,11 @@
   1.519 +   return SASL_OK;
   1.520 + }
   1.521 + 
   1.522 +-#ifndef HAVE_GETPASSPHRASE
   1.523 + static char *
   1.524 +-getpassphrase(const char *prompt)
   1.525 ++my_getpassphrase(const char *prompt)
   1.526 + {
   1.527 +   return getpass(prompt);
   1.528 + }
   1.529 +-#endif /* ! HAVE_GETPASSPHRASE */
   1.530 + 
   1.531 + static int
   1.532 + getsecret(sasl_conn_t *conn,
   1.533 +@@ -264,7 +262,7 @@
   1.534 +   if (! conn || ! psecret || id != SASL_CB_PASS)
   1.535 +     return SASL_BADPARAM;
   1.536 + 
   1.537 +-  password = getpassphrase("Password: ");
   1.538 ++  password = my_getpassphrase("Password: ");
   1.539 +   if (! password)
   1.540 +     return SASL_FAIL;
   1.541 + 
   1.542 +@@ -307,7 +305,7 @@
   1.543 +   fflush(stdout);
   1.544 +   
   1.545 +   if (id == SASL_CB_ECHOPROMPT) {
   1.546 +-    char *original = getpassphrase("");
   1.547 ++    char *original = my_getpassphrase("");
   1.548 +     if (! original)
   1.549 +       return SASL_FAIL;
   1.550 +     if (*original)
   1.551 +Index: saslauthd/Makefile.am
   1.552 +--- saslauthd/Makefile.am.orig	2006-05-17 18:46:17 +0200
   1.553 ++++ saslauthd/Makefile.am	2008-12-25 18:48:51 +0100
   1.554 +@@ -36,4 +36,4 @@
   1.555 + 
   1.556 + install-data-local: saslauthd.8
   1.557 + 	$(mkinstalldirs) $(DESTDIR)$(mandir)/man8
   1.558 +-	$(INSTALL_DATA) $(srcdir)/saslauthd.8 $(DESTDIR)$(mandir)/man8/saslauthd.8
   1.559 ++	$(INSTALL_DATA) $(srcdir)/saslauthd.mdoc $(DESTDIR)$(mandir)/man8/saslauthd.8
   1.560 +Index: saslauthd/Makefile.in
   1.561 +--- saslauthd/Makefile.in.orig	2008-12-25 18:48:51 +0100
   1.562 ++++ saslauthd/Makefile.in	2008-12-25 18:48:51 +0100
   1.563 +@@ -621,7 +621,7 @@
   1.564 + 
   1.565 + install-data-local: saslauthd.8
   1.566 + 	$(mkinstalldirs) $(DESTDIR)$(mandir)/man8
   1.567 +-	$(INSTALL_DATA) $(srcdir)/saslauthd.8 $(DESTDIR)$(mandir)/man8/saslauthd.8
   1.568 ++	$(INSTALL_DATA) $(srcdir)/saslauthd.mdoc $(DESTDIR)$(mandir)/man8/saslauthd.8
   1.569 + # Tell versions [3.59,3.63) of GNU make to not export all variables.
   1.570 + # Otherwise a system limit (for SysV at least) may be exceeded.
   1.571 + .NOEXPORT:
   1.572 +Index: saslauthd/lak.c
   1.573 +--- saslauthd/lak.c.orig	2005-05-15 07:49:51 +0200
   1.574 ++++ saslauthd/lak.c	2008-12-25 18:48:51 +0100
   1.575 +@@ -47,6 +47,7 @@
   1.576 + #include <crypt.h>
   1.577 + #endif
   1.578 + 
   1.579 ++#include "saslauthd.h" /* get strlcpy macro for non-BSD; get HAVE_OPENSSL from config.h */
   1.580 + #ifdef HAVE_OPENSSL
   1.581 + #ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
   1.582 + #define OPENSSL_DISABLE_OLD_DES_SUPPORT
   1.583 +@@ -57,7 +58,7 @@
   1.584 + 
   1.585 + #include <ldap.h>
   1.586 + #include <lber.h>
   1.587 +-#include <sasl.h>
   1.588 ++#include "sasl.h"
   1.589 + #include "lak.h"
   1.590 + 
   1.591 + typedef struct lak_auth_method {
   1.592 +Index: utils/pluginviewer.c
   1.593 +--- utils/pluginviewer.c.orig	2006-05-17 18:46:17 +0200
   1.594 ++++ utils/pluginviewer.c	2008-12-25 18:48:51 +0100
   1.595 +@@ -536,7 +536,7 @@
   1.596 +         fprintf(stderr, "%s: Usage: %s [-a] [-s] [-c] [-b min=N,max=N] [-e ssf=N,id=ID] [-m MECHS] [-x AUXPROP_MECH] [-f FLAGS] [-i local=IP,remote=IP] [-p PATH]\n"
   1.597 + 	        "\t-a\tlist auxprop plugins\n"
   1.598 +                 "\t-s\tlist server authentication (SASL) plugins\n"
   1.599 +-                "\t-s\tlist client authentication (SASL) plugins\n"
   1.600 ++                "\t-c\tlist client authentication (SASL) plugins\n"
   1.601 + 	        "\t-b ...\t#bits to use for encryption\n"
   1.602 + 	        "\t\tmin=N\tminumum #bits to use (1 => integrity)\n"
   1.603 + 	        "\t\tmax=N\tmaximum #bits to use\n"

mercurial