Codebase list cyrus-sasl2 / f1cc7ac
New upstream version 2.1.27~rc8 Ondřej Surý 5 years ago
205 changed file(s) with 630 addition(s) and 501 deletion(s). Raw diff Collapse all Expand all
6565 endif
6666 if MACOSX
6767 INSTALLOSX = install-exec-local-osx
68 else
69 INSTALLOSX =
68 else
69 INSTALLOSX =
7070 endif
7171
7272 SUBDIRS=include sasldb common lib plugins utils $(PWC) $(SAM) $(JAV) $(SAD)
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # generated automatically by aclocal 1.15 -*- Autoconf -*-
1
2 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
0 # generated automatically by aclocal 1.15.1 -*- Autoconf -*-
1
2 # Copyright (C) 1996-2017 Free Software Foundation, Inc.
33
44 # This file is free software; the Free Software Foundation
55 # gives unlimited permission to copy and/or distribute it,
1919 If you have problems, you may need to regenerate the build system entirely.
2020 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
2121
22 # Copyright (C) 2002-2014 Free Software Foundation, Inc.
22 # Copyright (C) 2002-2017 Free Software Foundation, Inc.
2323 #
2424 # This file is free software; the Free Software Foundation
2525 # gives unlimited permission to copy and/or distribute it,
3434 [am__api_version='1.15'
3535 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
3636 dnl require some minimum version. Point them to the right macro.
37 m4_if([$1], [1.15], [],
37 m4_if([$1], [1.15.1], [],
3838 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
3939 ])
4040
5050 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
5151 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
5252 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
53 [AM_AUTOMAKE_VERSION([1.15])dnl
53 [AM_AUTOMAKE_VERSION([1.15.1])dnl
5454 m4_ifndef([AC_AUTOCONF_VERSION],
5555 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
5656 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
5757
5858 # AM_AUX_DIR_EXPAND -*- Autoconf -*-
5959
60 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
60 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
6161 #
6262 # This file is free software; the Free Software Foundation
6363 # gives unlimited permission to copy and/or distribute it,
109109
110110 # AM_CONDITIONAL -*- Autoconf -*-
111111
112 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
112 # Copyright (C) 1997-2017 Free Software Foundation, Inc.
113113 #
114114 # This file is free software; the Free Software Foundation
115115 # gives unlimited permission to copy and/or distribute it,
140140 Usually this means the macro was only invoked conditionally.]])
141141 fi])])
142142
143 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
143 # Copyright (C) 1999-2017 Free Software Foundation, Inc.
144144 #
145145 # This file is free software; the Free Software Foundation
146146 # gives unlimited permission to copy and/or distribute it,
331331
332332 # Generate code to set up dependency tracking. -*- Autoconf -*-
333333
334 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
334 # Copyright (C) 1999-2017 Free Software Foundation, Inc.
335335 #
336336 # This file is free software; the Free Software Foundation
337337 # gives unlimited permission to copy and/or distribute it,
407407
408408 # Do all the work for Automake. -*- Autoconf -*-
409409
410 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
410 # Copyright (C) 1996-2017 Free Software Foundation, Inc.
411411 #
412412 # This file is free software; the Free Software Foundation
413413 # gives unlimited permission to copy and/or distribute it,
604604 done
605605 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
606606
607 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
607 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
608608 #
609609 # This file is free software; the Free Software Foundation
610610 # gives unlimited permission to copy and/or distribute it,
625625 fi
626626 AC_SUBST([install_sh])])
627627
628 # Copyright (C) 2003-2014 Free Software Foundation, Inc.
628 # Copyright (C) 2003-2017 Free Software Foundation, Inc.
629629 #
630630 # This file is free software; the Free Software Foundation
631631 # gives unlimited permission to copy and/or distribute it,
646646
647647 # Check to see how 'make' treats includes. -*- Autoconf -*-
648648
649 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
649 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
650650 #
651651 # This file is free software; the Free Software Foundation
652652 # gives unlimited permission to copy and/or distribute it,
696696
697697 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
698698
699 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
699 # Copyright (C) 1997-2017 Free Software Foundation, Inc.
700700 #
701701 # This file is free software; the Free Software Foundation
702702 # gives unlimited permission to copy and/or distribute it,
735735
736736 # Helper functions for option handling. -*- Autoconf -*-
737737
738 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
738 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
739739 #
740740 # This file is free software; the Free Software Foundation
741741 # gives unlimited permission to copy and/or distribute it,
764764 AC_DEFUN([_AM_IF_OPTION],
765765 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
766766
767 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
767 # Copyright (C) 1999-2017 Free Software Foundation, Inc.
768768 #
769769 # This file is free software; the Free Software Foundation
770770 # gives unlimited permission to copy and/or distribute it,
811811 # For backward compatibility.
812812 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
813813
814 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
814 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
815815 #
816816 # This file is free software; the Free Software Foundation
817817 # gives unlimited permission to copy and/or distribute it,
830830
831831 # Check to make sure that the build environment is sane. -*- Autoconf -*-
832832
833 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
833 # Copyright (C) 1996-2017 Free Software Foundation, Inc.
834834 #
835835 # This file is free software; the Free Software Foundation
836836 # gives unlimited permission to copy and/or distribute it,
911911 rm -f conftest.file
912912 ])
913913
914 # Copyright (C) 2009-2014 Free Software Foundation, Inc.
914 # Copyright (C) 2009-2017 Free Software Foundation, Inc.
915915 #
916916 # This file is free software; the Free Software Foundation
917917 # gives unlimited permission to copy and/or distribute it,
971971 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
972972 ])
973973
974 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
974 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
975975 #
976976 # This file is free software; the Free Software Foundation
977977 # gives unlimited permission to copy and/or distribute it,
999999 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
10001000 AC_SUBST([INSTALL_STRIP_PROGRAM])])
10011001
1002 # Copyright (C) 2006-2014 Free Software Foundation, Inc.
1002 # Copyright (C) 2006-2017 Free Software Foundation, Inc.
10031003 #
10041004 # This file is free software; the Free Software Foundation
10051005 # gives unlimited permission to copy and/or distribute it,
10181018
10191019 # Check how to create a tarball. -*- Autoconf -*-
10201020
1021 # Copyright (C) 2004-2014 Free Software Foundation, Inc.
1021 # Copyright (C) 2004-2017 Free Software Foundation, Inc.
10221022 #
10231023 # This file is free software; the Free Software Foundation
10241024 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
638638 SPHINX_BUILD
639639 DIRS
640640 LTLIBOBJS
641 BUILD_LIBOBJ_FALSE
642 BUILD_LIBOBJ_TRUE
641643 LTGETNAMEINFOOBJS
642644 GETNAMEINFOOBJS
643645 LTGETADDRINFOOBJS
672674 NTLM_LIBS
673675 PLAIN_LIBS
674676 LIB_PAM
677 AUTH_SASLDB_FALSE
678 AUTH_SASLDB_TRUE
675679 LIB_SIA
676680 GSSAPIBASE_LIBS
677681 LIB_CRYPT
878882 enable_digest
879883 enable_scram
880884 enable_otp
881 with_with_opie
885 with_opie
882886 enable_srp
883887 enable_srp_setpass
884888 enable_krb4
16131617 --with-lib-subdir=DIR Find libraries in DIR instead of lib
16141618 --with-openssl=DIR use OpenSSL from DIR
16151619 --with-des=DIR with DES (look in DIR) yes
1616 --with-opie=PATH use OPIE (One Time Passwords in Everything) from PATH
1620 --with-opie=PATH use OPIE (One Time Passwords in Everything) from
1621 PATH
16171622 --with-gss_impl={heimdal|mit|cybersafe|seam|auto}
16181623 choose specific GSSAPI implementation [[auto]]
16191624 --with-pam=DIR use PAM (rooted in DIR) yes
1418314188 done
1418414189 fi
1418514190
14186 sasl_cv_java_includes="${sasl_cv_java_includes} -I$java_base/include"
14191 sasl_cv_java_includes="${sasl_cv_java_includes} -I$javapath/include"
1418714192 fi
1418814193
1418914194
1531215317 $as_echo_n "(cached) " >&6
1531315318 else
1531415319
15315 echo "void main(){int i=1;}
15320 echo "int main(){int i=1; return 0;}
1531615321 void foo(){int i=6;}" > conftest.c
1531715322 ${CC} -o a.out conftest.c > /dev/null
1531815323 if (${NM} a.out | grep _foo) > /dev/null; then
1534515350 #include <dlfcn.h>
1534615351 #include <stdio.h>
1534715352 void foo() { int i=0;}
15348 void main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
15353 int main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
1534915354 if(self) { ptr1=dlsym(self,"foo"); ptr2=dlsym(self,"_foo");
1535015355 if(ptr1 && !ptr2) exit(0); } exit(1); }
1535115356
1573215737 no)
1573315738 with_openssl="no";;
1573415739 *)
15740 with_openssl="yes"
1573515741 LIB_RSAREF=""
1573615742 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSAPublicEncrypt in -lrsaref" >&5
1573715743 $as_echo_n "checking for RSAPublicEncrypt in -lrsaref... " >&6; }
1585815864 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_DigestInit" >&5
1585915865 $as_echo "$ac_cv_lib_crypto_EVP_DigestInit" >&6; }
1586015866 if test "x$ac_cv_lib_crypto_EVP_DigestInit" = xyes; then :
15861 with_openssl="yes",
15862 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHA256 in -lcrypto" >&5
15867 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHA256 in -lcrypto" >&5
1586315868 $as_echo_n "checking for SHA256 in -lcrypto... " >&6; }
1586415869 if ${ac_cv_lib_crypto_SHA256+:} false; then :
1586515870 $as_echo_n "(cached) " >&6
1590615911 fi
1590715912
1590815913 else
15909 with_openssl=no
15914 with_openssl="no"
1591015915 fi
1591115916
1591215917
1605616061 fi
1605716062
1605816063 fi
16064 else
16065 with_des=no
1605916066 fi
1606016067
1606116068 if test "$with_des" = no; then
1641516422 fi
1641616423
1641716424
16418 # Check whether --with-with-opie was given.
16419 if test "${with_with_opie+set}" = set; then :
16420 withval=$with_with_opie; with_opie="${withval}"
16425 # Check whether --with-opie was given.
16426 if test "${with_opie+set}" = set; then :
16427 withval=$with_opie;
1642116428 fi
1642216429
1642316430
1694016947 fi
1694116948
1694216949
16950 gs2="no"
1694316951 if test "$gssapi" != no; then
1694416952 platform=
1694516953 case "${host}" in
1695916967 *-*-aix*)
1696016968 ###_AIX
1696116969 platform=__aix
16970 ;;
16971 *-*-darwin*)
16972 platform=__darwin
1696216973 ;;
1696316974 *)
1696416975 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The system type is not recognized. If you believe that CyberSafe GSSAPI works on this platform, please update the configure script" >&5
1759617607 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gssapi.o"
1759717608 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gssapi.c"
1759817609 if test "$rfc5587" = "yes" -a "$rfc5801" = "yes"; then
17610 gs2="yes"
1759917611 SASL_MECHS="$SASL_MECHS libgs2.la"
1760017612 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gs2.o"
1760117613 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gs2.c"
1863118643
1863218644
1863318645 fi
18646 if test "$authsasldb" != no; then
18647 AUTH_SASLDB_TRUE=
18648 AUTH_SASLDB_FALSE='#'
18649 else
18650 AUTH_SASLDB_TRUE='#'
18651 AUTH_SASLDB_FALSE=
18652 fi
18653
1863418654
1863518655 # Check whether --enable-httpform was given.
1863618656 if test "${enable_httpform+set}" = set; then :
1941219432 $as_echo "$as_me: WARNING: SQLite Library not found" >&2;}; true;;
1941319433 *)
1941419434 if test -d ${with_sqlite}/lib; then
19415 LIB_SQLITE="-L${with_sqlite}/lib -R${with_sqlite}/lib"
19435
19436 # this is CMU ADD LIBPATH TO
19437 if test "$andrew_cv_runpath_switch" = "none" ; then
19438 LIB_SQLITE="-L${with_sqlite}/lib ${LIB_SQLITE}"
19439 else
19440 LIB_SQLITE="-L${with_sqlite}/lib ${LIB_SQLITE} $andrew_cv_runpath_switch${with_sqlite}/lib"
19441 fi
19442
1941619443 else
19417 LIB_SQLITE="-L${with_sqlite} -R${with_sqlite}"
19444
19445 # this is CMU ADD LIBPATH TO
19446 if test "$andrew_cv_runpath_switch" = "none" ; then
19447 LIB_SQLITE="-L${with_sqlite} ${LIB_SQLITE}"
19448 else
19449 LIB_SQLITE="-L${with_sqlite} ${LIB_SQLITE} $andrew_cv_runpath_switch${with_sqlite}"
19450 fi
19451
1941819452 fi
1941919453
1942019454 LIB_SQLITE_DIR=$LIB_SQLITE
1951119545 $as_echo "$as_me: WARNING: SQLite3 Library not found" >&2;}; true;;
1951219546 *)
1951319547 if test -d ${with_sqlite3}/lib; then
19514 LIB_SQLITE3="-L${with_sqlite3}/lib -R${with_sqlite3}/lib"
19548
19549 # this is CMU ADD LIBPATH TO
19550 if test "$andrew_cv_runpath_switch" = "none" ; then
19551 LIB_SQLITE3="-L${with_sqlite3}/lib ${LIB_SQLITE3}"
19552 else
19553 LIB_SQLITE3="-L${with_sqlite3}/lib ${LIB_SQLITE3} $andrew_cv_runpath_switch${with_sqlite3}/lib"
19554 fi
19555
1951519556 else
19516 LIB_SQLITE3="-L${with_sqlite3} -R${with_sqlite3}"
19557
19558 # this is CMU ADD LIBPATH TO
19559 if test "$andrew_cv_runpath_switch" = "none" ; then
19560 LIB_SQLITE3="-L${with_sqlite3} ${LIB_SQLITE3}"
19561 else
19562 LIB_SQLITE3="-L${with_sqlite3} ${LIB_SQLITE3} $andrew_cv_runpath_switch${with_sqlite3}"
19563 fi
19564
1951719565 fi
1951819566
1951919567 LIB_SQLITE3_DIR=$LIB_SQLITE3
1999020038 fi
1999120039
1999220040
19993 sasl_cv_snprintf=yes
20041 sasl_cv_snprintf=no
1999420042 SNPRINTFOBJS=""
20043 LTSNPRINTFOBJS=""
1999520044 ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
1999620045 if test "x$ac_cv_func_snprintf" = xyes; then :
1999720046
2057820627
2057920628
2058020629 LTLIBOBJS=`echo "$LIBOBJS" | sed 's,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,'`
20630 if test "$LTLIBOBJS" != ""; then
20631 BUILD_LIBOBJ_TRUE=
20632 BUILD_LIBOBJ_FALSE='#'
20633 else
20634 BUILD_LIBOBJ_TRUE='#'
20635 BUILD_LIBOBJ_FALSE=
20636 fi
20637
2058120638
2058220639
2058320640 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
2166321720 as_fn_error $? "conditional \"PWCHECK\" was never defined.
2166421721 Usually this means the macro was only invoked conditionally." "$LINENO" 5
2166521722 fi
21723 if test -z "${AUTH_SASLDB_TRUE}" && test -z "${AUTH_SASLDB_FALSE}"; then
21724 as_fn_error $? "conditional \"AUTH_SASLDB\" was never defined.
21725 Usually this means the macro was only invoked conditionally." "$LINENO" 5
21726 fi
2166621727 if test -z "${MACOSX_TRUE}" && test -z "${MACOSX_FALSE}"; then
2166721728 as_fn_error $? "conditional \"MACOSX\" was never defined.
2166821729 Usually this means the macro was only invoked conditionally." "$LINENO" 5
2166921730 fi
2167021731 if test -z "${WINDOWS_TRUE}" && test -z "${WINDOWS_FALSE}"; then
2167121732 as_fn_error $? "conditional \"WINDOWS\" was never defined.
21733 Usually this means the macro was only invoked conditionally." "$LINENO" 5
21734 fi
21735 if test -z "${BUILD_LIBOBJ_TRUE}" && test -z "${BUILD_LIBOBJ_FALSE}"; then
21736 as_fn_error $? "conditional \"BUILD_LIBOBJ\" was never defined.
2167221737 Usually this means the macro was only invoked conditionally." "$LINENO" 5
2167321738 fi
2167421739 if test -z "${HAVE_SPHINX_BUILD_TRUE}" && test -z "${HAVE_SPHINX_BUILD_FALSE}"; then
2384223907 fi
2384323908
2384423909
23845 echo
23846 echo "$PACKAGE - $VERSION"
23847 echo
23848 echo "Prefix....................: $prefix"
23849 echo "Plugins...................: $SASL_MECHS"
23850 echo "saslauthd support.........: $with_saslauthd"
23851 echo "Java Support:.............: $enable_java"
23852 if test "$enable_java" = yes; then
23853 echo "Java Base.................: $JAVA_INCLUDES"
23854 fi
23855 echo "OpenSSL...................: $with_openssl"
23856 echo "CRAM-MD5 Authentication...: $cram"
23857 echo "SCRAM Authentication......: $scram"
23858 echo "OTP Authentication........: $otp"
23859 echo "OPIE......................: $with_opie"
23860 echo "SRP Authentication........: $srp"
23861 echo "GSSAPI....................: $gssapi"
23862 echo "SIA Authentication........: $sia"
23863 echo "HTTP Form Authentication..: $httpform"
23864 echo "PAM.......................: $with_pam"
23865 echo "Anonymous.................: $anon"
23866 echo "LOGIN (Unsupported).......: $login"
23867 echo "NTLM (Unsupported)........: $ntlm"
23868 echo "passdss (Experimental)....: $passdss"
23869 echo "LDAP......................: $with_ldap"
23870 echo "MySQL.....................: $with_mysql"
23871 echo "PgSQL.....................: $with_pgsql"
23872 echo "SQLite....................: $with_sqlite"
23873 echo "SQLite 3..................: $with_sqlite3"
23874 echo
23875 echo "Now type 'make' to build $PACKAGE"
23876 echo
23910 { $as_echo "$as_me:${as_lineno-$LINENO}:
23911
23912 cyrus-sasl - $VERSION
23913
23914 • Prefix: $prefix
23915 • Plugins: $SASL_MECHS
23916
23917 Now type 'make' to build $PACKAGE
23918 " >&5
23919 $as_echo "$as_me:
23920
23921 cyrus-sasl - $VERSION
23922
23923 • Prefix: $prefix
23924 • Plugins: $SASL_MECHS
23925
23926 Now type 'make' to build $PACKAGE
23927 " >&6;}
6666 AC_CANONICAL_HOST
6767 AC_CANONICAL_TARGET
6868
69 AM_INIT_AUTOMAKE([1.11 tar-ustar dist-bzip2 -Wno-portability subdir-objects foreign])
69 AM_INIT_AUTOMAKE([1.11 tar-ustar dist-bzip2 foreign -Wno-portability subdir-objects])
7070
7171 DIRS=""
7272
155155 if test "$enable_java" = yes; then
156156 AC_PATH_PROG(JAVAC, javac, no)
157157 AC_PATH_PROGS(JAVAH, javah kaffeh, no)
158 AC_CHECK_PROGS(JAVADOC, javadoc, :)
158 AC_CHECK_PROGS(JAVADOC, javadoc, :)
159159 if test "$JAVAC" = "no" -o "$JAVAH" = "no"; then
160160 AC_WARN([Disabling Java support])
161161 enable_java=no
178178
179179 AC_ARG_WITH(javabase, [ --with-javabase=PATH set path to find jni.h in [/usr/java/include] ],
180180 java_base=$withval,)
181
181
182182
183183 sasl_cv_java_includes=''
184184 for dir in `find ${java_base}/include -follow -type d -print | grep -v green_threads`; do
186186 done
187187 fi
188188
189 sasl_cv_java_includes="${sasl_cv_java_includes} -I$java_base/include"])
189 sasl_cv_java_includes="${sasl_cv_java_includes} -I$javapath/include"])
190190
191191 JAVA_INCLUDES=$sasl_cv_java_includes
192192 AC_SUBST(JAVA_INCLUDES)
243243
244244 AC_MSG_CHECKING(for underscore before symbols)
245245 AC_CACHE_VAL(sasl_cv_uscore,[
246 echo "void main(){int i=1;}
246 echo "int main(){int i=1; return 0;}
247247 void foo(){int i=6;}" > conftest.c
248248 ${CC} -o a.out conftest.c > /dev/null
249249 if (${NM} a.out | grep _foo) > /dev/null; then
263263 #include <dlfcn.h>
264264 #include <stdio.h>
265265 void foo() { int i=0;}
266 void main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
266 int main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
267267 if(self) { ptr1=dlsym(self,"foo"); ptr2=dlsym(self,"_foo");
268268 if(ptr1 && !ptr2) exit(0); } exit(1); }
269269 ], [sasl_cv_dlsym_adds_uscore=yes], sasl_cv_dlsym_adds_uscore=no
498498 fi
499499
500500 dnl Test for OPIE
501 AC_ARG_WITH(with-opie,[ --with-opie=PATH use OPIE (One Time Passwords in Everything) from PATH],
502 with_opie="${withval}")
501 AC_ARG_WITH(opie, AC_HELP_STRING([--with-opie=PATH], [use OPIE (One Time Passwords in Everything) from PATH]))
503502
504503 case "$with_opie" in
505504 ""|yes)
621620 SASL_DB_PATH_CHECK()
622621 SASL_DB_CHECK()
623622 fi
623 AM_CONDITIONAL(AUTH_SASLDB, test "$authsasldb" != no)
624624
625625 AC_ARG_ENABLE(httpform, [ --enable-httpform enable HTTP form authentication [[no]] ],
626626 httpform=$enableval,
978978 notfound) AC_WARN([SQLite Library not found]); true;;
979979 *)
980980 if test -d ${with_sqlite}/lib; then
981 LIB_SQLITE="-L${with_sqlite}/lib -R${with_sqlite}/lib"
981 CMU_ADD_LIBPATH_TO(${with_sqlite}/lib, LIB_SQLITE)
982982 else
983 LIB_SQLITE="-L${with_sqlite} -R${with_sqlite}"
983 CMU_ADD_LIBPATH_TO(${with_sqlite}, LIB_SQLITE)
984984 fi
985985
986986 LIB_SQLITE_DIR=$LIB_SQLITE
10301030 notfound) AC_WARN([SQLite3 Library not found]); true;;
10311031 *)
10321032 if test -d ${with_sqlite3}/lib; then
1033 LIB_SQLITE3="-L${with_sqlite3}/lib -R${with_sqlite3}/lib"
1033 CMU_ADD_LIBPATH_TO(${with_sqlite3}/lib, LIB_SQLITE3)
10341034 else
1035 LIB_SQLITE3="-L${with_sqlite3} -R${with_sqlite3}"
1035 CMU_ADD_LIBPATH_TO(${with_sqlite3}, LIB_SQLITE3)
10361036 fi
10371037
10381038 LIB_SQLITE3_DIR=$LIB_SQLITE3
12581258 AC_SUBST(GETSUBOPT)
12591259
12601260 dnl Check for snprintf
1261 sasl_cv_snprintf=yes
1261 sasl_cv_snprintf=no
12621262 SNPRINTFOBJS=""
1263 LTSNPRINTFOBJS=""
12631264 AC_CHECK_FUNC(snprintf, [AC_DEFINE(HAVE_SNPRINTF,[],[Does the system have snprintf()?])], [sasl_cv_snprintf=yes])
12641265 AC_CHECK_FUNC(vsnprintf, [AC_DEFINE(HAVE_VSNPRINTF,[],[Does the system have vsnprintf()?])], [sasl_cv_snprintf=yes])
12651266 if test $sasl_cv_snprintf = no; then
13011302 AC_SUBST(LTGETNAMEINFOOBJS)
13021303
13031304 LTLIBOBJS=`echo "$LIB@&t@OBJS" | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`
1305 AM_CONDITIONAL(BUILD_LIBOBJ, test "$LTLIBOBJS" != "")
13041306 AC_SUBST(LTLIBOBJS)
13051307
13061308 AC_C_CONST
16051607 java/javax/security/auth/callback/Makefile
16061608 pwcheck/Makefile)
16071609
1608 echo
1609 echo "$PACKAGE - $VERSION"
1610 echo
1611 echo "Prefix....................: $prefix"
1612 echo "Plugins...................: $SASL_MECHS"
1613 echo "saslauthd support.........: $with_saslauthd"
1614 echo "Java Support:.............: $enable_java"
1615 if test "$enable_java" = yes; then
1616 echo "Java Base.................: $JAVA_INCLUDES"
1617 fi
1618 echo "OpenSSL...................: $with_openssl"
1619 echo "CRAM-MD5 Authentication...: $cram"
1620 echo "SCRAM Authentication......: $scram"
1621 echo "OTP Authentication........: $otp"
1622 echo "OPIE......................: $with_opie"
1623 echo "SRP Authentication........: $srp"
1624 echo "GSSAPI....................: $gssapi"
1625 echo "SIA Authentication........: $sia"
1626 echo "HTTP Form Authentication..: $httpform"
1627 echo "PAM.......................: $with_pam"
1628 echo "Anonymous.................: $anon"
1629 echo "LOGIN (Unsupported).......: $login"
1630 echo "NTLM (Unsupported)........: $ntlm"
1631 echo "passdss (Experimental)....: $passdss"
1632 echo "LDAP......................: $with_ldap"
1633 echo "MySQL.....................: $with_mysql"
1634 echo "PgSQL.....................: $with_pgsql"
1635 echo "SQLite....................: $with_sqlite"
1636 echo "SQLite 3..................: $with_sqlite3"
1637 echo
1638 echo "Now type 'make' to build $PACKAGE"
1639 echo
1610 AC_MSG_NOTICE([
1611
1612 cyrus-sasl - $VERSION
1613
1614 • Prefix: $prefix
1615 • Plugins: $SASL_MECHS
1616
1617 Now type 'make' to build $PACKAGE
1618 ])
1616 int sasl_server_start(sasl_conn_t * conn,
1717 const char * mech,
1818 const char * clientin,
19 unsigned * clientinlen,
19 unsigned clientinlen,
2020 const char ** serverout,
2121 unsigned * serveroutlen);
2222
33 *
44 * Sphinx stylesheet -- basic theme.
55 *
6 * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
6 * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
77 * :license: BSD, see LICENSE for details.
88 *
99 */
444444 margin-left: 30px;
445445 }
446446
447 dt:target, .highlighted {
447 dt:target, span.highlighted {
448448 background-color: #fbe54e;
449 }
450
451 rect.highlighted {
452 fill: #fbe54e;
449453 }
450454
451455 dl.glossary dt {
33 *
44 * Sphinx JavaScript utilities for all documentation.
55 *
6 * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
6 * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
77 * :license: BSD, see LICENSE for details.
88 *
99 */
4444 * it will always return arrays of strings for the value parts.
4545 */
4646 jQuery.getQueryParameters = function(s) {
47 if (typeof s == 'undefined')
47 if (typeof s === 'undefined')
4848 s = document.location.search;
4949 var parts = s.substr(s.indexOf('?') + 1).split('&');
5050 var result = {};
6565 * span elements with the given class name.
6666 */
6767 jQuery.fn.highlightText = function(text, className) {
68 function highlight(node) {
69 if (node.nodeType == 3) {
68 function highlight(node, addItems) {
69 if (node.nodeType === 3) {
7070 var val = node.nodeValue;
7171 var pos = val.toLowerCase().indexOf(text);
7272 if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
73 var span = document.createElement("span");
74 span.className = className;
73 var span;
74 var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
75 if (isInSVG) {
76 span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
77 } else {
78 span = document.createElement("span");
79 span.className = className;
80 }
7581 span.appendChild(document.createTextNode(val.substr(pos, text.length)));
7682 node.parentNode.insertBefore(span, node.parentNode.insertBefore(
7783 document.createTextNode(val.substr(pos + text.length)),
7884 node.nextSibling));
7985 node.nodeValue = val.substr(0, pos);
86 if (isInSVG) {
87 var bbox = span.getBBox();
88 var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
89 rect.x.baseVal.value = bbox.x;
90 rect.y.baseVal.value = bbox.y;
91 rect.width.baseVal.value = bbox.width;
92 rect.height.baseVal.value = bbox.height;
93 rect.setAttribute('class', className);
94 var parentOfText = node.parentNode.parentNode;
95 addItems.push({
96 "parent": node.parentNode,
97 "target": rect});
98 }
8099 }
81100 }
82101 else if (!jQuery(node).is("button, select, textarea")) {
83102 jQuery.each(node.childNodes, function() {
84 highlight(this);
103 highlight(this, addItems);
85104 });
86105 }
87106 }
88 return this.each(function() {
89 highlight(this);
107 var addItems = [];
108 var result = this.each(function() {
109 highlight(this, addItems);
90110 });
111 for (var i = 0; i < addItems.length; ++i) {
112 jQuery(addItems[i].parent).before(addItems[i].target);
113 }
114 return result;
91115 };
92116
93117 /*
130154 * i18n support
131155 */
132156 TRANSLATIONS : {},
133 PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
157 PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
134158 LOCALE : 'unknown',
135159
136160 // gettext and ngettext don't access this so that the functions
137161 // can safely bound to a different name (_ = Documentation.gettext)
138162 gettext : function(string) {
139163 var translated = Documentation.TRANSLATIONS[string];
140 if (typeof translated == 'undefined')
164 if (typeof translated === 'undefined')
141165 return string;
142 return (typeof translated == 'string') ? translated : translated[0];
166 return (typeof translated === 'string') ? translated : translated[0];
143167 },
144168
145169 ngettext : function(singular, plural, n) {
146170 var translated = Documentation.TRANSLATIONS[singular];
147 if (typeof translated == 'undefined')
171 if (typeof translated === 'undefined')
148172 return (n == 1) ? singular : plural;
149173 return translated[Documentation.PLURALEXPR(n)];
150174 },
179203 * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
180204 */
181205 fixFirefoxAnchorBug : function() {
182 if (document.location.hash)
206 if (document.location.hash && $.browser.mozilla)
183207 window.setTimeout(function() {
184208 document.location.href += '';
185209 }, 10);
215239 var src = $(this).attr('src');
216240 var idnum = $(this).attr('id').substr(7);
217241 $('tr.cg-' + idnum).toggle();
218 if (src.substr(-9) == 'minus.png')
242 if (src.substr(-9) === 'minus.png')
219243 $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
220244 else
221245 $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
247271 var path = document.location.pathname;
248272 var parts = path.split(/\//);
249273 $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
250 if (this == '..')
274 if (this === '..')
251275 parts.pop();
252276 });
253277 var url = parts.join('/');
33 *
44 * Sphinx JavaScript utilities for the full-text search.
55 *
6 * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
6 * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
77 * :license: BSD, see LICENSE for details.
88 *
99 */
539539 });
540540 } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
541541 var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
542 if (suffix === undefined) {
543 suffix = '.txt';
544 }
542545 $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
543546 dataType: "text",
544547 complete: function(jqxhr, textstatus) {
33 *
44 * sphinx.websupport utilities for all documentation.
55 *
6 * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
6 * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
77 * :license: BSD, see LICENSE for details.
88 *
99 */
594594 &copy; Copyright 1993-2016, The Cyrus Team.
595595 </p>
596596 </div>
597 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
597 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
598598
599599 </footer>
600600
623623 &copy; Copyright 1993-2016, The Cyrus Team.
624624 </p>
625625 </div>
626 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
626 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
627627
628628 </footer>
629629
11841184 &copy; Copyright 1993-2016, The Cyrus Team.
11851185 </p>
11861186 </div>
1187 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
1187 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
11881188
11891189 </footer>
11901190
536536 &copy; Copyright 1993-2016, The Cyrus Team.
537537 </p>
538538 </div>
539 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
539 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
540540
541541 </footer>
542542
492492 <h2>What is Cyrus SASL?<a class="headerlink" href="#what-is-cyrus-sasl" title="Permalink to this headline">¶</a></h2>
493493 <p>Simple Authentication and Security Layer (<a class="reference external" href="https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer">SASL</a>) is a specification that describes how authentication mechanisms can be plugged into an application protocol on the wire. Cyrus SASL is an implementation of SASL that makes it easy for application developers to integrate authentication mechanisms into their application in a generic way.</p>
494494 <p>The latest stable version of Cyrus SASL is 2.1.26.</p>
495 <p><a class="reference external" href="https://www.cyrusimap.org/index.html#imap-index" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">Cyrus IMAP</span></a> uses Cyrus SASL to provide authentication support to the mail server, however it is just one project using Cyrus SASL.</p>
495 <p><a class="reference external" href="https://www.cyrusimap.org/index.html#imap-index" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">Cyrus IMAP</span></a> uses Cyrus SASL to provide authentication support to the mail server, however it is just one project using Cyrus SASL.</p>
496496 <div class="section" id="features">
497497 <h3>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h3>
498498 <p>Cyrus SASL provides a number of authentication plugins out of the box.</p>
697697 &copy; Copyright 1993-2016, The Cyrus Team.
698698 </p>
699699 </div>
700 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
700 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
701701
702702 </footer>
703703
654654 &copy; Copyright 1993-2016, The Cyrus Team.
655655 </p>
656656 </div>
657 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
657 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
658658
659659 </footer>
660660
518518 &copy; Copyright 1993-2016, The Cyrus Team.
519519 </p>
520520 </div>
521 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
521 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
522522
523523 </footer>
524524
540540 &copy; Copyright 1993-2016, The Cyrus Team.
541541 </p>
542542 </div>
543 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
543 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
544544
545545 </footer>
546546
604604 &copy; Copyright 1993-2016, The Cyrus Team.
605605 </p>
606606 </div>
607 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
607 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
608608
609609 </footer>
610610
889889 &copy; Copyright 1993-2016, The Cyrus Team.
890890 </p>
891891 </div>
892 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
892 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
893893
894894 </footer>
895895
532532 &copy; Copyright 1993-2016, The Cyrus Team.
533533 </p>
534534 </div>
535 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
535 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
536536
537537 </footer>
538538
675675 &copy; Copyright 1993-2016, The Cyrus Team.
676676 </p>
677677 </div>
678 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
678 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
679679
680680 </footer>
681681
546546 &copy; Copyright 1993-2016, The Cyrus Team.
547547 </p>
548548 </div>
549 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
550550
551551 </footer>
552552
501501 <h3>Fetch the source<a class="headerlink" href="#fetch-the-source" title="Permalink to this headline">¶</a></h3>
502502 <div class="section" id="fetch-from-git">
503503 <h4>Fetch from git<a class="headerlink" href="#fetch-from-git" title="Permalink to this headline">¶</a></h4>
504 <p>If you’re not familiar with Git, there are detailed instructions in the <a class="reference external" href="https://www.cyrusimap.org/imap/developer/github-guide.html#github-guide" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">Cyrus IMAPd GitHub guide</span></a>.</p>
504 <p>If you’re not familiar with Git, there are detailed instructions in the <a class="reference external" href="https://www.cyrusimap.org/imap/developer/github-guide.html#github-guide" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">Cyrus IMAPd GitHub guide</span></a>.</p>
505505 <p>Cyrus SASL is at <a class="reference external" href="https://github.com/cyrusimap/cyrus-sasl">https://github.com/cyrusimap/cyrus-sasl</a></p>
506506 <p>To contribute, we recommend <a class="reference external" href="https://help.github.com/articles/fork-a-repo/">forking the code</a> then issuing a pull request when you’re ready.</p>
507507 <p>Once forked on GitHub, you can obtain a copy by:</p>
578578 &copy; Copyright 1993-2016, The Cyrus Team.
579579 </p>
580580 </div>
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582582
583583 </footer>
584584
526526 Cyrus SASLv2). Note that this page is a brief overview
527527 and that the authoritative documentation are the header files
528528 included in the SASL distribution. If you have any questions, please
529 feel free to contact the <a class="reference external" href="https://www.cyrusimap.org/contribute.html#contribute" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">Cyrus development team</span></a>.</p>
529 feel free to contact the <a class="reference external" href="https://www.cyrusimap.org/contribute.html#contribute" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">Cyrus development team</span></a>.</p>
530530 <p>Please note that this guide is only intended for developers looking
531531 to write mechanisms for the SASLv2 API, and that application programmers
532532 should be reading the <a class="reference internal" href="programming.html#programming"><span class="std std-ref">Application Programming Guide</span></a> instead.</p>
839839 &copy; Copyright 1993-2016, The Cyrus Team.
840840 </p>
841841 </div>
842 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
842 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
843843
844844 </footer>
845845
12171217 </div>
12181218 <div class="section" id="imtest-from-cyrus-2-1-0-or-later">
12191219 <h3><a class="toc-backref" href="#id32"><cite>imtest</cite>, from Cyrus 2.1.0 or later</a><a class="headerlink" href="#imtest-from-cyrus-2-1-0-or-later" title="Permalink to this headline">¶</a></h3>
1220 <p><a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/imtest.html#imap-reference-manpages-usercommands-imtest" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">imtest(3)</span></a>
1220 <p><a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/imtest.html#imap-reference-manpages-usercommands-imtest" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">imtest(3)</span></a>
12211221 is an application included with Cyrus IMAPd. It is
12221222 a very simple IMAP client, but should be of interest to those
12231223 writing applications. It also uses the prot layer, but it is easy
12241224 to incorporate similar support without using the prot layer.
12251225 Likewise, there are other sample client applications that you can
12261226 look at including
1227 <a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/smtptest.html#imap-reference-manpages-usercommands-smtptest" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">smtptest(3)</span></a>
1228 and <a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/pop3test.html#imap-reference-manpages-usercommands-pop3test" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">pop3test(3)</span></a>
1227 <a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/smtptest.html#imap-reference-manpages-usercommands-smtptest" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">smtptest(3)</span></a>
1228 and <a class="reference external" href="https://www.cyrusimap.org/imap/reference/manpages/usercommands/pop3test.html#imap-reference-manpages-usercommands-pop3test" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">pop3test(3)</span></a>
12291229 in the Cyrus IMAPd distribution, respectively.</p>
12301230 </div>
12311231 </div>
12741274 &copy; Copyright 1993-2016, The Cyrus Team.
12751275 </p>
12761276 </div>
1277 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
1277 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
12781278
12791279 </footer>
12801280
594594 &copy; Copyright 1993-2016, The Cyrus Team.
595595 </p>
596596 </div>
597 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
597 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
598598
599599 </footer>
600600
501501 <li class="toctree-l1"><a class="reference internal" href="faqs/upgrade-saslv2.html">Why am I having a problem running dbconverter-2 to upgrade from SASLv1 to SASLv2?</a></li>
502502 </ul>
503503 </div>
504 <p>Looking for the <a class="reference external" href="https://www.cyrusimap.org/imap/reference/faq.html#imap-faq" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">Cyrus IMAP FAQ</span></a>?</p>
504 <p>Looking for the <a class="reference external" href="https://www.cyrusimap.org/imap/reference/faq.html#imap-faq" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">Cyrus IMAP FAQ</span></a>?</p>
505505 </div>
506506
507507
525525 &copy; Copyright 1993-2016, The Cyrus Team.
526526 </p>
527527 </div>
528 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
528 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
529529
530530 </footer>
531531
545545 &copy; Copyright 1993-2016, The Cyrus Team.
546546 </p>
547547 </div>
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549549
550550 </footer>
551551
524524 &copy; Copyright 1993-2016, The Cyrus Team.
525525 </p>
526526 </div>
527 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
527 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
528528
529529 </footer>
530530
584584 &copy; Copyright 1993-2016, The Cyrus Team.
585585 </p>
586586 </div>
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
588588
589589 </footer>
590590
530530 &copy; Copyright 1993-2016, The Cyrus Team.
531531 </p>
532532 </div>
533 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
533 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
534534
535535 </footer>
536536
536536 &copy; Copyright 1993-2016, The Cyrus Team.
537537 </p>
538538 </div>
539 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
539 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
540540
541541 </footer>
542542
532532 &copy; Copyright 1993-2016, The Cyrus Team.
533533 </p>
534534 </div>
535 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
535 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
536536
537537 </footer>
538538
686686 &copy; Copyright 1993-2016, The Cyrus Team.
687687 </p>
688688 </div>
689 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
689 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
690690
691691 </footer>
692692
699699 &copy; Copyright 1993-2016, The Cyrus Team.
700700 </p>
701701 </div>
702 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
702 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
703703
704704 </footer>
705705
718718 &copy; Copyright 1993-2016, The Cyrus Team.
719719 </p>
720720 </div>
721 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
721 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
722722
723723 </footer>
724724
581581 &copy; Copyright 1993-2016, The Cyrus Team.
582582 </p>
583583 </div>
584 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
584 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
585585
586586 </footer>
587587
954954 &copy; Copyright 1993-2016, The Cyrus Team.
955955 </p>
956956 </div>
957 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
957 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
958958
959959 </footer>
960960
564564 &copy; Copyright 1993-2016, The Cyrus Team.
565565 </p>
566566 </div>
567 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
567 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
568568
569569 </footer>
570570
632632 &copy; Copyright 1993-2016, The Cyrus Team.
633633 </p>
634634 </div>
635 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
635 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
636636
637637 </footer>
638638
584584 &copy; Copyright 1993-2016, The Cyrus Team.
585585 </p>
586586 </div>
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
588588
589589 </footer>
590590
544544 &copy; Copyright 1993-2016, The Cyrus Team.
545545 </p>
546546 </div>
547 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
547 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
548548
549549 </footer>
550550
548548 &copy; Copyright 1993-2016, The Cyrus Team.
549549 </p>
550550 </div>
551 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
551 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
552552
553553 </footer>
554554
855855 &copy; Copyright 1993-2016, The Cyrus Team.
856856 </p>
857857 </div>
858 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
858 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
859859
860860 </footer>
861861
570570 &copy; Copyright 1993-2016, The Cyrus Team.
571571 </p>
572572 </div>
573 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
573 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
574574
575575 </footer>
576576
562562 &copy; Copyright 1993-2016, The Cyrus Team.
563563 </p>
564564 </div>
565 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
565 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
566566
567567 </footer>
568568
566566 &copy; Copyright 1993-2016, The Cyrus Team.
567567 </p>
568568 </div>
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570570
571571 </footer>
572572
602602 &copy; Copyright 1993-2016, The Cyrus Team.
603603 </p>
604604 </div>
605 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
605 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
606606
607607 </footer>
608608
584584 &copy; Copyright 1993-2016, The Cyrus Team.
585585 </p>
586586 </div>
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
587 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
588588
589589 </footer>
590590
571571 &copy; Copyright 1993-2016, The Cyrus Team.
572572 </p>
573573 </div>
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
575575
576576 </footer>
577577
575575 &copy; Copyright 1993-2016, The Cyrus Team.
576576 </p>
577577 </div>
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
579579
580580 </footer>
581581
567567 &copy; Copyright 1993-2016, The Cyrus Team.
568568 </p>
569569 </div>
570 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
571571
572572 </footer>
573573
566566 &copy; Copyright 1993-2016, The Cyrus Team.
567567 </p>
568568 </div>
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570570
571571 </footer>
572572
571571 &copy; Copyright 1993-2016, The Cyrus Team.
572572 </p>
573573 </div>
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
575575
576576 </footer>
577577
545545 &copy; Copyright 1993-2016, The Cyrus Team.
546546 </p>
547547 </div>
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549549
550550 </footer>
551551
551551 &copy; Copyright 1993-2016, The Cyrus Team.
552552 </p>
553553 </div>
554 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
554 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
555555
556556 </footer>
557557
611611 &copy; Copyright 1993-2016, The Cyrus Team.
612612 </p>
613613 </div>
614 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
614 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
615615
616616 </footer>
617617
578578 &copy; Copyright 1993-2016, The Cyrus Team.
579579 </p>
580580 </div>
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582582
583583 </footer>
584584
601601 &copy; Copyright 1993-2016, The Cyrus Team.
602602 </p>
603603 </div>
604 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
604 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
605605
606606 </footer>
607607
597597 &copy; Copyright 1993-2016, The Cyrus Team.
598598 </p>
599599 </div>
600 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
600 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
601601
602602 </footer>
603603
578578 &copy; Copyright 1993-2016, The Cyrus Team.
579579 </p>
580580 </div>
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582582
583583 </footer>
584584
572572 &copy; Copyright 1993-2016, The Cyrus Team.
573573 </p>
574574 </div>
575 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
575 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
576576
577577 </footer>
578578
566566 &copy; Copyright 1993-2016, The Cyrus Team.
567567 </p>
568568 </div>
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570570
571571 </footer>
572572
543543 &copy; Copyright 1993-2016, The Cyrus Team.
544544 </p>
545545 </div>
546 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
546 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
547547
548548 </footer>
549549
609609 &copy; Copyright 1993-2016, The Cyrus Team.
610610 </p>
611611 </div>
612 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
612 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
613613
614614 </footer>
615615
575575 &copy; Copyright 1993-2016, The Cyrus Team.
576576 </p>
577577 </div>
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
579579
580580 </footer>
581581
609609 &copy; Copyright 1993-2016, The Cyrus Team.
610610 </p>
611611 </div>
612 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
612 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
613613
614614 </footer>
615615
551551 &copy; Copyright 1993-2016, The Cyrus Team.
552552 </p>
553553 </div>
554 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
554 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
555555
556556 </footer>
557557
555555 &copy; Copyright 1993-2016, The Cyrus Team.
556556 </p>
557557 </div>
558 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
558 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
559559
560560 </footer>
561561
724724 &copy; Copyright 1993-2016, The Cyrus Team.
725725 </p>
726726 </div>
727 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
727 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
728728
729729 </footer>
730730
570570 &copy; Copyright 1993-2016, The Cyrus Team.
571571 </p>
572572 </div>
573 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
573 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
574574
575575 </footer>
576576
576576 &copy; Copyright 1993-2016, The Cyrus Team.
577577 </p>
578578 </div>
579 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
579 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
580580
581581 </footer>
582582
547547 &copy; Copyright 1993-2016, The Cyrus Team.
548548 </p>
549549 </div>
550 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
550 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
551551
552552 </footer>
553553
581581 &copy; Copyright 1993-2016, The Cyrus Team.
582582 </p>
583583 </div>
584 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
584 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
585585
586586 </footer>
587587
548548 &copy; Copyright 1993-2016, The Cyrus Team.
549549 </p>
550550 </div>
551 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
551 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
552552
553553 </footer>
554554
590590 &copy; Copyright 1993-2016, The Cyrus Team.
591591 </p>
592592 </div>
593 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
593 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
594594
595595 </footer>
596596
573573 &copy; Copyright 1993-2016, The Cyrus Team.
574574 </p>
575575 </div>
576 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
576 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
577577
578578 </footer>
579579
568568 &copy; Copyright 1993-2016, The Cyrus Team.
569569 </p>
570570 </div>
571 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
571 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
572572
573573 </footer>
574574
576576 &copy; Copyright 1993-2016, The Cyrus Team.
577577 </p>
578578 </div>
579 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
579 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
580580
581581 </footer>
582582
545545 &copy; Copyright 1993-2016, The Cyrus Team.
546546 </p>
547547 </div>
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549549
550550 </footer>
551551
555555 &copy; Copyright 1993-2016, The Cyrus Team.
556556 </p>
557557 </div>
558 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
558 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
559559
560560 </footer>
561561
599599 &copy; Copyright 1993-2016, The Cyrus Team.
600600 </p>
601601 </div>
602 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
602 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
603603
604604 </footer>
605605
552552 &copy; Copyright 1993-2016, The Cyrus Team.
553553 </p>
554554 </div>
555 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
555 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
556556
557557 </footer>
558558
571571 &copy; Copyright 1993-2016, The Cyrus Team.
572572 </p>
573573 </div>
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
574 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
575575
576576 </footer>
577577
546546 &copy; Copyright 1993-2016, The Cyrus Team.
547547 </p>
548548 </div>
549 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
550550
551551 </footer>
552552
569569 &copy; Copyright 1993-2016, The Cyrus Team.
570570 </p>
571571 </div>
572 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
572 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
573573
574574 </footer>
575575
613613 &copy; Copyright 1993-2016, The Cyrus Team.
614614 </p>
615615 </div>
616 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
616 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
617617
618618 </footer>
619619
578578 &copy; Copyright 1993-2016, The Cyrus Team.
579579 </p>
580580 </div>
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582582
583583 </footer>
584584
500500 <span class="kt">int</span> <span class="nf">sasl_server_start</span><span class="p">(</span><span class="n">sasl_conn_t</span> <span class="o">*</span> <span class="n">conn</span><span class="p">,</span>
501501 <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">mech</span><span class="p">,</span>
502502 <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">clientin</span><span class="p">,</span>
503 <span class="kt">unsigned</span> <span class="o">*</span> <span class="n">clientinlen</span><span class="p">,</span>
503 <span class="kt">unsigned</span> <span class="n">clientinlen</span><span class="p">,</span>
504504 <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span> <span class="n">serverout</span><span class="p">,</span>
505505 <span class="kt">unsigned</span> <span class="o">*</span> <span class="n">serveroutlen</span><span class="p">);</span>
506506 </pre></div>
590590 &copy; Copyright 1993-2016, The Cyrus Team.
591591 </p>
592592 </div>
593 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
593 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
594594
595595 </footer>
596596
579579 &copy; Copyright 1993-2016, The Cyrus Team.
580580 </p>
581581 </div>
582 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
583583
584584 </footer>
585585
577577 &copy; Copyright 1993-2016, The Cyrus Team.
578578 </p>
579579 </div>
580 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
580 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581581
582582 </footer>
583583
582582 &copy; Copyright 1993-2016, The Cyrus Team.
583583 </p>
584584 </div>
585 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
585 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
586586
587587 </footer>
588588
566566 &copy; Copyright 1993-2016, The Cyrus Team.
567567 </p>
568568 </div>
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570570
571571 </footer>
572572
561561 &copy; Copyright 1993-2016, The Cyrus Team.
562562 </p>
563563 </div>
564 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
564 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
565565
566566 </footer>
567567
577577 &copy; Copyright 1993-2016, The Cyrus Team.
578578 </p>
579579 </div>
580 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
580 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
581581
582582 </footer>
583583
579579 &copy; Copyright 1993-2016, The Cyrus Team.
580580 </p>
581581 </div>
582 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
582 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
583583
584584 </footer>
585585
583583 &copy; Copyright 1993-2016, The Cyrus Team.
584584 </p>
585585 </div>
586 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
586 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
587587
588588 </footer>
589589
566566 &copy; Copyright 1993-2016, The Cyrus Team.
567567 </p>
568568 </div>
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
569 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
570570
571571 </footer>
572572
557557 &copy; Copyright 1993-2016, The Cyrus Team.
558558 </p>
559559 </div>
560 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
560 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
561561
562562 </footer>
563563
563563 &copy; Copyright 1993-2016, The Cyrus Team.
564564 </p>
565565 </div>
566 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
566 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
567567
568568 </footer>
569569
575575 &copy; Copyright 1993-2016, The Cyrus Team.
576576 </p>
577577 </div>
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
578 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
579579
580580 </footer>
581581
531531 &copy; Copyright 1993-2016, The Cyrus Team.
532532 </p>
533533 </div>
534 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
534 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
535535
536536 </footer>
537537
745745 &copy; Copyright 1993-2016, The Cyrus Team.
746746 </p>
747747 </div>
748 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
748 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
749749
750750 </footer>
751751
653653 &copy; Copyright 1993-2016, The Cyrus Team.
654654 </p>
655655 </div>
656 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
656 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
657657
658658 </footer>
659659
10681068 &copy; Copyright 1993-2016, The Cyrus Team.
10691069 </p>
10701070 </div>
1071 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
1071 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
10721072
10731073 </footer>
10741074
545545 &copy; Copyright 1993-2016, The Cyrus Team.
546546 </p>
547547 </div>
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
548 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
549549
550550 </footer>
551551
524524 &copy; Copyright 1993-2016, The Cyrus Team.
525525 </p>
526526 </div>
527 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
527 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
528528
529529 </footer>
530530
878878 information.</p>
879879 </dd>
880880 <dt>Is there a mailing list to discuss the Cyrus SASL library?</dt>
881 <dd>Check out our <a class="reference external" href="https://www.cyrusimap.org/contribute.html#contribute" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">contribution</span></a> page for ways to get in touch
881 <dd>Check out our <a class="reference external" href="https://www.cyrusimap.org/contribute.html#contribute" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">contribution</span></a> page for ways to get in touch
882882 with us, including mailing lists and IRC.</dd>
883883 </dl>
884884 </div>
905905 &copy; Copyright 1993-2016, The Cyrus Team.
906906 </p>
907907 </div>
908 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
908 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
909909
910910 </footer>
911911
616616 &copy; Copyright 1993-2016, The Cyrus Team.
617617 </p>
618618 </div>
619 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
619 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
620620
621621 </footer>
622622
666666 &copy; Copyright 1993-2016, The Cyrus Team.
667667 </p>
668668 </div>
669 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
669 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
670670
671671 </footer>
672672
505505 &copy; Copyright 1993-2016, The Cyrus Team.
506506 </p>
507507 </div>
508 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
508 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
509509
510510 </footer>
511511
585585 &copy; Copyright 1993-2016, The Cyrus Team.
586586 </p>
587587 </div>
588 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
588 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
589589
590590 </footer>
591591
487487
488488 <div class="section" id="support-community">
489489 <h1>Support/Community<a class="headerlink" href="#support-community" title="Permalink to this headline">¶</a></h1>
490 <p>Please read our support and bug reporting guidelines in the <a class="reference external" href="https://www.cyrusimap.org/support.html#support" title="(in Cyrus IMAP v3.0.4)"><span class="xref std std-ref">Cyrus IMAP project</span></a>.</p>
490 <p>Please read our support and bug reporting guidelines in the <a class="reference external" href="https://www.cyrusimap.org/support.html#support" title="(in Cyrus IMAP v3.0.6)"><span class="xref std std-ref">Cyrus IMAP project</span></a>.</p>
491491 </div>
492492
493493
509509 &copy; Copyright 1993-2016, The Cyrus Team.
510510 </p>
511511 </div>
512 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.3 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
512 Built with <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6 using a modified <a href="https://readthedocs.org">Read the Docs</a> <a href="https://github.com/snide/sphinx_rtd_theme">theme</a>.
513513
514514 </footer>
515515
5151 macosx.html \
5252 mechanisms.html \
5353 NTMakefile \
54 ONEWS \
5455 options.html \
5556 os390.html \
5657 plugprog.html \
1616 int sasl_server_start(sasl_conn_t * conn,
1717 const char * mech,
1818 const char * clientin,
19 unsigned * clientinlen,
19 unsigned clientinlen,
2020 const char ** serverout,
2121 unsigned * serveroutlen);
2222
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
639639 #define SASL_CU_AUTHZID 0x02
640640
641641 /* Combine the following with SASL_CU_AUTHID, if you don't want
642 to fail if auxprop returned SASL_NOUSER/SASL_NOMECH.
643 This flag has no effect on SASL_CU_AUTHZID. */
642 to fail if auxprop returned SASL_NOUSER/SASL_NOMECH. */
644643 #define SASL_CU_EXTERNALLY_VERIFIED 0x04
645644
646645 #define SASL_CU_OVERRIDE 0x08 /* mapped to SASL_AUXPROP_OVERRIDE */
126126 *
127127 * level is a SASL_LOG_* level (see sasl.h)
128128 */
129 void (*log)(sasl_conn_t *conn, int level, const char *fmt, ...);
129 void (*log)(sasl_conn_t *conn, int level, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
130130
131131 /* callback to sasl_seterror() */
132 void (*seterror)(sasl_conn_t *conn, unsigned flags, const char *fmt, ...);
132 void (*seterror)(sasl_conn_t *conn, unsigned flags, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
133133
134134 /* spare function pointer */
135135 int *(*spare_fptr)(void);
484484 ********************/
485485
486486 /* log message formatting routine */
487 typedef void sasl_logmsg_p(sasl_conn_t *conn, const char *fmt, ...);
487 typedef void sasl_logmsg_p(sasl_conn_t *conn, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
488488
489489 /*
490490 * input parameters to server SASL plugin
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
6969 LIB_DOOR= @LIB_DOOR@
7070
7171 lib_LTLIBRARIES = libsasl2.la
72 if BUILD_LIBOBJ
7273 noinst_LTLIBRARIES = libobj.la
74 else
75 noinst_LTLIBRARIES =
76 endif
7377
7478 libobj_la_SOURCES =
7579 libobj_la_LIBADD = $(LTLIBOBJS)
7680
7781 libsasl2_la_SOURCES = $(common_sources) $(common_headers)
7882 libsasl2_la_LDFLAGS = -version-info $(sasl_version) -no-undefined
79 libsasl2_la_LIBADD = libobj.la $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) $(PLUGIN_COMMON_OBJS)
83
84 libsasl2_la_LIBADD = $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) $(PLUGIN_COMMON_OBJS)
85 if BUILD_LIBOBJ
86 libsasl2_la_LIBADD += libobj.la
87 endif
8088
8189 if MACOSX
8290 framedir = /Library/Frameworks/SASL2.framework
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
131131 build_triplet = @build@
132132 host_triplet = @host@
133133 target_triplet = @target@
134 @BUILD_LIBOBJ_TRUE@am__append_1 = libobj.la
134135 subdir = lib
135136 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
136137 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
197198 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
198199 am__v_lt_0 = --silent
199200 am__v_lt_1 =
201 @BUILD_LIBOBJ_TRUE@am_libobj_la_rpath =
200202 am__DEPENDENCIES_1 =
201 libsasl2_la_DEPENDENCIES = libobj.la $(am__DEPENDENCIES_1) \
202 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
203 $(PLUGIN_COMMON_OBJS)
203 libsasl2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
204 $(am__DEPENDENCIES_1) $(PLUGIN_COMMON_OBJS) $(am__append_1)
204205 am__libsasl2_la_SOURCES_DIST = auxprop.c canonusr.c checkpw.c client.c \
205206 common.c config.c external.c md5.c saslutil.c server.c \
206207 seterror.c dlopen.c windlopen.c saslint.h
485486 common_headers = saslint.h
486487 common_sources = auxprop.c canonusr.c checkpw.c client.c common.c config.c external.c md5.c saslutil.c server.c seterror.c $(DLOPEN_C)
487488 lib_LTLIBRARIES = libsasl2.la
488 noinst_LTLIBRARIES = libobj.la
489 @BUILD_LIBOBJ_FALSE@noinst_LTLIBRARIES =
490 @BUILD_LIBOBJ_TRUE@noinst_LTLIBRARIES = libobj.la
489491 libobj_la_SOURCES =
490492 libobj_la_LIBADD = $(LTLIBOBJS)
491493 libsasl2_la_SOURCES = $(common_sources) $(common_headers)
492494 libsasl2_la_LDFLAGS = -version-info $(sasl_version) -no-undefined
493 libsasl2_la_LIBADD = libobj.la $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) $(PLUGIN_COMMON_OBJS)
495 libsasl2_la_LIBADD = $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) \
496 $(PLUGIN_COMMON_OBJS) $(am__append_1)
494497 @MACOSX_TRUE@framedir = /Library/Frameworks/SASL2.framework
495498 all: $(BUILT_SOURCES)
496499 $(MAKE) $(AM_MAKEFLAGS) all-am
577580 }
578581
579582 libobj.la: $(libobj_la_OBJECTS) $(libobj_la_DEPENDENCIES) $(EXTRA_libobj_la_DEPENDENCIES)
580 $(AM_V_CCLD)$(LINK) $(libobj_la_OBJECTS) $(libobj_la_LIBADD) $(LIBS)
583 $(AM_V_CCLD)$(LINK) $(am_libobj_la_rpath) $(libobj_la_OBJECTS) $(libobj_la_LIBADD) $(LIBS)
581584
582585 libsasl2.la: $(libsasl2_la_OBJECTS) $(libsasl2_la_DEPENDENCIES) $(EXTRA_libsasl2_la_DEPENDENCIES)
583586 $(AM_V_CCLD)$(libsasl2_la_LINK) -rpath $(libdir) $(libsasl2_la_OBJECTS) $(libsasl2_la_LIBADD) $(LIBS)
9898 VALUE "FileDescription", "CMU SASL API v2\0"
9999 VALUE "FileVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP).0\0"
100100 VALUE "InternalName", "libsasl\0"
101 VALUE "LegalCopyright", "Copyright (c) Carnegie Mellon University 2002-2012\0"
101 VALUE "LegalCopyright", "Copyright (c) Carnegie Mellon University 2002-2017\0"
102102 VALUE "OriginalFilename", "libsasl.dll\0"
103103 VALUE "ProductName", "Carnegie Mellon University SASL\0"
104104 VALUE "ProductVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP)-0"
149149 /* XXX the following is fairly arbitrary, but its independent
150150 of the order in which the plugins are loaded
151151 */
152 #ifdef PREFER_MECH
153 if (!strcasecmp(a->mech_name, PREFER_MECH)) return 1;
154 if (!strcasecmp(b->mech_name, PREFER_MECH)) return -1;
155 #endif
156
152157 sec_diff = a->security_flags ^ b->security_flags;
153158 if (sec_diff & a->security_flags & SASL_SEC_NOANONYMOUS) return 1;
154159 if (sec_diff & b->security_flags & SASL_SEC_NOANONYMOUS) return -1;
657662 return SASL_OK;
658663 }
659664
660 static int
661 _sasl_are_current_security_flags_worse_then_best(unsigned best_security_flags,
662 unsigned current_security_flags)
663 {
664 /* We don't qualify SASL_SEC_PASS_CREDENTIALS as "secure" flag */
665 best_security_flags &= ~SASL_SEC_PASS_CREDENTIALS;
666
667 if ((current_security_flags ^ best_security_flags) & best_security_flags) {
668 return 1;
669 } else {
670 return 0;
671 }
672 }
673
674665 /* select a mechanism for a connection
675666 * mechlist -- mechanisms server has available (punctuation ignored)
676667 * secret -- optional secret from previous session
707698 char *ordered_mechs = NULL, *name;
708699 cmechanism_t *m = NULL, *bestm = NULL;
709700 size_t i, list_len, name_len;
710 sasl_ssf_t bestssf = 0, minssf = 0;
701 sasl_ssf_t minssf = 0;
711702 int result, server_can_cb = 0;
712703 sasl_cbinding_disp_t cbindingdisp;
713704 sasl_cbinding_disp_t cur_cbindingdisp;
760751 goto done;
761752
762753 /* for each mechanism in client's list */
763 for (m = c_conn->mech_list; m != NULL; m = m->next) {
754 for (m = c_conn->mech_list; !bestm && m != NULL; m = m->next) {
764755
765756 for (i = 0, name = ordered_mechs; i < list_len; i++, name += name_len + 1) {
766757 unsigned myflags;
817808 break;
818809 }
819810
820 /* compare security flags, only take new mechanism if it has
821 * all the security flags of the previous one.
822 *
823 * From the mechanisms we ship with, this yields the order:
824 *
825 * SRP
826 * GSSAPI + KERBEROS_V4
827 * DIGEST + OTP
828 * CRAM + EXTERNAL
829 * PLAIN + LOGIN + ANONYMOUS
830 *
831 * This might be improved on by comparing the numeric value of
832 * the bitwise-or'd security flags, which splits DIGEST/OTP,
833 * CRAM/EXTERNAL, and PLAIN/LOGIN from ANONYMOUS, but then we
834 * are depending on the numeric values of the flags (which may
835 * change, and their ordering could be considered dumb luck.
836 */
837
838 if (bestm &&
839 _sasl_are_current_security_flags_worse_then_best(
840 bestm->m.plug->security_flags,
841 m->m.plug->security_flags)) {
842 break;
843 }
844
845811 if (SASL_CB_PRESENT(c_conn->cparams) && plus) {
846812 cur_cbindingdisp = SASL_CB_DISP_USED;
847813 } else {
848814 cur_cbindingdisp = cbindingdisp;
849815 }
850816
851 if (bestm && (best_cbindingdisp > cur_cbindingdisp)) {
852 break;
853 }
854
855 #ifdef PREFER_MECH
856 if (strcasecmp(m->m.plug->mech_name, PREFER_MECH) &&
857 bestm && m->m.plug->max_ssf <= bestssf) {
858 /* this mechanism isn't our favorite, and it's no better
859 than what we already have! */
860 break;
861 }
862 #else
863 if (bestm && m->m.plug->max_ssf <= bestssf) {
864 /* this mechanism is no better than what we already have! */
865 break;
866 }
867 #endif
868
869817 if (mech) {
870818 *mech = m->m.plug->mech_name;
871819 }
872820
821 /* Since the list of client mechs is ordered by preference/strength,
822 the first mech in our list that is available on the server and
823 meets our security properties and features is the "best" */
873824 best_cbindingdisp = cur_cbindingdisp;
874 bestssf = m->m.plug->max_ssf;
875825 bestm = m;
876826 break;
877827 }
13821382 sasl_usererr(conn->error_code), errstr);
13831383
13841384 need_len = (unsigned) (strlen(leader) + strlen(conn->error_buf) + 12);
1385 _buf_alloc(&conn->errdetail_buf, &conn->errdetail_buf_len, need_len);
1385 if (_buf_alloc(&conn->errdetail_buf, &conn->errdetail_buf_len, need_len) != SASL_OK) {
1386 return NULL;
1387 }
13861388
13871389 snprintf(conn->errdetail_buf, need_len, "%s%s", leader, conn->error_buf);
13881390
302302 if(line[strlen(line) - 1] != '\n') {
303303 _sasl_log(NULL, SASL_LOG_WARN,
304304 "LA file has too long of a line: %s", in);
305 fclose(file);
305306 return SASL_BUFOVER;
306307 }
307308 if(line[0] == '\n' || line[0] == '#') continue;
321322 if(ntmp == end) {
322323 _sasl_log(NULL, SASL_LOG_DEBUG,
323324 "dlname is empty in .la file: %s", in);
325 fclose(file);
324326 return SASL_FAIL;
325327 }
326328 strcpy(out, prefix);
2929 with_des=no)],
3030 with_des=no, $LIB_RSAREF)
3131 fi
32 else
33 with_des=no
3234 fi
3335
3436 if test "$with_des" = no; then
1919 no)
2020 with_openssl="no";;
2121 *)
22 with_openssl="yes"
2223 dnl if openssl has been compiled with the rsaref2 libraries,
2324 dnl we need to include the rsaref libraries in the crypto check
2425 LIB_RSAREF=""
3132
3233 AC_CHECK_HEADER(openssl/evp.h, [
3334 AC_CHECK_LIB(crypto, EVP_DigestInit,
34 [with_openssl="yes",
35 AC_CHECK_LIB(crypto, SHA256,
35 [AC_CHECK_LIB(crypto, SHA256,
3636 AC_DEFINE(HAVE_SHA256,[],
3737 [Do we have SHA256?]))],
3838 with_openssl="no", $LIB_RSAREF)],
39 with_openssl=no)
39 with_openssl="no")
4040 ;;
4141 esac
4242
1616 [gss_impl=$withval],
1717 [gss_impl=auto])
1818
19 gs2="no"
1920 if test "$gssapi" != no; then
2021 platform=
2122 case "${host}" in
3536 *-*-aix*)
3637 ###_AIX
3738 platform=__aix
39 ;;
40 *-*-darwin*)
41 platform=__darwin
3842 ;;
3943 *)
4044 AC_WARN([The system type is not recognized. If you believe that CyberSafe GSSAPI works on this platform, please update the configure script])
256260 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gssapi.o"
257261 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gssapi.c"
258262 if test "$rfc5587" = "yes" -a "$rfc5801" = "yes"; then
263 gs2="yes"
259264 SASL_MECHS="$SASL_MECHS libgs2.la"
260265 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gs2.o"
261266 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gs2.c"
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_AUTHORIZE_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_AUTHORIZE_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_authorize_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_AUXPROP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_AUXPROP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_auxprop \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_AUXPROP_GETCTX" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_AUXPROP_GETCTX" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_auxprop_getctx \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_AUXPROP_REQUEST" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_AUXPROP_REQUEST" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_auxprop_request \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CALLBACKS" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CALLBACKS" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_callbacks \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CANON_USER_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CANON_USER_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_canon_user_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CHALPROMPT_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CHALPROMPT_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_chalprompt_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CHECKAPOP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CHECKAPOP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_checkapop \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CHECKPASS" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CHECKPASS" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_checkpass \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CLIENT_INIT" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CLIENT_INIT" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_client_init \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CLIENT_NEW" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CLIENT_NEW" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_client_new \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CLIENT_START" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CLIENT_START" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_client_start \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_CLIENT_STEP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_CLIENT_STEP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_client_step \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_DECODE" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_DECODE" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_decode \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_DISPOSE" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_DISPOSE" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_dispose \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_DONE" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_DONE" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_done \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_ENCODE" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_ENCODE" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_encode \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_ENCODEV" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_ENCODEV" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_encodev \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_ERRDETAIL" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_ERRDETAIL" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_errdetail \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_ERRORS" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_ERRORS" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_errors \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_ERRSTRING" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_ERRSTRING" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_errstring \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETCONFPATH_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETCONFPATH_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getconfpath_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETOPT_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETOPT_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getopt_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETPATH_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETPATH_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getpath_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETPROP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETPROP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getprop \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETREALM_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETREALM_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getrealm_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETSECRET_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETSECRET_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getsecret_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GETSIMPLE_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GETSIMPLE_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_getsimple_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_GLOBAL_LISTMECH" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_GLOBAL_LISTMECH" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_global_listmech \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_IDLE" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_IDLE" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_idle \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_LISTMECH" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_LISTMECH" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_listmech \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_LOG_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_LOG_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_log_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_INIT" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_INIT" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_init \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_NEW" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_NEW" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_new \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_START" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_START" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_start \- Cyrus SASL documentation
55 .
6464 int sasl_server_start(sasl_conn_t * conn,
6565 const char * mech,
6666 const char * clientin,
67 unsigned * clientinlen,
67 unsigned clientinlen,
6868 const char ** serverout,
6969 unsigned * serveroutlen);
7070 .fi
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_STEP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_STEP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_step \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_USERDB_CHECKPASS_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_USERDB_CHECKPASS_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_userdb_checkpass_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SERVER_USERDB_SETPASS_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SERVER_USERDB_SETPASS_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_server_userdb_setpass_t \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SETPASS" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SETPASS" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_setpass \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_SETPROP" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_SETPROP" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_setprop \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_USER_EXISTS" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_USER_EXISTS" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_user_exists \- Cyrus SASL documentation
55 .
00 .\" Man page generated from reStructuredText.
11 .
2 .TH "SASL_VERIFYFILE_T" "3" "September 08, 2017" "2.1.27" "Cyrus SASL"
2 .TH "SASL_VERIFYFILE_T" "3" "May 10, 2018" "2.1.27" "Cyrus SASL"
33 .SH NAME
44 sasl_verifyfile_t \- Cyrus SASL documentation
55 .
5151 AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/lib -I$(top_srcdir)/sasldb -I$(top_srcdir)/common -I$(top_builddir)/include
5252 AM_LDFLAGS = -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) -no-undefined
5353
54 if BUILD_LIBOBJ
5455 COMPAT_OBJS = $(top_builddir)/lib/libobj.la
56 endif
5557 PLUGIN_COMMON_OBJS = $(top_builddir)/common/libplugin_common.la
5658 CRYPTO_COMPAT_OBJS = $(top_builddir)/common/libcrypto_compat.la
5759
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
494494 plugin_version = 3:0:0
495495 AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib -I$(top_srcdir)/sasldb -I$(top_srcdir)/common -I$(top_builddir)/include
496496 AM_LDFLAGS = -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) -no-undefined
497 COMPAT_OBJS = $(top_builddir)/lib/libobj.la
497 @BUILD_LIBOBJ_TRUE@COMPAT_OBJS = $(top_builddir)/lib/libobj.la
498498 PLUGIN_COMMON_OBJS = $(top_builddir)/common/libplugin_common.la
499499 CRYPTO_COMPAT_OBJS = $(top_builddir)/common/libcrypto_compat.la
500500 EXTRA_DIST = makeinit.sh NTMakefile
144144
145145 DIGEST_FLAGS=/D "WITH_RC4" /DOBSOLETE_DIGEST_ATTR=1
146146
147 SCRAM_FLAGS=/DHAVE_SHA256=1
148
147149 saslSASLDB_sources = sasldb.c sasldb_init.c $(libsasldb_sources) $(common_sources)
148150 saslSASLDB_objs = sasldb.obj sasldb_init.obj $(libsasldb_objs) $(common_objs)
149151 saslSASLDB_out = saslSASLDB.dll saslSASLDB.exp saslSASLDB.lib
158160 EXTRA_FLAGS = /D TARGET_WIN_SYSTEM=$(TARGET_WIN_SYSTEM) $(EXTRA_FLAGS)
159161 !ENDIF
160162
161 EXTRA_FLAGS=$(EXTRA_FLAGS) $(DB_FLAGS) $(OPENSSL_FLAGS) $(GSS_FLAGS) $(SRP_FLAGS) $(SQL_FLAGS) $(DIGEST_FLAGS) $(CRAM_FLAGS) $(LDAP_FLAGS)
163 EXTRA_FLAGS=$(EXTRA_FLAGS) $(DB_FLAGS) $(OPENSSL_FLAGS) $(GSS_FLAGS) $(SRP_FLAGS) $(SQL_FLAGS) $(DIGEST_FLAGS) $(CRAM_FLAGS) $(SCRAM_FLAGS) $(LDAP_FLAGS)
162164 CPPFLAGS = /I "..\win32\include" /I "." /I "..\include" $(EXTRA_FLAGS) /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL"
163165
164166 OPENSSL_LIBS=/libpath:$(OPENSSL_LIBPATH) libeay32.lib ssleay32.lib
331333 VALUE "FileDescription", "CMU SASL $(@B) plugin\0"
332334 VALUE "FileVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP).0\0"
333335 VALUE "InternalName", "$(@B)\0"
334 VALUE "LegalCopyright", "Copyright (c) Carnegie Mellon University 2002-2012\0"
336 VALUE "LegalCopyright", "Copyright (c) Carnegie Mellon University 2002-2017\0"
335337 VALUE "OriginalFilename", "$(@B).dll\0"
336338 VALUE "ProductName", "Carnegie Mellon University SASL\0"
337339 VALUE "ProductVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP)-0"
549549 /* Check if the value needs quoting */
550550 if (strpbrk ((char *)value, NEED_ESCAPING) != NULL) {
551551 char * quoted = quote ((char *) value);
552 if (quoted == NULL)
553 MEMERROR(utils);
552554 valuesize = strlen(quoted);
553555 /* As the quoted string is bigger, make sure we have enough
554556 space now */
755757 }
756758
757759 result = malloc (strlen(str) + num_to_escape + 1);
760 if (result == NULL) {
761 return NULL;
762 }
758763 for (p = str, outp = result; *p; p++) {
759764 if (*p == '"' || *p == '\\') {
760765 *outp = '\\';
18411841 strcat(out, ")");
18421842
18431843 if (logonly) {
1844 utils->log(utils->conn, SASL_LOG_FAIL, out);
1844 utils->log(utils->conn, SASL_LOG_FAIL, "%s", out);
18451845 } else {
1846 utils->seterror(utils->conn, 0, out);
1846 utils->seterror(utils->conn, 0, "%s", out);
18471847 }
18481848 utils->free(out);
18491849
334334 strcat(out, ")");
335335
336336 if (logonly) {
337 utils->log(utils->conn, SASL_LOG_FAIL, out);
337 utils->log(utils->conn, SASL_LOG_FAIL, "%s", out);
338338 } else {
339 utils->seterror(utils->conn, 0, out);
339 utils->seterror(utils->conn, 0, "%s", out);
340340 }
341341 utils->free(out);
342342
701701 case GSS_S_UNAVAILABLE:
702702 /* Not supported by the library, fallback to default */
703703 goto fallback;
704
704705 case GSS_S_COMPLETE:
705706 if ((bufset->count != 1) || (bufset->elements[0].length != 4)) {
706707 /* Malformed bufset, fail */
711712 (void)gss_release_buffer_set(&min_stat, &bufset);
712713 *mech_ssf = ntohl(ssf);
713714 return SASL_OK;
715
716 case GSS_S_FAILURE:
717 /* Not supported by Heimdal, fallback to default */
718 if (min_stat == 0) {
719 goto fallback;
720 }
721
722 GCC_FALLTHROUGH
723
714724 default:
725 if (GSS_ERROR(maj_stat)) {
726 sasl_gss_seterror(text->utils,maj_stat,min_stat);
727 }
715728 return SASL_FAIL;
716729 }
717730
13591372 ret = params->canon_user(params->utils->conn,
13601373 ((char *) output_token->value) + 4,
13611374 (output_token->length - 4) * sizeof(char),
1362 SASL_CU_AUTHZID, oparams);
1363
1375 SASL_CU_AUTHZID | SASL_CU_EXTERNALLY_VERIFIED,
1376 oparams);
1377
13641378 if (ret != SASL_OK) {
13651379 sasl_gss_free_context_contents(text);
13661380 return ret;
15601574 if (keytab != NULL) {
15611575 if (access(keytab, R_OK) != 0) {
15621576 utils->log(NULL, SASL_LOG_ERR,
1563 "Could not find keytab file: %s: %m",
1564 keytab, errno);
1577 "Could not find keytab file: %s: %m", keytab);
15651578 return SASL_FAIL;
15661579 }
15671580
17451758 }
17461759
17471760 /* Setup req_flags properly */
1748 req_flags = GSS_C_INTEG_FLAG;
1761 req_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG;
17491762 if (params->props.max_ssf > params->external_ssf) {
17501763 /* We are requesting a security layer */
1751 req_flags |= GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG;
1764 req_flags |= GSS_C_INTEG_FLAG;
17521765 /* Any SSF bigger than 1 is confidentiality. */
17531766 /* Let's check if the client of the API requires confidentiality,
17541767 and it wasn't already provided by an external layer */
8080 static int ldapdb_connect(ldapctx *ctx, sasl_server_params_t *sparams,
8181 const char *user, unsigned ulen, connparm *cp)
8282 {
83 int i;
83 int i, rc;
8484 char *authzid;
8585
8686 if((i=ldap_initialize(&cp->ld, ctx->uri))) {
9999 cp->c.ldctl_iscritical = 1;
100100
101101 i = LDAP_VERSION3;
102 ldap_set_option(cp->ld, LDAP_OPT_PROTOCOL_VERSION, &i);
102 rc = ldap_set_option(cp->ld, LDAP_OPT_PROTOCOL_VERSION, &i);
103 if (rc != 0) {
104 sparams->utils->free(authzid);
105 return rc;
106 }
103107
104108 /* If TLS is set and it fails, continue or bail out as requested */
105109 if (ctx->use_tls && (i=ldap_start_tls_s(cp->ld, NULL, NULL)) != LDAP_SUCCESS
315319 sparams->utils->free(mods);
316320
317321 if (i) {
318 sparams->utils->seterror(sparams->utils->conn, 0,
322 sparams->utils->seterror(sparams->utils->conn, 0, "%s",
319323 ldap_err2string(i));
320324 if (i == LDAP_NO_MEMORY) i = SASL_NOMEM;
321325 else i = SASL_FAIL;
415419 done:
416420 if(cp.ld) ldap_unbind_ext(cp.ld, NULL, NULL);
417421 if (ret) {
418 sparams->utils->seterror(sparams->utils->conn, 0,
422 sparams->utils->seterror(sparams->utils->conn, 0, "%s",
419423 ldap_err2string(ret));
420424 if (ret == LDAP_NO_MEMORY) ret = SASL_NOMEM;
421425 else ret = SASL_FAIL;
10811081 || hdr.status /* no errors */
10821082 || !(hdr.flags & SMB_FLAGS_SERVER_TO_REDIR)) { /* response */
10831083 utils->log(NULL, SASL_LOG_ERR,
1084 "NTLM: error in NEGPROT response header: %ld",
1084 "NTLM: error in NEGPROT response header: %u",
10851085 hdr.status);
10861086 return SASL_FAIL;
10871087 }
13101310 /* check auth success */
13111311 if (hdr.status) {
13121312 utils->log(NULL, SASL_LOG_ERR,
1313 "NTLM: auth failure: %ld", hdr.status);
1313 "NTLM: auth failure: %u", hdr.status);
13141314 return SASL_BADAUTH;
13151315 }
13161316
13971397 unsigned int len;
13981398 SOCKET sock = (SOCKET) -1;
13991399
1400 /* holds state are in: allocate early */
1401 text = sparams->utils->malloc(sizeof(server_context_t));
1402 if (text == NULL) {
1403 MEMERROR( sparams->utils );
1404 return SASL_NOMEM;
1405 }
1406
14001407 sparams->utils->getopt(sparams->utils->getopt_context,
14011408 "NTLM", "ntlm_server", &serv, &len);
14021409 if (serv) {
14251432
14261433 sparams->utils->free(tmp);
14271434 if (sock == (SOCKET) -1) return SASL_UNAVAIL;
1428 }
1429
1430 /* holds state are in */
1431 text = sparams->utils->malloc(sizeof(server_context_t));
1432 if (text == NULL) {
1433 MEMERROR( sparams->utils );
1434 return SASL_NOMEM;
14351435 }
14361436
14371437 memset(text, 0, sizeof(server_context_t));
856856 &error_text);
857857 if (result != SASL_OK) {
858858 if (error_text != NULL) {
859 sparams->utils->seterror(sparams->utils->conn, 0, error_text);
859 sparams->utils->seterror(sparams->utils->conn, 0, "%s",
860 error_text);
860861 }
861862 goto cleanup;
862863 }
12731274 if (binary_channel_binding_len != sparams->cbinding->len) {
12741275 sparams->utils->seterror (sparams->utils->conn,
12751276 0,
1276 "Unsupported channel bindings length received in %s. Expected lenght: %d, received: %d",
1277 "Unsupported channel bindings length received in %s. Expected length: %lu, received: %d",
12771278 scram_sasl_mech,
12781279 sparams->cbinding->len,
12791280 binary_channel_binding_len);
17001701 &error_text);
17011702 if (r != SASL_OK) {
17021703 if (error_text != NULL) {
1703 SETERROR(sparams->utils, error_text);
1704 sparams->utils->seterror(sparams->utils->conn, 0, "%s",
1705 error_text);
17041706 }
17051707 goto cleanup;
17061708 }
18371839
18381840 static sasl_server_plug_t scram_server_plugins[] =
18391841 {
1842 #ifdef HAVE_SHA256
1843 {
1844 "SCRAM-SHA-256", /* mech_name */
1845 0, /* max_ssf */
1846 SASL_SEC_NOPLAINTEXT
1847 | SASL_SEC_NOACTIVE
1848 | SASL_SEC_NOANONYMOUS
1849 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
1850 SASL_FEAT_ALLOWS_PROXY
1851 | SASL_FEAT_SUPPORTS_HTTP
1852 | SASL_FEAT_CHANNEL_BINDING, /* features */
1853 "SHA256", /* glob_context */
1854 &scram_server_mech_new, /* mech_new */
1855 &scram_server_mech_step, /* mech_step */
1856 &scram_server_mech_dispose, /* mech_dispose */
1857 NULL, /* mech_free */
1858 &scram_setpass, /* setpass */
1859 NULL, /* user_query */
1860 NULL, /* idle */
1861 NULL, /* mech avail */
1862 NULL /* spare */
1863 },
1864 #endif
18401865 {
18411866 "SCRAM-SHA-1", /* mech_name */
18421867 0, /* max_ssf */
18451870 | SASL_SEC_NOANONYMOUS
18461871 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
18471872 SASL_FEAT_ALLOWS_PROXY
1873 | SASL_FEAT_SUPPORTS_HTTP
18481874 | SASL_FEAT_CHANNEL_BINDING, /* features */
18491875 "SHA1", /* glob_context */
18501876 &scram_server_mech_new, /* mech_new */
18561882 NULL, /* idle */
18571883 NULL, /* mech avail */
18581884 NULL /* spare */
1859 #ifdef HAVE_SHA256
1860 },
1861 {
1862 "SCRAM-SHA-256", /* mech_name */
1863 0, /* max_ssf */
1864 SASL_SEC_NOPLAINTEXT
1865 | SASL_SEC_NOACTIVE
1866 | SASL_SEC_NOANONYMOUS
1867 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
1868 SASL_FEAT_ALLOWS_PROXY
1869 | SASL_FEAT_CHANNEL_BINDING, /* features */
1870 "SHA256", /* glob_context */
1871 &scram_server_mech_new, /* mech_new */
1872 &scram_server_mech_step, /* mech_step */
1873 &scram_server_mech_dispose, /* mech_dispose */
1874 NULL, /* mech_free */
1875 &scram_setpass, /* setpass */
1876 NULL, /* user_query */
1877 NULL, /* idle */
1878 NULL, /* mech avail */
1879 NULL /* spare */
1880 #endif
18811885 }
18821886 };
18831887
25692573 (unsigned char *)ClientSignature,
25702574 &hash_len) == NULL) {
25712575 params->utils->seterror(params->utils->conn,0,
2572 "HMAC-% call failed", scram_sasl_mech+6);
2576 "HMAC-%s call failed", scram_sasl_mech+6);
25732577 result = SASL_SCRAM_INTERNAL;
25742578 goto cleanup;
25752579 }
28562860
28572861 static sasl_client_plug_t scram_client_plugins[] =
28582862 {
2863 #ifdef HAVE_SHA256
2864 {
2865 "SCRAM-SHA-256", /* mech_name */
2866 0, /* max_ssf */
2867 SASL_SEC_NOPLAINTEXT
2868 | SASL_SEC_NOANONYMOUS
2869 | SASL_SEC_NOACTIVE
2870 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
2871 SASL_FEAT_ALLOWS_PROXY
2872 | SASL_FEAT_SUPPORTS_HTTP
2873 | SASL_FEAT_CHANNEL_BINDING, /* features */
2874 NULL, /* required_prompts */
2875 "SHA256", /* glob_context */
2876 &scram_client_mech_new, /* mech_new */
2877 &scram_client_mech_step, /* mech_step */
2878 &scram_client_mech_dispose, /* mech_dispose */
2879 NULL, /* mech_free */
2880 NULL, /* idle */
2881 NULL, /* spare */
2882 NULL /* spare */
2883 },
2884 #endif
28592885 {
28602886 "SCRAM-SHA-1", /* mech_name */
28612887 0, /* max_ssf */
28642890 | SASL_SEC_NOACTIVE
28652891 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
28662892 SASL_FEAT_ALLOWS_PROXY
2893 | SASL_FEAT_SUPPORTS_HTTP
28672894 | SASL_FEAT_CHANNEL_BINDING, /* features */
28682895 NULL, /* required_prompts */
28692896 "SHA1", /* glob_context */
28742901 NULL, /* idle */
28752902 NULL, /* spare */
28762903 NULL /* spare */
2877 #ifdef HAVE_SHA256
2878 },
2879 {
2880 "SCRAM-SHA-256", /* mech_name */
2881 0, /* max_ssf */
2882 SASL_SEC_NOPLAINTEXT
2883 | SASL_SEC_NOANONYMOUS
2884 | SASL_SEC_NOACTIVE
2885 | SASL_SEC_MUTUAL_AUTH, /* security_flags */
2886 SASL_FEAT_ALLOWS_PROXY
2887 | SASL_FEAT_CHANNEL_BINDING, /* features */
2888 NULL, /* required_prompts */
2889 "SHA256", /* glob_context */
2890 &scram_client_mech_new, /* mech_new */
2891 &scram_client_mech_step, /* mech_step */
2892 &scram_client_mech_dispose, /* mech_dispose */
2893 NULL, /* mech_free */
2894 NULL, /* idle */
2895 NULL, /* spare */
2896 NULL /* spare */
2897 #endif
28982904 }
28992905 };
29002906
106106 /* Size limit of cipher block size */
107107 #define SRP_MAXBLOCKSIZE 16
108108 /* Size limit of SRP buffer */
109 #define SRP_MAXBUFFERSIZE 2147483643
109 #define SRP_MAXBUFFERSIZE 2147483643UL
110110
111111 #define DEFAULT_MDA "SHA-1"
112112
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
1717 #include <arpa/inet.h>
1818 #include <netdb.h>
1919
20 #include <sasl/sasl.h>
21
20 #include <sasl.h>
21
2222 #define SUCCESS 0
2323 #define ERROR 1
2424
44 LTLIBOBJS = @LTLIBOBJS@
55 LTLIBOBJS_FULL = $(addprefix ${top_srcdir}/lib/,${LTLIBOBJS})
66 CRYPTO_COMPAT_OBJS = $(top_builddir)/common/libcrypto_compat.la
7 if AUTH_SASLDB
78 LIBSASLDB_OBJS = $(top_builddir)/sasldb/libsasldb.la
9 else
10 LIBSASLDB_OBJS =
11 endif
812
913 saslauthd_SOURCES = mechanisms.c globals.h \
1014 mechanisms.h auth_dce.c auth_dce.h auth_getpwent.c \
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
121121 krbtf.$(OBJEXT) utils.$(OBJEXT) ipc_unix.$(OBJEXT) \
122122 ipc_doors.$(OBJEXT) saslauthd-main.$(OBJEXT) md5.$(OBJEXT)
123123 saslauthd_OBJECTS = $(am_saslauthd_OBJECTS)
124 @AUTH_SASLDB_TRUE@am__DEPENDENCIES_1 = \
125 @AUTH_SASLDB_TRUE@ $(top_builddir)/sasldb/libsasldb.la
124126 AM_V_lt = $(am__v_lt_@AM_V@)
125127 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
126128 am__v_lt_0 = --silent
385387 AUTOMAKE_OPTIONS = 1.7
386388 LTLIBOBJS_FULL = $(addprefix ${top_srcdir}/lib/,${LTLIBOBJS})
387389 CRYPTO_COMPAT_OBJS = $(top_builddir)/common/libcrypto_compat.la
388 LIBSASLDB_OBJS = $(top_builddir)/sasldb/libsasldb.la
390 @AUTH_SASLDB_FALSE@LIBSASLDB_OBJS =
391 @AUTH_SASLDB_TRUE@LIBSASLDB_OBJS = $(top_builddir)/sasldb/libsasldb.la
389392 saslauthd_SOURCES = mechanisms.c globals.h \
390393 mechanisms.h auth_dce.c auth_dce.h auth_getpwent.c \
391394 auth_getpwent.h auth_krb5.c auth_krb5.h auth_krb4.c \
380380 char *do_auth(const char *_login, const char *password, const char *service, const char *realm) {
381381
382382 struct cache_result lkup_result;
383 char *response;
383 char *response = NULL;
384384 int cached = 0;
385385 char login_buff[MAX_LOGIN_REALM_LEN];
386386 char *login;
437437 }
438438
439439 logger(L_ERR, L_FUNC, "mechanism returned unknown response: %s", auth_mech->name);
440 free(response);
440441 response = strdup("NO internal mechanism failure");
441442
442443 return response;
1717
1818 saslauthd should be started from the system boot scripts when going to
1919 multi-user mode. When running against a protected authentication database
20 (e.g. the shadow mechanism), it must be run as the superuser.
20 (e.g. the shadow mechanism), it must be run as the superuser. Otherwise
21 it is recommended to run daemon unprivileged as saslauth:saslauth,
22 requiring the runtime directory to have root:saslauthd owner. You can do
23 so by following these steps in machines using systemd(1) :
24
25 1. create directory /etc/systemd/system/saslauthd.service.d/
26 2. create file /etc/systemd/system/saslauthd.service.d/user.conf with
27 content
28
29 [Service]
30 User=saslauth
31 Group=saslauth
32
33 3. Reload systemd service file: run “systemctl daemon-reload”
2134
2235 Options
2336 Options named by lower-case letters configure the server itself.
4343 database (e.g. the
4444 .Li shadow
4545 mechanism),
46 it must be run as the superuser.
46 it must be run as the superuser. Otherwise it is recommended to run
47 daemon unprivileged as saslauth:saslauth, requiring the runtime directory
48 to have root:saslauthd owner. You can do so by following
49 these steps in machines using
50 .Xr systemd 1
51 :
52
53 .Bl -enum -compact
54 .It
55 create directory
56 .Pa /etc/systemd/system/saslauthd.service.d/
57 .It
58 create file
59 .Pa /etc/systemd/system/saslauthd.service.d/user.conf
60 with content
61 .Bd -literal
62 [Service]
63 User=saslauth
64 Group=saslauth
65
66 .Ed
67 .It
68 Reload systemd service file: run
69 .Dq systemctl daemon-reload
70 .El
4771 .Ss Options
4872 Options named by lower\-case letters configure the server itself.
4973 Upper\-case options control the behavior of specific authentication
8080 int dump_stat_info = 0;
8181 char *file = NULL;
8282 int file_fd;
83 int shmid = 0;
84 char shmid_buff[256];
8583 char cache_magic[64];
8684 struct stat stat_buff;
8785
136134 }
137135
138136 table_stats = shm_base + 64;
139 (char *)table = (char *)table_stats + 128;
137 table = (void *)((char *)table_stats + 128);
140138
141139 if (dump_stat_info == 0 && dump_user_info == 0)
142140 dump_stat_info = 1;
190190
191191 r = connect(s, (struct sockaddr *) &srvaddr, sizeof(srvaddr));
192192 if (r == -1) {
193 close(s);
193194 perror("connect() ");
194195 return -1;
195196 }
201202 iov[0].iov_base = query;
202203
203204 if (retry_writev(s, iov, 1) == -1) {
204 fprintf(stderr,"write failed\n");
205 return -1;
206 }
205 close(s);
206 fprintf(stderr,"write failed\n");
207 return -1;
208 }
207209 }
208210
209211 /*
212214 * count result
213215 */
214216 if (retry_read(s, &count, sizeof(count)) < (int) sizeof(count)) {
217 close(s);
215218 fprintf(stderr,"size read failed\n");
216 return -1;
219 return -1;
217220 }
218221
219222 count = ntohs(count);
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
111111 dvalue = dbm_fetch(db, dkey);
112112 if (! dvalue.dptr) {
113113 utils->seterror(cntxt, SASL_NOLOG,
114 "user: %s@%s property: %s not found in sasldb",
115 authid, realm, propName);
114 "user: %s@%s property: %s not found in sasldb %s",
115 authid, realm, propName, path);
116116 result = SASL_NOUSER;
117117 goto cleanup;
118118 }
202202 dvalue.dsize = data_len;
203203 if (dbm_store(db, dkey, dvalue, DBM_REPLACE)) {
204204 utils->seterror(conn, 0,
205 "Couldn't update db");
205 "Couldn't update record for %s@%s property %s "
206 "in db %s: %s", authid, realm, propName, path,
207 strerror(errno));
206208 result = SASL_FAIL;
207209 }
208210 } else {
209211 if (dbm_delete(db, dkey)) {
210212 utils->seterror(conn, 0,
211 "Couldn't update db");
213 "Couldn't delete record for %s@%s property %s "
214 "in db %s: %s", authid, realm, propName, path,
215 strerror(errno));
212216 result = SASL_NOUSER;
213217 }
214218 }
0 # Makefile.in generated by automake 1.15 from Makefile.am.
0 # Makefile.in generated by automake 1.15.1 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
3 # Copyright (C) 1994-2017 Free Software Foundation, Inc.
44
55 # This Makefile.in is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
286286 } else {
287287 /* This is suboptimal, but works */
288288 new_list = malloc (strlen(*list_of_mechs) + strlen(m->plug->mech_name) + 2);
289 if (new_list == NULL) {
290 return;
291 }
289292 sprintf (new_list, "%s %s", *list_of_mechs, m->plug->mech_name);
290293 free (*list_of_mechs);
291294 *list_of_mechs = new_list;
314317 } else {
315318 /* This is suboptimal, but works */
316319 new_list = malloc (strlen(*list_of_mechs) + strlen(m->plug->mech_name) + 2);
320 if (new_list == NULL) {
321 return;
322 }
317323 sprintf (new_list, "%s %s", *list_of_mechs, m->plug->mech_name);
318324 free (*list_of_mechs);
319325 *list_of_mechs = new_list;
341347 } else {
342348 /* This is suboptimal, but works */
343349 new_list = malloc (strlen(*list_of_mechs) + strlen(m->name) + 2);
350 if (new_list == NULL) {
351 return;
352 }
344353 sprintf (new_list, "%s %s", *list_of_mechs, m->name);
345354 free (*list_of_mechs);
346355 *list_of_mechs = new_list;
264264 int c;
265265 char *userid;
266266 char *password = NULL;
267 char *verify;
267 char *verify = NULL;
268268 unsigned passlen = 0;
269269 unsigned verifylen;
270270 const char *errstr = NULL;
405405 &verifylen);
406406 if (passlen != verifylen
407407 || memcmp(password, verify, verifylen)) {
408 free(verify);
409 free(password);
408410 fprintf(stderr, "%s: passwords don't match; aborting\n",
409411 progname);
410412 exit(-(SASL_BADPARAM));
411413 }
414 free(verify);
412415 }
413416 }
414417
116116 /* Windows calls these functions something else
117117 */
118118 #define strcasecmp stricmp
119 #if defined (_MSC_VER) && (_MSC_VER < 1900)
119120 #define snprintf _snprintf
121 #endif
120122 #define strncasecmp strnicmp
121123
122124 #define MAXHOSTNAMELEN 1024