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"