diff -Nru gsasl-2.0.1/build-aux/announce-gen gsasl-2.2.0/build-aux/announce-gen --- gsasl-2.0.1/build-aux/announce-gen 2022-07-15 10:50:15.000000000 -0500 +++ gsasl-2.2.0/build-aux/announce-gen 2022-09-03 09:51:31.000000000 -0500 @@ -35,7 +35,7 @@ eval 'exec perl -wSx "$0" "$@"' if 0; -my $VERSION = '2022-03-14 10:08'; # UTC +my $VERSION = '2022-07-10 01:47'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -445,11 +445,15 @@ my @tool_list = split ',', $bootstrap_tools if $bootstrap_tools; - grep (/^gnulib$/, @tool_list) ^ defined $gnulib_version + grep (/^gnulib$/, @tool_list) && ! defined $gnulib_version and (warn "when specifying gnulib as a tool, you must also specify\n" . "--gnulib-version=V, where V is the result of running git describe\n" . "in the gnulib source directory.\n"), $fail = 1; + ! grep (/^gnulib$/, @tool_list) && defined $gnulib_version + and (warn "with --gnulib-version=V you must use --bootstrap-tools=...\n" + . "including gnulib in that list"), $fail = 1; + !$release_type || exists $valid_release_types{$release_type} or (warn "'$release_type': invalid release type\n"), $fail = 1; @@ -498,7 +502,7 @@ { # When there's only one tarball and one URL, use a more concise form. my $m = "$url_dir_list[0]/$tarballs[0]"; - print "Here are the compressed sources and a GPG detached signature[*]:\n" + print "Here are the compressed sources and a GPG detached signature:\n" . " $m\n" . " $m.sig\n\n"; } @@ -510,7 +514,7 @@ . "please tell bug-gnulib\@gnu.org)", @url_dir_list, %size, $xd); my @sig_files = map { "$_.sig" } @tarballs; - print_locations ("GPG detached signatures[*]", @url_dir_list, %size, + print_locations ("GPG detached signatures", @url_dir_list, %size, @sig_files); } @@ -535,14 +539,29 @@ and print_checksums (@sizable); print < .prev-version). -case $(printf "$prev_ver\n$ver\n"|sort -V -u|tr '\n' ':') in +case $(printf "%s\n%s\n" "$prev_ver" "$ver"|sort -V -u|tr '\n' ':') in "$prev_ver:$ver:") ;; *) die "invalid version: $ver (<= $prev_ver)";; esac @@ -165,7 +165,7 @@ -e 'print $.==3 ? "$pfx $ver ($today) [$type]\n" : $_' \ NEWS || die 'failed to update NEWS' -printf "version $ver\n\n* NEWS: Record release date.\n" \ +printf "version %s\n\n* NEWS: Record release date.\n" "$ver" \ | git commit -F - -a || die 'git commit failed' git tag -s -m "$pkg $ver" v$ver HEAD || die 'git tag failed' diff -Nru gsasl-2.0.1/build-aux/gendocs.sh gsasl-2.2.0/build-aux/gendocs.sh --- gsasl-2.0.1/build-aux/gendocs.sh 2022-07-15 10:50:15.000000000 -0500 +++ gsasl-2.2.0/build-aux/gendocs.sh 2022-09-03 09:51:31.000000000 -0500 @@ -40,15 +40,15 @@ scripturl="https://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/gendocs.sh" templateurl="https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/gendocs_template" -: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} -: ${MAKEINFO="makeinfo"} -: ${TEXI2DVI="texi2dvi"} -: ${DOCBOOK2HTML="docbook2html"} -: ${DOCBOOK2PDF="docbook2pdf"} -: ${DOCBOOK2TXT="docbook2txt"} -: ${GENDOCS_TEMPLATE_DIR="."} -: ${PERL='perl'} -: ${TEXI2HTML="texi2html"} +: "${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}" +: "${MAKEINFO="makeinfo"}" +: "${TEXI2DVI="texi2dvi"}" +: "${DOCBOOK2HTML="docbook2html"}" +: "${DOCBOOK2PDF="docbook2pdf"}" +: "${DOCBOOK2TXT="docbook2txt"}" +: "${GENDOCS_TEMPLATE_DIR="."}" +: "${PERL="perl"}" +: "${TEXI2HTML="texi2html"}" unset CDPATH unset use_texi2html @@ -304,7 +304,7 @@ # if $generate_tex; then cmd="$SETLANG $TEXI2DVI $dirargs $texarg \"$srcfile\"" - printf "\nGenerating dvi... ($cmd)\n" + printf "\nGenerating dvi... (%s)\n" "$cmd" eval "$cmd" # compress/finish dvi: gzip -f -9 $PACKAGE.dvi @@ -313,7 +313,7 @@ ls -l "$outdir/$PACKAGE.dvi.gz" cmd="$SETLANG $TEXI2DVI --pdf $dirargs $texarg \"$srcfile\"" - printf "\nGenerating pdf... ($cmd)\n" + printf "\nGenerating pdf... (%s)\n" "$cmd" eval "$cmd" pdf_size=`calcsize $PACKAGE.pdf` mv $PACKAGE.pdf "$outdir/" @@ -324,7 +324,7 @@ if $generate_ascii; then opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating ascii... ($cmd)\n" + printf "\nGenerating ascii... (%s)\n" "$cmd" eval "$cmd" ascii_size=`calcsize $PACKAGE.txt` gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" @@ -341,7 +341,7 @@ { opt="--split=$1 --node-files $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" - printf "\nGenerating html by $1... ($cmd)\n" + printf "\nGenerating html by %s... (%s)\n" "$1" "$cmd" eval "$cmd" split_html_dir=$PACKAGE.html ( @@ -359,7 +359,7 @@ if test -z "$use_texi2html"; then opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating monolithic html... ($cmd)\n" + printf "\nGenerating monolithic html... (%s)\n" "$cmd" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` @@ -380,7 +380,7 @@ # opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating html by $split... ($cmd)\n" + printf "\nGenerating html by %s... (%s)\n" "$split" "$cmd" eval "$cmd" split_html_dir=$PACKAGE.html copy_images $split_html_dir/ $split_html_dir/*.html @@ -398,7 +398,7 @@ else # use texi2html: opt="--output $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" - printf "\nGenerating monolithic html with texi2html... ($cmd)\n" + printf "\nGenerating monolithic html with texi2html... (%s)\n" "$cmd" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` @@ -428,7 +428,7 @@ if test -n "$docbook"; then opt="-o - --docbook $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" - printf "\nGenerating docbook XML... ($cmd)\n" + printf "\nGenerating docbook XML... (%s)\n" "$cmd" eval "$cmd" docbook_xml_size=`calcsize $PACKAGE-db.xml` gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" @@ -438,7 +438,7 @@ split_html_db_dir=html_node_db opt="$commonarg -o $split_html_db_dir" cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook HTML... ($cmd)\n" + printf "\nGenerating docbook HTML... (%s)\n" "$cmd" eval "$cmd" ( cd ${split_html_db_dir} || exit 1 @@ -451,20 +451,20 @@ rmdir ${split_html_db_dir} cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook ASCII... ($cmd)\n" + printf "\nGenerating docbook ASCII... (%s)\n" "$cmd" eval "$cmd" docbook_ascii_size=`calcsize $PACKAGE-db.txt` mv $PACKAGE-db.txt "$outdir/" cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook PDF... ($cmd)\n" + printf "\nGenerating docbook PDF... (%s)\n" "$cmd" eval "$cmd" docbook_pdf_size=`calcsize $PACKAGE-db.pdf` mv $PACKAGE-db.pdf "$outdir/" fi # -printf "\nMaking index.html for $PACKAGE...\n" +printf "\nMaking index.html for %s...\n" "$PACKAGE" if test -z "$use_texi2html"; then CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" diff -Nru gsasl-2.0.1/build-aux/git-version-gen gsasl-2.2.0/build-aux/git-version-gen --- gsasl-2.0.1/build-aux/git-version-gen 2022-07-15 10:50:15.000000000 -0500 +++ gsasl-2.2.0/build-aux/git-version-gen 2022-09-03 09:51:31.000000000 -0500 @@ -1,6 +1,6 @@ #!/bin/sh # Print a version string. -scriptversion=2022-01-27.18; # UTC +scriptversion=2022-07-09.08; # UTC # Copyright (C) 2007-2022 Free Software Foundation, Inc. # @@ -94,7 +94,7 @@ --help display this help and exit --version output version information and exit -Running without arguments will suffice in most cases." +Send patches and bug reports to ." prefix=v fallback= diff -Nru gsasl-2.0.1/build-aux/pmccabe2html gsasl-2.2.0/build-aux/pmccabe2html --- gsasl-2.0.1/build-aux/pmccabe2html 2022-07-15 10:50:15.000000000 -0500 +++ gsasl-2.2.0/build-aux/pmccabe2html 2022-09-03 09:51:32.000000000 -0500 @@ -21,12 +21,12 @@ # Typical Invocation is from a Makefile.am: # -# CYCLO_SOURCES = ${top_srcdir}/src/*.[ch] +# CYCLO_SRCS = ${top_srcdir}/src/*.[ch] # -# cyclo-$(PACKAGE).html: $(CYCLO_SOURCES) -# $(PMCCABE) $(CYCLO_SOURCES) \ -# | sort -nr \ -# | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ +# cyclo-$(PACKAGE).html: $(CYCLO_SRCS) +# $(AM_V_GEN)$(PMCCABE) $(CYCLO_SRCS) \ +# | LC_ALL=C sort -nr \ +# | LC_ALL=C $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ # -v lang=html -v name="$(PACKAGE_NAME)" \ # -v vcurl="https://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \ # -v url="https://www.gnu.org/software/$(PACKAGE)/" \ diff -Nru gsasl-2.0.1/cfg.mk gsasl-2.2.0/cfg.mk --- gsasl-2.0.1/cfg.mk 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/cfg.mk 2022-08-16 11:38:12.000000000 -0500 @@ -18,7 +18,7 @@ manual_title = Simple Authentication and Security Layer gendocs_options_ = -I ../examples -old_NEWS_hash = 7d469c47e1f3e5e51294099326eee40b +old_NEWS_hash = 5c2f43592001f34740d20001e95f8d86 bootstrap-tools = autoconf,automake,libtoolize,gnulib,makeinfo,help2man,gperf,gengetopt,gtkdocize,tar,gzip @@ -30,8 +30,8 @@ review-tag ?= $(shell git describe --abbrev=0) review-diff: git diff $(review-tag).. \ - | grep -v -e '^index' -e '^deleted file mode' -e '^diff --git' \ - | filterdiff -p 1 -x 'gl/*' -x 'm4/*' -x 'gltests/*' -x 'lib/build-aux/*' -x 'lib/gl*' -x 'lib/m4/*' -x 'lib/gltests/*' -x 'po/*' -x 'lib/po/*' -x 'maint.mk' -x 'lib/maint.mk' -x '.gitignore' -x '.x-sc*' -x 'doc/specification/*' -x ChangeLog -x GNUmakefile -x ABOUT-NLS -x lib/ABOUT-NLS \ + | grep -v -e '^index' -e '^deleted file mode' -e '^new file mode' \ + | filterdiff -p 1 -x 'gl/*' -x 'm4/*' -x 'gltests/*' -x 'lib/gl*' -x 'lib/m4/*' -x 'po/*' -x 'maint.mk' -x '.gitignore' -x '.x-sc*' -x ChangeLog -x GNUmakefile -x ABOUT-NLS -x .prev-version -x .gitlab-ci.yml -x autogen.sh -x autopull.sh -x bootstrap -x bootstrap-funclib.sh \ | less # syntax-check @@ -49,3 +49,9 @@ exclude_file_name_regexp--sc_trailing_blank = ^gl/0001-Fix-export-symbols-and-export-symbols-regex-support-.patch|build-aux/git2cl|doc/gsasl-[2a-z]*.(eps|png|pdf|dia)|doc/doxygen/Doxyfile.*|gl/doc/gendocs_template.diff|gl/top/README-release.diff$$ exclude_file_name_regexp--sc_space_tab = ^doc/gsasl-controlflow.pdf$$ exclude_file_name_regexp--sc_unmarked_diagnostics = ^examples/.*|src/gsasl.c$$ + +# maint.mk's public-submodule-commit breaks on shallow gnulib +# https://lists.gnu.org/archive/html/bug-gnulib/2022-08/msg00040.html +# so let's disable it - XXX FIXME let's revisit this later +submodule-checks = +gl_public_submodule_commit = diff -Nru gsasl-2.0.1/ChangeLog gsasl-2.2.0/ChangeLog --- gsasl-2.0.1/ChangeLog 2022-07-15 10:56:31.000000000 -0500 +++ gsasl-2.2.0/ChangeLog 2022-09-03 10:02:46.000000000 -0500 @@ -1,3 +1,223 @@ +2022-09-03 Simon Josefsson + + * NEWS: version 2.2.0 * NEWS: Record release date. + +2022-09-03 Simon Josefsson + + * .gitignore, .gitlab-ci.yml: cicd: Fix coverage URL. + +2022-08-19 Mark Esler + + * lib/cram-md5/server.c: cram-md5: free challenge Signed-off-by: Simon Josefsson + +2022-09-03 Simon Josefsson + + * NEWS: Doc fix. + +2022-09-03 Simon Josefsson + + * .gitlab-ci.yml: cicd: Combine mailutils/dovecot checks. + +2022-09-03 Simon Josefsson + + * .gitlab-ci.yml: cicd: Add ASan/UBSan check. Do distcheck test on + Trisquel10. Use lcov 1.16. + +2022-09-03 Simon Josefsson + + * src/gsasl.c: Pacify gcc12 + -Werror=analyzer-use-of-uninitialized-value. + +2022-09-02 Simon Josefsson + + * tests/gsasl-dovecot-gssapi.sh: Don't hardcode dovecot gssapi + keytype (des3 disabled on f36). + +2022-09-02 Simon Josefsson + + * lib/gs2/client.c, lib/gssapi/client.c: GSSAPI/GS2 client: Sanity + check GSS-API library returned token. + +2022-09-02 Simon Josefsson + + * tests/external.c: Improve EXTERNAL self-checks. + +2022-09-02 Simon Josefsson + + * lib/digest-md5/test-parser.c: Fix mem leaks, and test free.h + functions. + +2022-09-02 Simon Josefsson + + * lib/digest-md5/getsubopt.c: Backport fix from glibc/gnulib. https://sourceware.org/bugzilla/show_bug.cgi?id=391 + +2022-08-18 Simon Josefsson + + * .gitlab-ci.yml, NEWS, src/gsasl.c, src/imap.c, tests/Makefile.am, + tests/gsasl-dovecot-gssapi.sh, tests/gsasl-mailutils-cram.sh, + tests/gsasl-mailutils-tls.sh: Fix GnuTLS build error when + GNUTLS_CB_TLS_EXPORTER is missing. Reported by "Jose E. Marchesi" in + + .Also add gsasl-mailutils-tls.sh to check that TLS builds are + working, and fix memory leak discovered when adding self-check. + +2022-08-16 Simon Josefsson + + * .prev-version, NEWS, cfg.mk: maint: post-release administrivia * NEWS: Add header line for next release. * .prev-version: Record previous version. * cfg.mk (old_NEWS_hash): Auto-update. + +2022-08-16 Simon Josefsson + + * NEWS: version 2.1.1 * NEWS: Record release date. + +2022-08-16 Simon Josefsson + + * NEWS, cfg.mk: Add NEWS entries. + +2022-08-16 Simon Josefsson + + * .gitignore, .gitlab-ci.yml: More GSSAPI CICD's. + +2022-08-16 Simon Josefsson + + * Makefile.am: Use AM_DISTCHECK_CONFIGURE_FLAGS. + +2022-08-16 Simon Josefsson + + * src/smtp.c: Support 250-AUTH lines. Bug introduced in 2.1.0, reported by Manvendra Bhangui + in + https://lists.gnu.org/archive/html/help-gsasl/2022-08/msg00007.html + +2022-08-16 Simon Josefsson + + * autogen.sh, autopull.sh, bootstrap, bootstrap-funclib.sh: Sync + bootstrap. + +2022-08-16 Simon Josefsson + + * gnulib: Update gnulib files. + +2022-08-16 Simon Josefsson + + * .gitlab-ci.yml, tests/Makefile.am, + tests/gsasl-mailutils-gs2krb5-gssapi.sh: Add GS2-KRB5/GSSAPI + self-check against GNU MailUtils imap4d. + +2022-08-16 Simon Josefsson + + * .gitignore, doc/gsasl.texi: Doc fixes; mention libgssglue and use + https URLs. + +2022-08-16 Simon Josefsson + + * doc/Makefile.am, doc/gsasl.texi: Use gdoc idiom from other + packages. + +2022-08-16 Simon Josefsson + + * src/gsasl.c: Fix problem introduced by + fe54b2f29f6d718462b231602d5dec5952febf05. + +2022-08-16 Simon Josefsson + + * .gitignore, .gitlab-ci.yml, tests/Makefile.am, tests/simple.c, + tests/version.c: Add more robust tests/version.c. + +2022-08-16 Simon Josefsson + + * doc/cyclo/Makefile.am: Sync cyclo Makefile.am snippet from gnulib. + +2022-08-16 Simon Josefsson + + * cfg.mk: Support shallow gnulib directories. + +2022-08-06 Simon Josefsson + + * .gitignore, configure.ac, doc/reference/version.xml.in: Drop + GTK-DOC version.xml.in. + +2022-08-05 Simon Josefsson + + * .prev-version, NEWS, cfg.mk: maint: post-release administrivia * NEWS: Add header line for next release. * .prev-version: Record previous version. * cfg.mk (old_NEWS_hash): Auto-update. + +2022-08-05 Simon Josefsson + + * NEWS: version 2.1.0 * NEWS: Record release date. + +2022-08-05 Simon Josefsson + + * .gitlab-ci.yml, tests/gsasl-dovecot-gssapi.sh, tests/simple.c: Fix + problems found during 'make release'. + +2022-08-05 Simon Josefsson + + * .gitlab-ci.yml, src/gsasl.c: Indent code. + +2022-08-05 Simon Josefsson + + * src/gsasl.c, src/imap.c, src/smtp.c: Fix mem leaks found by new + tests. + +2022-08-05 Simon Josefsson + + * lib/openid20/server.c: Pacify old valgrind wrt + strlen(strdup(foo)). + +2022-08-05 Simon Josefsson + + * tests/Makefile.am, tests/gsasl-scram-pbkdf2.sh: Adapt + gsasl-scram-pbkdf2 to new *.sh style (no valgrind, CRLF robust). + +2022-08-05 Simon Josefsson + + * .gitlab-ci.yml, NEWS, tests/Makefile.am, + tests/gsasl-dovecot-gssapi.sh, tests/gsasl-mailutils-cram.sh: Add + gsasl-dovecot-gssapi and gsasl-mailutils-cram. + +2022-08-02 Simon Josefsson + + * src/gsasl.c: gsasl: Fix CB logic. + +2022-07-31 Simon Josefsson + + * .gitignore, NEWS, lib/scram/client.c, lib/scram/server.c, + tests/Makefile.am, tests/scram-exporter.c, + tests/scram-incremental.c, tests/scram-nopasswd.c, + tests/scram-sha256.c, tests/scram.c, tests/scramplus.c: SCRAM: + Support tls-exporter. + +2022-07-31 Simon Josefsson + + * NEWS, configure.ac, src/callbacks.c, src/gsasl.c, src/internal.h: + gsasl: Support tls-exporter if GnuTLS has it (>= 3.7.2.). + +2022-07-31 Simon Josefsson + + * NEWS, doc/gsasl.texi, lib/src/error.c, lib/src/gsasl.h, + lib/src/internal.h, lib/src/property.c, lib/src/xfinish.c, + tests/errors.c: lib: Support tls-exporter channel bindings. + +2022-07-31 Simon Josefsson + + * NEWS, lib/scram/client.c, lib/scram/parser.c, lib/scram/server.c: + SCRAM: Fix mem leaks caught by scram-incremental. + +2022-07-31 Simon Josefsson + + * .gitignore, tests/Makefile.am, tests/scram-incremental.c: tests: + Add scram-incremental. + +2022-07-31 Simon Josefsson + + * .gitignore: Relax .gitignore. + +2022-07-15 Simon Josefsson + + * gnulib: Update gnulib. + +2022-07-15 Simon Josefsson + + * .prev-version, NEWS, cfg.mk: maint: post-release administrivia * NEWS: Add header line for next release. * .prev-version: Record previous version. * cfg.mk (old_NEWS_hash): Auto-update. + 2022-07-15 Simon Josefsson * NEWS: version 2.0.1 * NEWS: Record release date. diff -Nru gsasl-2.0.1/config.h.in gsasl-2.2.0/config.h.in --- gsasl-2.0.1/config.h.in 2022-07-15 10:51:15.000000000 -0500 +++ gsasl-2.2.0/config.h.in 2022-09-03 09:52:52.000000000 -0500 @@ -446,6 +446,10 @@ don't. */ #undef HAVE_DECL_GETNAMEINFO +/* Define to 1 if you have the declaration of `GNUTLS_CB_TLS_EXPORTER', and to + 0 if you don't. */ +#undef HAVE_DECL_GNUTLS_CB_TLS_EXPORTER + /* Define to 1 if you have the declaration of `GSS_C_NT_HOSTBASED_SERVICE', and to 0 if you don't. */ #undef HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE @@ -803,6 +807,9 @@ terminated. */ #undef HAVE_SNPRINTF_TRUNCATION_C99 +/* Define to 1 if you have the header file. */ +#undef HAVE_STDCKDINT_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H diff -Nru gsasl-2.0.1/configure gsasl-2.2.0/configure --- gsasl-2.0.1/configure 2022-07-15 10:53:27.000000000 -0500 +++ gsasl-2.2.0/configure 2022-09-03 09:59:07.000000000 -0500 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for GNU SASL 2.0.1. +# Generated by GNU Autoconf 2.71 for GNU SASL 2.2.0. # # Report bugs to . # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='GNU SASL' PACKAGE_TARNAME='gsasl' -PACKAGE_VERSION='2.0.1' -PACKAGE_STRING='GNU SASL 2.0.1' +PACKAGE_VERSION='2.2.0' +PACKAGE_STRING='GNU SASL 2.2.0' PACKAGE_BUGREPORT='bug-gsasl@gnu.org' PACKAGE_URL='https://www.gnu.org/software/gsasl/' @@ -852,6 +852,7 @@ GL_LGL_GNULIB_FSTATAT GL_LGL_GNULIB_FSTAT GL_LGL_GNULIB_FCHMODAT +GL_LGL_GNULIB_CHMOD GL_COND_OBJ_FPURGE_FALSE GL_COND_OBJ_FPURGE_TRUE GL_LGL_GNULIB_MDA_TEMPNAM @@ -1181,6 +1182,9 @@ GL_GENERATE_STDDEF_H_FALSE GL_GENERATE_STDDEF_H_TRUE STDDEF_H +GL_GENERATE_STDCKDINT_H_FALSE +GL_GENERATE_STDCKDINT_H_TRUE +STDCKDINT_H GL_GENERATE_STDBOOL_H_FALSE GL_GENERATE_STDBOOL_H_TRUE STDBOOL_H @@ -1606,6 +1610,7 @@ GL_GNULIB_FSTATAT GL_GNULIB_FSTAT GL_GNULIB_FCHMODAT +GL_GNULIB_CHMOD WINDOWS_64_BIT_ST_SIZE WINDOWS_STAT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H @@ -1624,6 +1629,7 @@ REPLACE_FSTATAT REPLACE_FSTAT REPLACE_FCHMODAT +REPLACE_CHMOD HAVE_UTIMENSAT HAVE_MKNODAT HAVE_MKNOD @@ -2999,7 +3005,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU SASL 2.0.1 to adapt to many kinds of systems. +\`configure' configures GNU SASL 2.2.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -3070,7 +3076,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU SASL 2.0.1:";; + short | recursive ) echo "Configuration of GNU SASL 2.2.0:";; esac cat <<\_ACEOF @@ -3275,7 +3281,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU SASL configure 2.0.1 +GNU SASL configure 2.2.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -3937,7 +3943,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU SASL $as_me 2.0.1, which was +It was created by GNU SASL $as_me 2.2.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4563,6 +4569,7 @@ as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H" as_fn_append ac_func_c_list " snprintf HAVE_SNPRINTF" as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" +as_fn_append ac_header_c_list " stdckdint.h stdckdint_h HAVE_STDCKDINT_H" as_fn_append ac_header_c_list " sys/uio.h sys_uio_h HAVE_SYS_UIO_H" as_fn_append ac_func_c_list " vasnprintf HAVE_VASNPRINTF" as_fn_append ac_header_c_list " crtdefs.h crtdefs_h HAVE_CRTDEFS_H" @@ -5285,7 +5292,7 @@ # Define the identity of the package. PACKAGE='gsasl' - VERSION='2.0.1' + VERSION='2.2.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -7739,6 +7746,7 @@ + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if test ${ac_cv_sys_largefile_source+y} @@ -7817,6 +7825,7 @@ ;; esac + # Check whether --enable-largefile was given. if test ${enable_largefile+y} then : @@ -8325,6 +8334,7 @@ # Code from module stdbool: + # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: @@ -8472,6 +8482,7 @@ # Code from module std-gnu11: # Code from module stdalign: # Code from module stdbool: + # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: @@ -25532,6 +25543,16 @@ fi + ac_fn_check_decl "$LINENO" "GNUTLS_CB_TLS_EXPORTER" "ac_cv_have_decl_GNUTLS_CB_TLS_EXPORTER" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_GNUTLS_CB_TLS_EXPORTER" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_GNUTLS_CB_TLS_EXPORTER $ac_have_decl" >>confdefs.h + LIBS="$save_LIBS" fi @@ -28793,6 +28814,7 @@ HAVE_MKNOD=1; HAVE_MKNODAT=1; HAVE_UTIMENSAT=1; + REPLACE_CHMOD=0; REPLACE_FCHMODAT=0; REPLACE_FSTAT=0; REPLACE_FSTATAT=0; @@ -28986,6 +29008,10 @@ + GL_GNULIB_CHMOD=0 + + + GL_GNULIB_FCHMODAT=0 @@ -30445,8 +30471,8 @@ LIBS=$save_LIBS test $gl_pthread_api = yes && break done - echo "$as_me:30448: gl_pthread_api=$gl_pthread_api" >&5 - echo "$as_me:30449: LIBPTHREAD=$LIBPTHREAD" >&5 + echo "$as_me:30474: gl_pthread_api=$gl_pthread_api" >&5 + echo "$as_me:30475: LIBPTHREAD=$LIBPTHREAD" >&5 gl_pthread_in_glibc=no # On Linux with glibc >= 2.34, libc contains the fully functional @@ -30472,7 +30498,7 @@ ;; esac - echo "$as_me:30475: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5 + echo "$as_me:30501: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5 # Test for libpthread by looking for pthread_kill. (Not pthread_self, # since it is defined as a macro on OSF/1.) @@ -30626,7 +30652,7 @@ fi fi - echo "$as_me:30629: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5 + echo "$as_me:30655: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5 printf %s "checking whether POSIX threads API is available... " >&6; } @@ -31298,6 +31324,20 @@ fi + if test "$am_func_iconv" = yes; then + if test -n "$LIBICONV"; then + am_cv_func_iconv_summary='yes, in libiconv' + else + am_cv_func_iconv_summary='yes, in libc' + fi + else + if test "$am_cv_func_iconv" = yes; then + am_cv_func_iconv_summary='not working, consider installing GNU libiconv' + else + am_cv_func_iconv_summary='no, consider installing GNU libiconv' + fi + fi + GL_GNULIB_ICONV=0 @@ -35333,77 +35373,85 @@ printf "%s\n" "#define HAVE_DECL_SNPRINTF $ac_have_decl" >>confdefs.h -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -printf %s "checking for stdbool.h that conforms to C99... " >&6; } +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } if test ${ac_cv_header_stdbool_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include - #include + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ - #ifdef __cplusplus - typedef bool Bool; - #else - typedef _Bool Bool; - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif + #if !true + #error "'true' is not true" #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; - struct s { Bool s: 1; Bool t; bool u: 1; bool v; } s; + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html */ - Bool q = true; - Bool *pq = &q; - bool *qq = &q; + bool p = true; + bool *pp = &p; int main (void) { - bool e = &s; - *pq |= q; *pq |= ! q; - *qq |= q; *qq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq + !qq); + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); ; return 0; @@ -35419,14 +35467,6 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } - ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes -then : - -printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h - - -fi @@ -46660,6 +46700,45 @@ + if test $ac_cv_header_stdckdint_h = yes; then + GL_GENERATE_STDCKDINT_H=false + else + GL_GENERATE_STDCKDINT_H=true + fi + + + + + case "$GL_GENERATE_STDCKDINT_H" in + false) STDCKDINT_H='' ;; + true) + if test -z "$STDCKDINT_H"; then + STDCKDINT_H="${gl_source_base_prefix}stdckdint.h" + fi + ;; + *) echo "*** GL_GENERATE_STDCKDINT_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDCKDINT_H; then + GL_GENERATE_STDCKDINT_H_TRUE= + GL_GENERATE_STDCKDINT_H_FALSE='#' +else + GL_GENERATE_STDCKDINT_H_TRUE='#' + GL_GENERATE_STDCKDINT_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDCKDINT_H_TRUE}" && test -z "${GL_GENERATE_STDCKDINT_H_FALSE}"; then + GL_GENERATE_STDCKDINT_H_TRUE='#' + GL_GENERATE_STDCKDINT_H_FALSE='#' + fi + + + + + + + @@ -49116,6 +49195,10 @@ + GL_LGL_GNULIB_CHMOD=0 + + + GL_LGL_GNULIB_FCHMODAT=0 @@ -56505,6 +56588,45 @@ + if test $ac_cv_header_stdckdint_h = yes; then + GL_GENERATE_STDCKDINT_H=false + else + GL_GENERATE_STDCKDINT_H=true + fi + + + + + case "$GL_GENERATE_STDCKDINT_H" in + false) STDCKDINT_H='' ;; + true) + if test -z "$STDCKDINT_H"; then + STDCKDINT_H="${gl_source_base_prefix}stdckdint.h" + fi + ;; + *) echo "*** GL_GENERATE_STDCKDINT_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDCKDINT_H; then + GL_GENERATE_STDCKDINT_H_TRUE= + GL_GENERATE_STDCKDINT_H_FALSE='#' +else + GL_GENERATE_STDCKDINT_H_TRUE='#' + GL_GENERATE_STDCKDINT_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDCKDINT_H_TRUE}" && test -z "${GL_GENERATE_STDCKDINT_H_FALSE}"; then + GL_GENERATE_STDCKDINT_H_TRUE='#' + GL_GENERATE_STDCKDINT_H_FALSE='#' + fi + + + + + + + @@ -58392,7 +58514,7 @@ done fi -ac_config_files="$ac_config_files Makefile doc/Makefile doc/cyclo/Makefile doc/doxygen/Doxyfile doc/reference/Makefile doc/reference/version.xml examples/Makefile examples/openid20/Makefile examples/saml20/Makefile gl/Makefile gltests/Makefile lib/Makefile lib/anonymous/Makefile lib/cram-md5/Makefile lib/digest-md5/Makefile lib/external/Makefile lib/gl/Makefile lib/gs2/Makefile lib/gssapi/Makefile lib/libgsasl.pc lib/login/Makefile lib/ntlm/Makefile lib/openid20/Makefile lib/plain/Makefile lib/saml20/Makefile lib/scram/Makefile lib/securid/Makefile lib/src/Makefile lib/src/gsasl-version.h po/Makefile.in src/Makefile tests/Makefile" +ac_config_files="$ac_config_files Makefile doc/Makefile doc/cyclo/Makefile doc/doxygen/Doxyfile doc/reference/Makefile examples/Makefile examples/openid20/Makefile examples/saml20/Makefile gl/Makefile gltests/Makefile lib/Makefile lib/anonymous/Makefile lib/cram-md5/Makefile lib/digest-md5/Makefile lib/external/Makefile lib/gl/Makefile lib/gs2/Makefile lib/gssapi/Makefile lib/libgsasl.pc lib/login/Makefile lib/ntlm/Makefile lib/openid20/Makefile lib/plain/Makefile lib/saml20/Makefile lib/scram/Makefile lib/securid/Makefile lib/src/Makefile lib/src/gsasl-version.h po/Makefile.in src/Makefile tests/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -59133,7 +59255,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU SASL $as_me 2.0.1, which was +This file was extended by GNU SASL $as_me 2.2.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -59207,7 +59329,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -GNU SASL config.status 2.0.1 +GNU SASL config.status 2.2.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -59639,7 +59761,6 @@ "doc/cyclo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cyclo/Makefile" ;; "doc/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Doxyfile" ;; "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;; - "doc/reference/version.xml") CONFIG_FILES="$CONFIG_FILES doc/reference/version.xml" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "examples/openid20/Makefile") CONFIG_FILES="$CONFIG_FILES examples/openid20/Makefile" ;; "examples/saml20/Makefile") CONFIG_FILES="$CONFIG_FILES examples/saml20/Makefile" ;; diff -Nru gsasl-2.0.1/configure.ac gsasl-2.2.0/configure.ac --- gsasl-2.0.1/configure.ac 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/configure.ac 2022-08-19 03:39:48.000000000 -0500 @@ -437,6 +437,7 @@ save_LIBS="$LIBS" LIBS="$LIBS $LIBGNUTLS" AC_CHECK_FUNCS([gnutls_session_channel_binding]) + AC_CHECK_DECLS([GNUTLS_CB_TLS_EXPORTER], [], [], [[#include ]]) LIBS="$save_LIBS" fi @@ -515,7 +516,6 @@ doc/cyclo/Makefile doc/doxygen/Doxyfile doc/reference/Makefile - doc/reference/version.xml examples/Makefile examples/openid20/Makefile examples/saml20/Makefile diff -Nru gsasl-2.0.1/debian/changelog gsasl-2.2.0/debian/changelog --- gsasl-2.0.1/debian/changelog 2022-08-15 12:03:10.000000000 -0500 +++ gsasl-2.2.0/debian/changelog 2022-09-19 16:32:45.000000000 -0500 @@ -1,3 +1,23 @@ +gsasl (2.2.0-1ubuntu1) kinetic; urgency=medium + + * Merge from Debian unstable (LP: 1989065). Remaining changes: + - Keep using libkrb5, to avoid a component-mismatch + + -- Mark Esler Sat, 19 Sep 2022 16:32:45 -0500 + +gsasl (2.2.0-1) unstable; urgency=medium + + * New upstream version 2.2.0 + * Use improved upstream self-checks for debci. + + -- Simon Josefsson Sat, 03 Sep 2022 17:30:01 +0200 + +gsasl (2.0.1-4ubuntu1) kinetic; urgency=medium + + * Keep using libkrb5, to avoid a component-mismatch (LP: 1972866) + + -- Lukas Märdian Thu, 25 Aug 2022 17:45:18 +0200 + gsasl (2.0.1-4) unstable; urgency=medium * Use libgssglue instead of libkrb5 for GSS-API. @@ -527,7 +547,6 @@ -- Ryan M. Golbeck Sun, 16 Mar 2003 11:11:11 -0500 gsasl (0.0.5-3) unstable; urgency=low - * Fixed permissions on fixrpath (closes: #183663). -- Ryan M. Golbeck Thu, 13 Mar 2003 13:55:12 -0500 diff -Nru gsasl-2.0.1/debian/control gsasl-2.2.0/debian/control --- gsasl-2.0.1/debian/control 2022-08-15 12:03:10.000000000 -0500 +++ gsasl-2.2.0/debian/control 2022-09-03 16:44:40.000000000 -0500 @@ -1,7 +1,8 @@ Source: gsasl Section: devel Priority: optional -Maintainer: Debian XMPP Maintainers +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian XMPP Maintainers Uploaders: Thadeu Lima de Souza Cascardo , Jorge Salamero Sanz , Simon Josefsson @@ -9,8 +10,8 @@ gettext, help2man, libgnutls28-dev, - libgssglue-dev, libidn11-dev, + libkrb5-dev, libntlm0-dev, pkg-config, texinfo, @@ -88,8 +89,8 @@ Breaks: libgsasl7-dev (<< 1.10.0-2) Replaces: libgsasl1-dev, libgsasl7-dev (<< 1.10.0-2) Provides: libgsasl7-dev -Depends: libgsasl18 (= ${binary:Version}), - libgssglue-dev, +Depends: krb5-multidev, + libgsasl18 (= ${binary:Version}), libidn11-dev, libntlm0-dev, pkg-config, diff -Nru gsasl-2.0.1/debian/rules gsasl-2.2.0/debian/rules --- gsasl-2.0.1/debian/rules 2022-08-15 12:03:10.000000000 -0500 +++ gsasl-2.2.0/debian/rules 2022-09-03 16:44:40.000000000 -0500 @@ -19,7 +19,7 @@ CONFIGURE_FLAGS = \ --disable-rpath \ --without-libgcrypt \ - --with-gssapi-impl=gssglue \ + --with-gssapi-impl=mit \ --with-packager=Debian \ --with-packager-version=$(DEB_VERSION) \ --with-packager-bug-reports=https://bugs.debian.org/ diff -Nru gsasl-2.0.1/debian/tests/control gsasl-2.2.0/debian/tests/control --- gsasl-2.0.1/debian/tests/control 2022-08-15 09:44:45.000000000 -0500 +++ gsasl-2.2.0/debian/tests/control 2022-09-03 16:44:41.000000000 -0500 @@ -6,7 +6,7 @@ Restrictions: superficial Tests: gsasl-scram-pbkdf2 -Depends: build-essential, gsasl +Depends: gsasl, valgrind-if-available Restrictions: allow-stderr Tests: gsasl-dovecot-gssapi @@ -16,3 +16,11 @@ Tests: gsasl-mailutils-cram Depends: gsasl, mailutils-imap4d, valgrind-if-available Restrictions: allow-stderr + +Tests: gsasl-mailutils-gs2krb5-gssapi +Depends: gsasl, mailutils-imap4d, krb5-kdc, krb5-admin-server, valgrind-if-available +Restrictions: allow-stderr + +Tests: gsasl-mailutils-tls +Depends: gsasl, mailutils-imap4d, gnutls-bin, valgrind-if-available +Restrictions: allow-stderr diff -Nru gsasl-2.0.1/debian/tests/gsasl-dovecot-gssapi gsasl-2.2.0/debian/tests/gsasl-dovecot-gssapi --- gsasl-2.0.1/debian/tests/gsasl-dovecot-gssapi 2022-08-06 13:54:17.000000000 -0500 +++ gsasl-2.2.0/debian/tests/gsasl-dovecot-gssapi 2022-09-03 16:44:41.000000000 -0500 @@ -7,6 +7,6 @@ VALGRIND="valgrind --error-exitcode=1" fi -GSASL="$VALGRIND /usr/bin/gsasl" debian/tests/gsasl-dovecot-gssapi.sh +GSASL="$VALGRIND /usr/bin/gsasl" tests/gsasl-dovecot-gssapi.sh exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-dovecot-gssapi.sh gsasl-2.2.0/debian/tests/gsasl-dovecot-gssapi.sh --- gsasl-2.0.1/debian/tests/gsasl-dovecot-gssapi.sh 2022-08-06 12:18:19.000000000 -0500 +++ gsasl-2.2.0/debian/tests/gsasl-dovecot-gssapi.sh 1969-12-31 18:00:00.000000000 -0600 @@ -1,187 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2022 Simon Josefsson -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e -set -u -set -x - -# Set up a local MIT Kerberos KDC, configure Dovecot, and then -# authenticate with GSS-API to the server using 'gsasl' as the client. - -# No root privileges required, but listens on hard-coded ports 17643 -# (KDC) and 17436 (dovecot). - -# Environment variables GSASL specify tool to use, which may include -# valgrind/libtool or other profiling commands. - -: ${GSASL=gsasl} - -if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then - echo FAIL: $0: GNU SASL gsasl missing... - exit 1 -fi - -if ! $GSASL --client-mechanisms 2>&1 | grep ' GSSAPI '; then - echo SKIP: $0: No GSSAPI support detected... - exit 77 -fi - -if test "${GNUGSS:-no}" = yes; then - echo SKIP: $0: Not ported to Shishi/GSS ccache yet... - exit 77 -fi - -export PATH=$PATH:/sbin:/usr/sbin - -if ! command -v ss && ! command -v netstat; then - echo SKIP: $0: Required tools 'ss' or 'netstat' missing... - exit 77 -fi - -if ! command -v id || ! command -v hostname || ! command -v dovecot || ! command -v kinit || ! command -v kdb5_util || ! command -v kadmin.local || ! command -v krb5kdc; then - echo SKIP: $0: Required tools missing... - exit 77 -fi - -WORKDIR=$(mktemp -d) - -trap 'set +e; test -f $WORKDIR/k/pid && kill `cat $WORKDIR/k/pid`; dovecot -c $WORKDIR/d/dovecot.conf stop; tail -v -n +0 $WORKDIR/out-* $WORKDIR/dovecot.log $WORKDIR/kdc.log; rm -r $WORKDIR/d $WORKDIR/b $WORKDIR/k $WORKDIR/*.log $WORKDIR/cc $WORKDIR/out-*; rmdir $WORKDIR' 0 INT QUIT ABRT PIPE TERM - -: ${USER=`id -un`} -: ${GROUP=`id -gn`} - -mkdir $WORKDIR/k $WORKDIR/d - -cat< $WORKDIR/k/kdc.conf -[realms] - GSASL.EXAMPLE = { - database_name = $WORKDIR/k/principal - key_stash_file = $WORKDIR/k/stash - kdc_ports = 17643 - kdc_tcp_ports = 17643 - master_key_type = des3-hmac-sha1 - default_principal_flags = +preauth - } -[logging] - kdc = FILE:$WORKDIR/kdc.log -EOF - -cat< $WORKDIR/k/krb5.conf -[libdefaults] - default_realm = GSASL.EXAMPLE - -[domain_realm] - .`hostname -d` = GSASL.EXAMPLE - -[realms] - GSASL.EXAMPLE = { - kdc = `hostname -f`:17643 - } -EOF - -cat < $WORKDIR/d/dovecot.conf -protocols = imap - -auth_gssapi_hostname = `hostname -f` - -auth_krb5_keytab = $WORKDIR/d/dovecot.keytab - -auth_verbose=yes -auth_debug=yes - -disable_plaintext_auth=no -auth_mechanisms = gssapi -base_dir = $WORKDIR/b - -passdb { - driver = static - args = password=pencil -} - -log_path = $WORKDIR/dovecot.log - -# https://wiki.dovecot.org/HowTo/Rootless - -default_internal_user = $USER -default_internal_group = $GROUP - -service anvil { - chroot = -} -service imap-login { - chroot = -} -service imap-login { - inet_listener imap { - port = 17436 - } - inet_listener imaps { - port = 0 - } -} -EOF - -if test "$USER" = "root"; then - cat <> $WORKDIR/d/dovecot.conf -default_login_user = nobody -userdb { - driver = static - args = uid=4711 gid=4711 home=$WORKDIR mail=mbox:foo -} -EOF -else - cat <> $WORKDIR/d/dovecot.conf -default_login_user = $USER -userdb { - driver = static - args = uid=$USER gid=$GROUP home=$WORKDIR mail=mbox:foo -} -EOF -fi - -export KRB5CCNAME=$WORKDIR/cc -export KRB5_CONFIG=$WORKDIR/k/krb5.conf -export KRB5_KDC_PROFILE=$WORKDIR/k - -kdb5_util -P foo create -s -kadmin.local addprinc -randkey imap/`hostname -f` -kadmin.local addprinc -pw bar $USER -kadmin.local ktadd -k $WORKDIR/d/dovecot.keytab imap/`hostname -f` - -krb5kdc -n -P $WORKDIR/k/pid & - -i=0 -while ! (ss -na || netstat -na) | grep 0.0.0.0:17643 | grep LISTEN; do - i=`expr $i + 1` - test "$i" = "10" && exit 1 - sleep 1 -done - -dovecot -c $WORKDIR/d/dovecot.conf - -! $GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 17436 > $WORKDIR/out-err 2>&1 - -grep -q 'gss_init_sec_context' $WORKDIR/out-err - -echo bar | kinit $USER - -$GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 17436 > $WORKDIR/out-ok 2>&1 - -grep -q 'OK Logged in' $WORKDIR/out-ok - -echo PASS: $0 -exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-mailutils-cram gsasl-2.2.0/debian/tests/gsasl-mailutils-cram --- gsasl-2.0.1/debian/tests/gsasl-mailutils-cram 2022-08-06 13:54:23.000000000 -0500 +++ gsasl-2.2.0/debian/tests/gsasl-mailutils-cram 2022-09-03 16:44:41.000000000 -0500 @@ -7,6 +7,8 @@ VALGRIND="valgrind --error-exitcode=1" fi -GSASL="$VALGRIND /usr/bin/gsasl" debian/tests/gsasl-mailutils-cram.sh +GSASL="$VALGRIND /usr/bin/gsasl" \ + IMAP4D="$VALGRIND /usr/sbin/imap4d" \ + tests/gsasl-mailutils-cram.sh exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-mailutils-cram.sh gsasl-2.2.0/debian/tests/gsasl-mailutils-cram.sh --- gsasl-2.0.1/debian/tests/gsasl-mailutils-cram.sh 2022-08-06 12:18:19.000000000 -0500 +++ gsasl-2.2.0/debian/tests/gsasl-mailutils-cram.sh 1969-12-31 18:00:00.000000000 -0600 @@ -1,100 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2022 Simon Josefsson -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e -set -u -set -x - -# Configure MailUtils imap4d (which uses libgsasl), then authenticate -# to it using gsasl, for a couple of different CRAM-like mechanisms. - -# No root privileges required, but listens on hard-coded port 19835. - -# Environment variables GSASL and IMAP4D specify tools to use, which -# may include valgrind/libtool or other profiling commands. - -: ${GSASL=gsasl} -: ${IMAP4D=imap4d} - -if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then - echo FAIL: $0: GNU SASL gsasl missing... - exit 1 -fi - -export PATH=$PATH:/sbin:/usr/sbin - -if ! $IMAP4D --version 2> /dev/null | grep '^imap4d (GNU Mailutils)'; then - echo SKIP: $0: GNU Mailutils imap4d missing... - exit 77 -fi - -if ! command -v ss && ! command -v netstat; then - echo SKIP: $0: Required tools 'ss' or 'netstat' missing... - exit 77 -fi - -WORKDIR=$(mktemp -d) - -trap 'set +e; tail -v -n +0 $WORKDIR/out-*; test -f $WORKDIR/imap4d.pid && kill `cat $WORKDIR/imap4d.pid`; rm $WORKDIR/imap4d.pid $WORKDIR/mailutils.conf $WORKDIR/cram.txt $WORKDIR/out-*; rmdir $WORKDIR' 0 INT QUIT ABRT PIPE TERM - -: ${USER=`whoami || id -un`} - -cat < $WORKDIR/cram.txt -$USER foo -EOF - -cat < $WORKDIR/mailutils.conf -logging { syslog false;}; -pidfile $WORKDIR/imap4d.pid; -gsasl { - cram-passwd $WORKDIR/cram.txt; -}; -server 127.0.0.1:19835 { -}; -EOF - -$IMAP4D --config-file=$WORKDIR/mailutils.conf --debug-level=4711 --daemon --foreground > $WORKDIR/out-imapd 2>&1 & - -i=0 -while ! (ss -na || netstat -na) | grep 127.0.0.1:19835 | grep LISTEN; do - i=`expr $i + 1` - test "$i" = "10" && exit 1 - sleep 1 -done - -! $GSASL -pbar -d -m CRAM-MD5 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-1 2>&1 - -grep -q '^. NO AUTHENTICATE' $WORKDIR/out-1 - -$GSASL -pfoo -d -m CRAM-MD5 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-2 2>&1 - -grep -q '^. OK AUTHENTICATE' $WORKDIR/out-2 - -$GSASL -pfoo -d -m DIGEST-MD5 --quality-of-protection=qop-auth --realm="" --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-3 2>&1 - -grep -q '^. OK AUTHENTICATE' $WORKDIR/out-3 - -$GSASL -pfoo -d -m SCRAM-SHA-1 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-4 2>&1 - -grep -q '^. OK AUTHENTICATE' $WORKDIR/out-4 - -$GSASL -pfoo -d -m SCRAM-SHA-256 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-5 2>&1 - -grep -q '^. OK AUTHENTICATE' $WORKDIR/out-5 - -echo PASS: $0 -exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-mailutils-gs2krb5-gssapi gsasl-2.2.0/debian/tests/gsasl-mailutils-gs2krb5-gssapi --- gsasl-2.0.1/debian/tests/gsasl-mailutils-gs2krb5-gssapi 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/debian/tests/gsasl-mailutils-gs2krb5-gssapi 2022-09-03 10:30:01.000000000 -0500 @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e +set -x + +if command -v valgrind; then + VALGRIND="valgrind --error-exitcode=1" +fi + +GSASL="$VALGRIND /usr/bin/gsasl" \ + IMAP4D="$VALGRIND /usr/sbin/imap4d" \ + tests/gsasl-mailutils-gs2krb5-gssapi.sh + +exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-mailutils-tls gsasl-2.2.0/debian/tests/gsasl-mailutils-tls --- gsasl-2.0.1/debian/tests/gsasl-mailutils-tls 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/debian/tests/gsasl-mailutils-tls 2022-09-03 10:30:01.000000000 -0500 @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e +set -x + +if command -v valgrind; then + VALGRIND="valgrind --error-exitcode=1" +fi + +GSASL="$VALGRIND /usr/bin/gsasl" \ + IMAP4D="$VALGRIND /usr/sbin/imap4d" \ + tests/gsasl-mailutils-tls.sh + +exit 0 diff -Nru gsasl-2.0.1/debian/tests/gsasl-scram-pbkdf2 gsasl-2.2.0/debian/tests/gsasl-scram-pbkdf2 --- gsasl-2.0.1/debian/tests/gsasl-scram-pbkdf2 2022-08-05 15:35:27.000000000 -0500 +++ gsasl-2.2.0/debian/tests/gsasl-scram-pbkdf2 2022-09-03 16:44:41.000000000 -0500 @@ -1,7 +1,13 @@ #!/bin/sh set -e +set -x -GSASL=/usr/bin/gsasl tests/gsasl-scram-pbkdf2.sh +if command -v valgrind; then + VALGRIND="valgrind --error-exitcode=1" +fi + +GSASL="$VALGRIND /usr/bin/gsasl" \ + tests/gsasl-scram-pbkdf2.sh exit 0 diff -Nru gsasl-2.0.1/debian/tests/libgsasl gsasl-2.2.0/debian/tests/libgsasl --- gsasl-2.0.1/debian/tests/libgsasl 2022-08-05 15:35:27.000000000 -0500 +++ gsasl-2.2.0/debian/tests/libgsasl 2022-09-03 16:44:41.000000000 -0500 @@ -6,10 +6,15 @@ trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM touch $WORKDIR/config.h +gcc -I$WORKDIR -c tests/utils.c -o $WORKDIR/utils.o `pkg-config --cflags --libs libgsasl` 2>&1 for f in $(ls tests/*.c | grep -v -e gs2-krb5.c -e gssapi.c -e utils.c); do - echo $f - gcc -I$WORKDIR -o $WORKDIR/foo $f tests/utils.c `pkg-config --cflags --libs libgsasl` 2>/dev/null + extra=tests/utils.c + if test "$f" = tests/version.c; then + extra="" + fi + gcc -I$WORKDIR -o $WORKDIR/foo $f $extra `pkg-config --cflags --libs libgsasl` 2>&1 env MD5FILE=tests/cram-md5.pwd $WORKDIR/foo + echo PASS: $f done cd $WORKDIR @@ -25,10 +30,12 @@ } EOF -gcc -o libgsasltest libgsasltest.c `pkg-config --cflags --libs libgsasl` +gcc -o libgsasltest libgsasltest.c `pkg-config --cflags --libs libgsasl` 2>&1 echo "PASS: gcc" + [ -x libgsasltest ] ./libgsasltest echo "PASS: run" + man -P cat gsasl_init echo "PASS: man" diff -Nru gsasl-2.0.1/doc/cyclo/Makefile.am gsasl-2.2.0/doc/cyclo/Makefile.am --- gsasl-2.0.1/doc/cyclo/Makefile.am 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/doc/cyclo/Makefile.am 2022-08-16 11:38:12.000000000 -0500 @@ -15,18 +15,16 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -cyclo-$(PACKAGE).html: - (cd $(top_srcdir)/lib && \ - $(PMCCABE) `find . -name \*.[ch] | sed 's,^./,,' \ - | grep -v \ - -e ^gl/ \ - -e ^gltests/ \ - -e test-parser.c \ - -e test-errors.c` \ - | sort -nr \ - | $(AWK) -f ../build-aux/pmccabe2html \ +CYCLO_SRCS = `echo ${top_srcdir}/lib/*/*.[ch] | grep -v -e /lib/gl/ -e test-parser.c` + +cyclo-$(PACKAGE).html: ${top_srcdir}/lib/*/*.[ch] + $(AM_V_GEN)$(PMCCABE) $(CYCLO_SRCS) \ + | LC_ALL=C sort -nr \ + | LC_ALL=C $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_NAME)" \ - -v vcurl="https://gitlab.com/gsasl/gsasl/-/blob/master/lib/%FILENAME%" \ + -v vcurl="https://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \ -v url="https://www.gnu.org/software/$(PACKAGE)/" \ - -v css=../build-aux/pmccabe.css) > $@-tmp + -v css=${top_srcdir}/build-aux/pmccabe.css \ + -v cut_dir=${top_srcdir}/ \ + > $@-tmp mv $@-tmp $@ diff -Nru gsasl-2.0.1/doc/cyclo/Makefile.in gsasl-2.2.0/doc/cyclo/Makefile.in --- gsasl-2.0.1/doc/cyclo/Makefile.in 2022-07-15 10:51:18.000000000 -0500 +++ gsasl-2.2.0/doc/cyclo/Makefile.in 2022-09-03 09:52:55.000000000 -0500 @@ -310,6 +310,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -670,6 +671,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1468,6 +1470,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1665,6 +1668,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -1764,6 +1768,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +CYCLO_SRCS = `echo ${top_srcdir}/lib/*/*.[ch] | grep -v -e /lib/gl/ -e test-parser.c` all: all-am .SUFFIXES: @@ -1958,20 +1963,16 @@ .PRECIOUS: Makefile -cyclo-$(PACKAGE).html: - (cd $(top_srcdir)/lib && \ - $(PMCCABE) `find . -name \*.[ch] | sed 's,^./,,' \ - | grep -v \ - -e ^gl/ \ - -e ^gltests/ \ - -e test-parser.c \ - -e test-errors.c` \ - | sort -nr \ - | $(AWK) -f ../build-aux/pmccabe2html \ +cyclo-$(PACKAGE).html: ${top_srcdir}/lib/*/*.[ch] + $(AM_V_GEN)$(PMCCABE) $(CYCLO_SRCS) \ + | LC_ALL=C sort -nr \ + | LC_ALL=C $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_NAME)" \ - -v vcurl="https://gitlab.com/gsasl/gsasl/-/blob/master/lib/%FILENAME%" \ + -v vcurl="https://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \ -v url="https://www.gnu.org/software/$(PACKAGE)/" \ - -v css=../build-aux/pmccabe.css) > $@-tmp + -v css=${top_srcdir}/build-aux/pmccabe.css \ + -v cut_dir=${top_srcdir}/ \ + > $@-tmp mv $@-tmp $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru gsasl-2.0.1/doc/gsasl.1 gsasl-2.2.0/doc/gsasl.1 --- gsasl-2.0.1/doc/gsasl.1 2022-07-15 10:53:50.000000000 -0500 +++ gsasl-2.2.0/doc/gsasl.1 2022-09-03 09:59:33.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. -.TH GSASL "1" "July 2022" "GNU SASL 2.0.1" "User Commands" +.TH GSASL "1" "September 2022" "GNU SASL 2.2.0" "User Commands" .SH NAME gsasl \- SASL library command line interface .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/gsasl-api-error-labels.texi gsasl-2.2.0/doc/gsasl-api-error-labels.texi --- gsasl-2.0.1/doc/gsasl-api-error-labels.texi 2022-07-15 10:52:26.000000000 -0500 +++ gsasl-2.2.0/doc/gsasl-api-error-labels.texi 2022-09-03 09:56:33.000000000 -0500 @@ -126,3 +126,6 @@ @item @code{GSASL_NO_OPENID20_REDIRECT_URL} Callback failed to provide OPENID20 redirect URL. + +@item @code{GSASL_NO_CB_TLS_EXPORTER} +Authentication failed because a tls-exporter channel binding was not provided. diff -Nru gsasl-2.0.1/doc/gsasl.info gsasl-2.2.0/doc/gsasl.info --- gsasl-2.0.1/doc/gsasl.info 2022-07-15 10:52:27.000000000 -0500 +++ gsasl-2.2.0/doc/gsasl.info 2022-09-03 09:59:38.000000000 -0500 @@ -1,6 +1,7 @@ This is gsasl.info, produced by makeinfo version 6.7 from gsasl.texi. -This manual was last updated 15 July 2022 for version 2.0.1 of GNU SASL. +This manual was last updated 16 August 2022 for version 2.2.0 of GNU +SASL. Copyright (C) 2002-2022 Simon Josefsson. @@ -26,7 +27,8 @@ GNU Simple Authentication and Security Layer ******************************************** -This manual was last updated 15 July 2022 for version 2.0.1 of GNU SASL. +This manual was last updated 16 August 2022 for version 2.2.0 of GNU +SASL. Copyright (C) 2002-2022 Simon Josefsson. @@ -236,24 +238,26 @@ LibNTLM The NTLM mechanism requires the library LibNTLM, - . + . GSS-API The GSSAPI and GS2-KRB5 mechanisms requires a GSS-API library, see - GNU GSS (). MIT Kerberos or - Heimdal are also supported. + GNU GSS (). Libgssglue, MIT + Kerberos, and Heimdal are also supported. You are encouraged to + try Libgssglue + (). LibIDN Processing of non-ASCII usernames and passwords requires the SASLprep implementation in LibIDN - (). This is needed for full + (). This is needed for full conformance with the latest SASL protocol drafts, but is optional in the library for improved portability. Libgcrypt The GNU SASL library ships with its own cryptographic implementation, but it can use the one in libgcrypt - () instead, if it is available. This is + () instead, if it is available. This is typically useful for desktop machines which have libgcrypt installed. @@ -421,8 +425,8 @@ - The latest version is stored in a file, e.g., 'gsasl-2.0.1.tar.gz' -where the '2.0.1' value is the highest version number in the directory. + The latest version is stored in a file, e.g., 'gsasl-2.2.0.tar.gz' +where the '2.2.0' value is the highest version number in the directory. The package is then extracted, configured and built like many other packages that use Autoconf. For detailed information on configuring and @@ -433,9 +437,9 @@ builds and install the package. You will need a few basic tools, such as 'sh', 'make' and 'cc'. - $ wget -q https://ftp.gnu.org/gnu/gsasl/gsasl-2.0.1.tar.gz - $ tar xfz gsasl-2.0.1.tar.gz - $ cd gsasl-2.0.1/ + $ wget -q https://ftp.gnu.org/gnu/gsasl/gsasl-2.2.0.tar.gz + $ tar xfz gsasl-2.2.0.tar.gz + $ cd gsasl-2.2.0/ $ ./configure ... $ make @@ -558,9 +562,9 @@ Unpack your copy of GNU SASL: - $ wget -q ftp://alpha.gnu.org/gnu/gsasl/gsasl-2.0.1.tar.gz - $ tar xfz gsasl-2.0.1.tar.gz - $ cd gsasl-2.0.1 + $ wget -q ftp://alpha.gnu.org/gnu/gsasl/gsasl-2.2.0.tar.gz + $ tar xfz gsasl-2.2.0.tar.gz + $ cd gsasl-2.2.0 Configure GNU SASL like this: @@ -944,7 +948,7 @@ AC_HELP_STRING([--disable-gsasl], [don't use GNU SASL]), gsasl=$enableval) if test "$gsasl" != "no" ; then - PKG_CHECK_MODULES(GSASL, libgsasl >= 2.0.1, + PKG_CHECK_MODULES(GSASL, libgsasl >= 2.2.0, [gsasl=yes], [gsasl=no]) if test "$gsasl" != "yes" ; then @@ -1516,7 +1520,17 @@ session hash extension (RFC 7627) negotiated, or session resumption MUST NOT have been used. The library cannot enforce this, so it is up to the application to only provide the 'GSASL_CB_TLS_UNIQUE' - property when the condition holds. + property when the condition holds. Note that TLS version 1.3 and + later do not support this channel binding. + + * 'GSASL_CB_TLS_EXPORTER' + + This property holds base64 encoded 'tls-exporter' channel binding + data. As a hint, if you use GnuTLS, the API + 'gnutls_session_channel_binding' can be used to extract channel + bindings for a session. This fixes some of the security problems + with the 'tls-unique' channel binding and supports modern TLS + versions. * 'GSASL_SAML20_IDP_IDENTIFIER' @@ -2123,7 +2137,7 @@ In the client, the mechanism is enabled by default. The 'GSASL_AUTHID' property is required and should contain the User-Supplied -OpenID Identifier (for example 'http://josefsson.org'). If set, +OpenID Identifier (for example 'https://josefsson.org'). If set, 'GSASL_AUTHZID' will be used by the client. The client will be invoked with the 'GSASL_OPENID20_AUTHENTICATE_IN_BROWSER' callback to perform the OpenID authentication in a web browser. The callback can retrieve @@ -2252,26 +2266,6 @@ Return value: Returns 1 if the libgsasl server supports the named mechanism, otherwise 0. -gsasl_mechanism_name_p ----------------------- - - -- Function: int gsasl_mechanism_name_p (const char * MECH) - MECH: input variable with mechanism name string. - - Check if the mechanism name string 'mech' follows syntactical - rules. It does not check that the name is registered with IANA. It - does not check that the mechanism name is actually implemented and - supported. - - SASL mechanisms are named by strings, from 1 to 20 characters in - length, consisting of upper-case letters, digits, hyphens, and/or - underscores. - - *Returns:* non-zero when mechanism name string 'mech' conforms to - rules, zero when it does not meet the requirements. - - *Since:* 2.0.0 - gsasl_client_suggest_mechanism ------------------------------ @@ -2305,6 +2299,26 @@ *Since:* 0.2.0 +gsasl_mechanism_name_p +---------------------- + + -- Function: int gsasl_mechanism_name_p (const char * MECH) + MECH: input variable with mechanism name string. + + Check if the mechanism name string 'mech' follows syntactical + rules. It does not check that the name is registered with IANA. It + does not check that the mechanism name is actually implemented and + supported. + + SASL mechanisms are named by strings, from 1 to 20 characters in + length, consisting of upper-case letters, digits, hyphens, and/or + underscores. + + *Returns:* non-zero when mechanism name string 'mech' conforms to + rules, zero when it does not meet the requirements. + + *Since:* 2.0.0 +  File: gsasl.info, Node: Callback Functions, Next: Property Functions, Prev: Global Functions, Up: Top @@ -3175,6 +3189,10 @@ 'GSASL_NO_OPENID20_REDIRECT_URL' Callback failed to provide OPENID20 redirect URL. +'GSASL_NO_CB_TLS_EXPORTER' + Authentication failed because a tls-exporter channel binding was + not provided. +  File: gsasl.info, Node: Error strings, Prev: Error values, Up: Error Handling @@ -4930,7 +4948,7 @@ * gsasl_check_version: Version Check. (line 15) * gsasl_client_mechlist: Global Functions. (line 32) * gsasl_client_start: Session Functions. (line 9) -* gsasl_client_suggest_mechanism: Global Functions. (line 112) +* gsasl_client_suggest_mechanism: Global Functions. (line 92) * gsasl_client_support_p: Global Functions. (line 62) * gsasl_decode: Session Functions. (line 136) * gsasl_done: Global Functions. (line 23) @@ -4942,7 +4960,7 @@ * gsasl_hex_to: Utilities. (line 76) * gsasl_init: Global Functions. (line 9) * gsasl_mechanism_name: Session Functions. (line 162) -* gsasl_mechanism_name_p: Global Functions. (line 92) +* gsasl_mechanism_name_p: Global Functions. (line 125) * gsasl_nonce: Utilities. (line 145) * gsasl_property_fast: Property Functions. (line 76) * gsasl_property_free: Property Functions. (line 9) @@ -4950,7 +4968,7 @@ * gsasl_property_set: Property Functions. (line 24) * gsasl_property_set_raw: Property Functions. (line 47) * gsasl_random: Utilities. (line 157) -* gsasl_register: Global Functions. (line 128) +* gsasl_register: Global Functions. (line 108) * gsasl_saslprep: Utilities. (line 9) * gsasl_scram_secrets_from_password: Utilities. (line 209) * gsasl_scram_secrets_from_salted_password: Utilities. (line 184) @@ -4978,7 +4996,8 @@ * Autoconf tests: Autoconf tests. (line 6) * Callbacks: Callback Functions. (line 6) * channel binding: Properties. (line 184) -* channel binding <1>: SCRAM. (line 64) +* channel binding <1>: Properties. (line 196) +* channel binding <2>: SCRAM. (line 64) * command line: Invoking gsasl. (line 6) * Compiling your application: Building the source. (line 6) * Configure tests: Autoconf tests. (line 6) @@ -4999,7 +5018,7 @@ * GSSAPI: GSSAPI. (line 6) * Hacking: Contributing. (line 6) * HP-UX: Supported Platforms. (line 68) -* Identity Provider Identifier: Properties. (line 195) +* Identity Provider Identifier: Properties. (line 205) * Installation: Downloading and Installing. (line 6) * invoking gsasl: Invoking gsasl. (line 6) @@ -5021,7 +5040,7 @@ * Reporting Bugs: Bug Reports. (line 6) * salt: Properties. (line 148) * SAML: SAML20. (line 6) -* SAML IdP Identifier: Properties. (line 195) +* SAML IdP Identifier: Properties. (line 205) * SASL sessions: Session Functions. (line 6) * SCRAM: SCRAM. (line 6) * SECURID: SECURID. (line 6) @@ -5029,6 +5048,7 @@ * Solaris <1>: Supported Platforms. (line 77) * SuSE: Supported Platforms. (line 26) * SuSE Linux: Supported Platforms. (line 31) +* tls-exporter: Properties. (line 196) * tls-unique: Properties. (line 184) * Tru64: Supported Platforms. (line 21) * uClibc: Supported Platforms. (line 97) @@ -5038,111 +5058,111 @@  Tag Table: -Node: Top877 -Node: Introduction2836 -Node: SASL Overview4330 -Node: Implementation6662 -Ref: fig:abstraction7872 -Node: Features8035 -Node: Requirements9356 -Node: Supported Platforms10847 -Node: Getting help13465 -Node: Commercial Support13917 -Node: Downloading and Installing14868 -Node: Installing under Windows17178 -Node: Kerberos on Windows18937 -Node: Bug Reports22572 -Node: Contributing23965 -Node: Preparation26059 -Node: Header26738 -Node: Initialization27331 -Ref: Initialization-Footnote-130075 -Node: Version Check30262 -Ref: gsasl_check_version30796 -Node: Building the source31801 -Node: Autoconf tests33685 -Node: Using the Library36015 -Node: Properties49316 -Node: Mechanisms61035 -Node: EXTERNAL63399 -Node: ANONYMOUS64697 -Node: PLAIN65747 -Node: LOGIN68028 -Node: CRAM-MD568676 -Node: DIGEST-MD570443 -Node: SCRAM72874 -Node: NTLM77962 -Node: SECURID78525 -Node: GSSAPI79926 -Node: GS2-KRB581795 -Node: SAML2083268 -Node: OPENID2085545 -Node: Global Functions88592 -Ref: gsasl_init88755 -Ref: gsasl_done89186 -Ref: gsasl_client_mechlist89432 -Ref: gsasl_server_mechlist89931 -Ref: gsasl_client_support_p90432 -Ref: gsasl_server_support_p90810 -Ref: gsasl_mechanism_name_p91188 -Ref: gsasl_client_suggest_mechanism91906 -Ref: gsasl_register92424 -Node: Callback Functions92847 -Ref: gsasl_callback_set93765 -Ref: gsasl_callback94657 -Ref: gsasl_callback_hook_set95543 -Ref: gsasl_callback_hook_get96082 -Ref: gsasl_session_hook_set96556 -Ref: gsasl_session_hook_get97133 -Node: Property Functions97591 -Ref: gsasl_property_free97785 -Ref: gsasl_property_set98193 -Ref: gsasl_property_set_raw98876 -Ref: gsasl_property_fast99741 -Ref: gsasl_property_get100353 -Node: Session Functions101043 -Ref: gsasl_client_start101224 -Ref: gsasl_server_start101692 -Ref: gsasl_step102144 -Ref: gsasl_step64103398 -Ref: gsasl_finish104334 -Ref: gsasl_encode104584 -Ref: gsasl_decode105372 -Ref: gsasl_mechanism_name106176 -Node: Utilities106569 -Ref: gsasl_saslprep106725 -Ref: gsasl_base64_to107341 -Ref: gsasl_base64_from108032 -Ref: gsasl_hex_to108618 -Ref: gsasl_hex_from109287 -Ref: gsasl_simple_getpass109830 -Ref: gsasl_nonce110820 -Ref: gsasl_random111138 -Ref: gsasl_hash_length111483 -Ref: gsasl_scram_secrets_from_salted_password111931 -Ref: gsasl_scram_secrets_from_password112859 -Node: Memory Handling114066 -Ref: gsasl_free114223 -Node: Error Handling114707 -Node: Error values115461 -Node: Error strings120429 -Ref: gsasl_strerror120583 -Ref: gsasl_strerror_name121139 -Node: Examples121797 -Node: Example 1122323 -Node: Example 2126345 -Node: Example 3130219 -Node: Example 4135066 -Node: Example 5139621 -Node: Acknowledgements149603 -Node: Invoking gsasl150267 -Node: Protocol Clarifications157622 -Node: Use of SASLprep in CRAM-MD5158087 -Node: Use of SASLprep in LOGIN159085 -Node: Copying Information159503 -Node: GNU Free Documentation License159768 -Node: Function and Data Index184882 -Node: Concept Index188277 +Node: Top879 +Node: Introduction2840 +Node: SASL Overview4334 +Node: Implementation6666 +Ref: fig:abstraction7876 +Node: Features8039 +Node: Requirements9360 +Node: Supported Platforms10995 +Node: Getting help13613 +Node: Commercial Support14065 +Node: Downloading and Installing15016 +Node: Installing under Windows17326 +Node: Kerberos on Windows19085 +Node: Bug Reports22720 +Node: Contributing24113 +Node: Preparation26207 +Node: Header26886 +Node: Initialization27479 +Ref: Initialization-Footnote-130223 +Node: Version Check30410 +Ref: gsasl_check_version30944 +Node: Building the source31949 +Node: Autoconf tests33833 +Node: Using the Library36163 +Node: Properties49464 +Node: Mechanisms61636 +Node: EXTERNAL64000 +Node: ANONYMOUS65298 +Node: PLAIN66348 +Node: LOGIN68629 +Node: CRAM-MD569277 +Node: DIGEST-MD571044 +Node: SCRAM73475 +Node: NTLM78563 +Node: SECURID79126 +Node: GSSAPI80527 +Node: GS2-KRB582396 +Node: SAML2083869 +Node: OPENID2086146 +Node: Global Functions89194 +Ref: gsasl_init89357 +Ref: gsasl_done89788 +Ref: gsasl_client_mechlist90034 +Ref: gsasl_server_mechlist90533 +Ref: gsasl_client_support_p91034 +Ref: gsasl_server_support_p91412 +Ref: gsasl_client_suggest_mechanism91806 +Ref: gsasl_register92324 +Ref: gsasl_mechanism_name_p92794 +Node: Callback Functions93449 +Ref: gsasl_callback_set94367 +Ref: gsasl_callback95259 +Ref: gsasl_callback_hook_set96145 +Ref: gsasl_callback_hook_get96684 +Ref: gsasl_session_hook_set97158 +Ref: gsasl_session_hook_get97735 +Node: Property Functions98193 +Ref: gsasl_property_free98387 +Ref: gsasl_property_set98795 +Ref: gsasl_property_set_raw99478 +Ref: gsasl_property_fast100343 +Ref: gsasl_property_get100955 +Node: Session Functions101645 +Ref: gsasl_client_start101826 +Ref: gsasl_server_start102294 +Ref: gsasl_step102746 +Ref: gsasl_step64104000 +Ref: gsasl_finish104936 +Ref: gsasl_encode105186 +Ref: gsasl_decode105974 +Ref: gsasl_mechanism_name106778 +Node: Utilities107171 +Ref: gsasl_saslprep107327 +Ref: gsasl_base64_to107943 +Ref: gsasl_base64_from108634 +Ref: gsasl_hex_to109220 +Ref: gsasl_hex_from109889 +Ref: gsasl_simple_getpass110432 +Ref: gsasl_nonce111422 +Ref: gsasl_random111740 +Ref: gsasl_hash_length112085 +Ref: gsasl_scram_secrets_from_salted_password112533 +Ref: gsasl_scram_secrets_from_password113461 +Node: Memory Handling114668 +Ref: gsasl_free114825 +Node: Error Handling115309 +Node: Error values116063 +Node: Error strings121148 +Ref: gsasl_strerror121302 +Ref: gsasl_strerror_name121858 +Node: Examples122516 +Node: Example 1123042 +Node: Example 2127064 +Node: Example 3130938 +Node: Example 4135785 +Node: Example 5140340 +Node: Acknowledgements150322 +Node: Invoking gsasl150986 +Node: Protocol Clarifications158341 +Node: Use of SASLprep in CRAM-MD5158806 +Node: Use of SASLprep in LOGIN159804 +Node: Copying Information160222 +Node: GNU Free Documentation License160487 +Node: Function and Data Index185601 +Node: Concept Index188996  End Tag Table diff -Nru gsasl-2.0.1/doc/gsasl.texi gsasl-2.2.0/doc/gsasl.texi --- gsasl-2.0.1/doc/gsasl.texi 2022-07-15 10:03:00.000000000 -0500 +++ gsasl-2.2.0/doc/gsasl.texi 2022-08-16 11:38:12.000000000 -0500 @@ -248,22 +248,24 @@ @table @asis @item LibNTLM The NTLM mechanism requires the library LibNTLM, -@url{http://www.nongnu.org/libntlm/}. +@url{https://www.nongnu.org/libntlm/}. @item GSS-API The GSSAPI and GS2-KRB5 mechanisms requires a GSS-API library, see GNU -GSS (@url{http://www.gnu.org/software/gss/}). MIT Kerberos or Heimdal -are also supported. +GSS (@url{https://www.gnu.org/software/gss/}). Libgssglue, MIT +Kerberos, and Heimdal are also supported. You are encouraged to try +Libgssglue +(@url{https://blog.josefsson.org/2022/07/14/towards-pluggable-gss-api-modules/}). @item LibIDN Processing of non-ASCII usernames and passwords requires the SASLprep -implementation in LibIDN (@url{http://www.gnu.org/software/libidn/}). +implementation in LibIDN (@url{https://www.gnu.org/software/libidn/}). This is needed for full conformance with the latest SASL protocol drafts, but is optional in the library for improved portability. @item Libgcrypt The GNU SASL library ships with its own cryptographic implementation, -but it can use the one in libgcrypt (@url{http://www.gnupg.org/}) +but it can use the one in libgcrypt (@url{https://www.gnupg.org/}) instead, if it is available. This is typically useful for desktop machines which have libgcrypt installed. @end table @@ -1594,8 +1596,18 @@ session hash extension (RFC 7627) negotiated, or session resumption MUST NOT have been used. The library cannot enforce this, so it is up to the application to only provide the @code{GSASL_CB_TLS_UNIQUE} property when -the condition holds. +the condition holds. Note that TLS version 1.3 and later do not support +this channel binding. +@item @code{GSASL_CB_TLS_EXPORTER} + +@cindex channel binding +@cindex tls-exporter +This property holds base64 encoded @code{tls-exporter} channel binding +data. As a hint, if you use GnuTLS, the API +@code{gnutls_session_channel_binding} can be used to extract channel +bindings for a session. This fixes some of the security problems with +the @code{tls-unique} channel binding and supports modern TLS versions. @item @code{GSASL_SAML20_IDP_IDENTIFIER} @@ -2200,7 +2212,7 @@ In the client, the mechanism is enabled by default. The @code{GSASL_AUTHID} property is required and should contain the User-Supplied OpenID Identifier (for example -@code{http://josefsson.org}). If set, @code{GSASL_AUTHZID} will be used +@code{https://josefsson.org}). If set, @code{GSASL_AUTHZID} will be used by the client. The client will be invoked with the @code{GSASL_OPENID20_AUTHENTICATE_IN_BROWSER} callback to perform the OpenID authentication in a web browser. The callback can retrieve the @@ -2247,13 +2259,15 @@ @node Global Functions @chapter Global Functions -@include texi/init.c.texi -@include texi/done.c.texi -@include texi/listmech.c.texi -@include texi/supportp.c.texi -@include texi/suggest.c.texi -@include texi/register.c.texi - +@include texi/gsasl_init.texi +@include texi/gsasl_done.texi +@include texi/gsasl_client_mechlist.texi +@include texi/gsasl_server_mechlist.texi +@include texi/gsasl_client_support_p.texi +@include texi/gsasl_server_support_p.texi +@include texi/gsasl_client_suggest_mechanism.texi +@include texi/gsasl_register.texi +@include texi/gsasl_mechanism_name_p.texi @c ********************************************************** @c ****************** Callback Functions ****************** @@ -2276,7 +2290,12 @@ @code{gsasl_callback_hook_set} and can later retrieve this data in your callback by calling @code{gsasl_callback_hook_get}. -@include texi/callback.c.texi +@include texi/gsasl_callback_set.texi +@include texi/gsasl_callback.texi +@include texi/gsasl_callback_hook_set.texi +@include texi/gsasl_callback_hook_get.texi +@include texi/gsasl_session_hook_set.texi +@include texi/gsasl_session_hook_get.texi @c ********************************************************** @c ****************** Property Functions ****************** @@ -2285,7 +2304,11 @@ @chapter Property Functions @cindex Properties -@include texi/property.c.texi +@include texi/gsasl_property_free.texi +@include texi/gsasl_property_set.texi +@include texi/gsasl_property_set_raw.texi +@include texi/gsasl_property_fast.texi +@include texi/gsasl_property_get.texi @c ********************************************************** @@ -2295,11 +2318,14 @@ @chapter Session Functions @cindex SASL sessions -@include texi/xstart.c.texi -@include texi/xstep.c.texi -@include texi/xfinish.c.texi -@include texi/xcode.c.texi -@include texi/mechname.c.texi +@include texi/gsasl_client_start.texi +@include texi/gsasl_server_start.texi +@include texi/gsasl_step.texi +@include texi/gsasl_step64.texi +@include texi/gsasl_finish.texi +@include texi/gsasl_encode.texi +@include texi/gsasl_decode.texi +@include texi/gsasl_mechanism_name.texi @@ -2309,10 +2335,17 @@ @node Utilities @chapter Utilities -@include texi/saslprep.c.texi -@include texi/base64.c.texi -@include texi/md5pwd.c.texi -@include texi/crypto.c.texi +@include texi/gsasl_saslprep.texi +@include texi/gsasl_base64_to.texi +@include texi/gsasl_base64_from.texi +@include texi/gsasl_hex_to.texi +@include texi/gsasl_hex_from.texi +@include texi/gsasl_simple_getpass.texi +@include texi/gsasl_nonce.texi +@include texi/gsasl_random.texi +@include texi/gsasl_hash_length.texi +@include texi/gsasl_scram_secrets_from_salted_password.texi +@include texi/gsasl_scram_secrets_from_password.texi @c ********************************************************** @c **************** Memory Handling *********************** @@ -2320,7 +2353,7 @@ @node Memory Handling @chapter Memory Handling -@include texi/free.c.texi +@include texi/gsasl_free.texi @c ********************************************************** @@ -2366,7 +2399,9 @@ @node Error strings @section Error strings -@include texi/error.c.texi +@include texi/gsasl_strerror.texi +@include texi/gsasl_strerror_name.texi + @c ********************************************************** @c *********************** Examples *********************** diff -Nru gsasl-2.0.1/doc/Makefile.am gsasl-2.2.0/doc/Makefile.am --- gsasl-2.0.1/doc/Makefile.am 2022-07-15 10:52:17.000000000 -0500 +++ gsasl-2.2.0/doc/Makefile.am 2022-08-16 11:38:12.000000000 -0500 @@ -109,28 +109,6 @@ gdoc_MANS += man/gsasl_step64.3 gdoc_TEXINFOS = -gdoc_TEXINFOS += texi/base64.c.texi -gdoc_TEXINFOS += texi/callback.c.texi -gdoc_TEXINFOS += texi/crypto.c.texi -gdoc_TEXINFOS += texi/done.c.texi -gdoc_TEXINFOS += texi/doxygen.c.texi -gdoc_TEXINFOS += texi/error.c.texi -gdoc_TEXINFOS += texi/free.c.texi -gdoc_TEXINFOS += texi/init.c.texi -gdoc_TEXINFOS += texi/listmech.c.texi -gdoc_TEXINFOS += texi/md5pwd.c.texi -gdoc_TEXINFOS += texi/mechname.c.texi -gdoc_TEXINFOS += texi/mechtools.c.texi -gdoc_TEXINFOS += texi/property.c.texi -gdoc_TEXINFOS += texi/register.c.texi -gdoc_TEXINFOS += texi/saslprep.c.texi -gdoc_TEXINFOS += texi/suggest.c.texi -gdoc_TEXINFOS += texi/supportp.c.texi -gdoc_TEXINFOS += texi/version.c.texi -gdoc_TEXINFOS += texi/xcode.c.texi -gdoc_TEXINFOS += texi/xfinish.c.texi -gdoc_TEXINFOS += texi/xstart.c.texi -gdoc_TEXINFOS += texi/xstep.c.texi gdoc_TEXINFOS += texi/gsasl_base64_to.texi gdoc_TEXINFOS += texi/gsasl_base64_from.texi gdoc_TEXINFOS += texi/gsasl_hex_to.texi @@ -175,56 +153,50 @@ gdoc_TEXINFOS += texi/gsasl_step.texi gdoc_TEXINFOS += texi/gsasl_step64.texi -$(gdoc_MANS) $(gdoc_TEXINFOS): - make update-makefile - make Makefile - make doit +BUILT_SOURCES = $(gdoc_MANS) $(gdoc_TEXINFOS) GDOC_SRC = $(top_srcdir)/lib/src/*.c -update-makefile: +.PHONY: compare-makefile + +compare-makefile: + $(AM_V_GEN) \ MANS=""; \ TEXINFOS=""; \ - for i in $(GDOC_SRC); do \ - BASE=`basename $$i`; \ - TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ - done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ - done; \ - grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ - perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS," | \ + done && \ + grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' $(srcdir)/Makefile.am | \ + perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ - > Makefile.am.new && \ - mv Makefile.am.new Makefile.am + > tmp-$@ && \ + diff -u $(srcdir)/Makefile.am tmp-$@ && \ + rm -f tmp-$@ + +EXTRA_DIST += stamp-gdoc + +$(gdoc_MANS) $(gdoc_TEXINFOS): stamp-gdoc -doit: - @$(mkdir_p) man texi; \ - echo -n "Creating function documentation" && \ - for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ +clean-local: + -rm -f stamp-gdoc + +stamp-gdoc: $(top_srcdir)/.version $(GDOC_SRC) + $(AM_V_at)$(MKDIR_P) man texi + $(AM_V_GEN)for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ $(srcdir)/gdoc -man \ - -module $(PACKAGE) \ - -sourceversion $(VERSION) \ -bugsto $(PACKAGE_BUGREPORT) \ + -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ + -sourceversion $(VERSION) \ -includefuncprefix \ - -seeinfo $(PACKAGE) -verbatimcopying \ + -seeinfo $(PACKAGE) \ + -verbatimcopying \ -copyright "2002-2022 Simon Josefsson" \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ - $(GDOC_SRC) > texi/$$i.texi && \ - echo -n "."; \ - done; \ - echo ""; \ - echo -n "Creating file documentation" && \ - for i in $(GDOC_SRC); do \ - BASE=`basename $$i`; \ - $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ - echo -n "."; \ - done; \ - echo "" - -.PHONY: update-makefile doit + $(GDOC_SRC) > texi/$$i.texi; \ + done + $(AM_V_at)touch $@ diff -Nru gsasl-2.0.1/doc/Makefile.in gsasl-2.2.0/doc/Makefile.in --- gsasl-2.0.1/doc/Makefile.in 2022-07-15 10:52:19.000000000 -0500 +++ gsasl-2.2.0/doc/Makefile.in 2022-09-03 09:52:55.000000000 -0500 @@ -478,6 +478,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -838,6 +839,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1636,6 +1638,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1833,6 +1836,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -1933,10 +1937,9 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = cyclo $(am__append_1) -EXTRA_DIST = gdoc \ - gsasl-controlflow.dia gsasl-controlflow2.dia gsasl-abstraction.dia \ - doxygen/Doxyfile.in doxygen/gdoc2doxygen - +EXTRA_DIST = gdoc gsasl-controlflow.dia gsasl-controlflow2.dia \ + gsasl-abstraction.dia doxygen/Doxyfile.in doxygen/gdoc2doxygen \ + stamp-gdoc info_TEXINFOS = gsasl.texi gsasl_TEXINFOS = fdl-1.3.texi $(gdoc_TEXINFOS) \ gsasl-controlflow.eps gsasl-controlflow.png gsasl-controlflow.pdf \ @@ -1974,15 +1977,7 @@ man/gsasl_check_version.3 man/gsasl_encode.3 \ man/gsasl_decode.3 man/gsasl_finish.3 man/gsasl_client_start.3 \ man/gsasl_server_start.3 man/gsasl_step.3 man/gsasl_step64.3 -gdoc_TEXINFOS = texi/base64.c.texi texi/callback.c.texi \ - texi/crypto.c.texi texi/done.c.texi texi/doxygen.c.texi \ - texi/error.c.texi texi/free.c.texi texi/init.c.texi \ - texi/listmech.c.texi texi/md5pwd.c.texi texi/mechname.c.texi \ - texi/mechtools.c.texi texi/property.c.texi \ - texi/register.c.texi texi/saslprep.c.texi texi/suggest.c.texi \ - texi/supportp.c.texi texi/version.c.texi texi/xcode.c.texi \ - texi/xfinish.c.texi texi/xstart.c.texi texi/xstep.c.texi \ - texi/gsasl_base64_to.texi texi/gsasl_base64_from.texi \ +gdoc_TEXINFOS = texi/gsasl_base64_to.texi texi/gsasl_base64_from.texi \ texi/gsasl_hex_to.texi texi/gsasl_hex_from.texi \ texi/gsasl_callback_set.texi texi/gsasl_callback.texi \ texi/gsasl_callback_hook_set.texi \ @@ -2008,8 +2003,10 @@ texi/gsasl_finish.texi texi/gsasl_client_start.texi \ texi/gsasl_server_start.texi texi/gsasl_step.texi \ texi/gsasl_step64.texi +BUILT_SOURCES = $(gdoc_MANS) $(gdoc_TEXINFOS) GDOC_SRC = $(top_srcdir)/lib/src/*.c -all: all-recursive +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .dia .dvi .eps .html .info .lo .o .obj .pdf .png .ps .texi @@ -2504,15 +2501,18 @@ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am -check: check-recursive +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-recursive -install-exec: install-exec-recursive +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive @@ -2541,10 +2541,11 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive -clean-am: clean-aminfo clean-generic clean-libtool \ +clean-am: clean-aminfo clean-generic clean-libtool clean-local \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive @@ -2708,12 +2709,13 @@ uninstall-man: uninstall-man1 uninstall-man3 -.MAKE: $(am__recursive_targets) install-am install-strip +.MAKE: $(am__recursive_targets) all check install install-am \ + install-exec install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-aminfo clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am dist-info distclean distclean-compile \ + clean-libtool clean-local clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am dist-info distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ @@ -2753,57 +2755,47 @@ --name="SASL library command line interface" \ --output=$@ $(top_builddir)/src/gsasl$(EXEEXT) -$(gdoc_MANS) $(gdoc_TEXINFOS): - make update-makefile - make Makefile - make doit +.PHONY: compare-makefile -update-makefile: +compare-makefile: + $(AM_V_GEN) \ MANS=""; \ TEXINFOS=""; \ - for i in $(GDOC_SRC); do \ - BASE=`basename $$i`; \ - TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ - done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ - done; \ - grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ - perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS," | \ + done && \ + grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' $(srcdir)/Makefile.am | \ + perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ - > Makefile.am.new && \ - mv Makefile.am.new Makefile.am - -doit: - @$(mkdir_p) man texi; \ - echo -n "Creating function documentation" && \ - for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ + > tmp-$@ && \ + diff -u $(srcdir)/Makefile.am tmp-$@ && \ + rm -f tmp-$@ + +$(gdoc_MANS) $(gdoc_TEXINFOS): stamp-gdoc + +clean-local: + -rm -f stamp-gdoc + +stamp-gdoc: $(top_srcdir)/.version $(GDOC_SRC) + $(AM_V_at)$(MKDIR_P) man texi + $(AM_V_GEN)for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ $(srcdir)/gdoc -man \ - -module $(PACKAGE) \ - -sourceversion $(VERSION) \ -bugsto $(PACKAGE_BUGREPORT) \ + -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ + -sourceversion $(VERSION) \ -includefuncprefix \ - -seeinfo $(PACKAGE) -verbatimcopying \ + -seeinfo $(PACKAGE) \ + -verbatimcopying \ -copyright "2002-2022 Simon Josefsson" \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ - $(GDOC_SRC) > texi/$$i.texi && \ - echo -n "."; \ - done; \ - echo ""; \ - echo -n "Creating file documentation" && \ - for i in $(GDOC_SRC); do \ - BASE=`basename $$i`; \ - $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ - echo -n "."; \ - done; \ - echo "" - -.PHONY: update-makefile doit + $(GDOC_SRC) > texi/$$i.texi; \ + done + $(AM_V_at)touch $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru gsasl-2.0.1/doc/man/gsasl_base64_from.3 gsasl-2.2.0/doc/man/gsasl_base64_from.3 --- gsasl-2.0.1/doc/man/gsasl_base64_from.3 2022-07-15 10:52:19.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_base64_from.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_base64_from" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_base64_from" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_base64_from \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_base64_to.3 gsasl-2.2.0/doc/man/gsasl_base64_to.3 --- gsasl-2.0.1/doc/man/gsasl_base64_to.3 2022-07-15 10:52:19.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_base64_to.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_base64_to" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_base64_to" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_base64_to \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_callback.3 gsasl-2.2.0/doc/man/gsasl_callback.3 --- gsasl-2.0.1/doc/man/gsasl_callback.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_callback.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_callback" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_callback" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_callback \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_callback_hook_get.3 gsasl-2.2.0/doc/man/gsasl_callback_hook_get.3 --- gsasl-2.0.1/doc/man/gsasl_callback_hook_get.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_callback_hook_get.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_callback_hook_get" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_callback_hook_get" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_callback_hook_get \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_callback_hook_set.3 gsasl-2.2.0/doc/man/gsasl_callback_hook_set.3 --- gsasl-2.0.1/doc/man/gsasl_callback_hook_set.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_callback_hook_set.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_callback_hook_set" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_callback_hook_set" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_callback_hook_set \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_callback_set.3 gsasl-2.2.0/doc/man/gsasl_callback_set.3 --- gsasl-2.0.1/doc/man/gsasl_callback_set.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_callback_set.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_callback_set" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_callback_set" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_callback_set \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_check_version.3 gsasl-2.2.0/doc/man/gsasl_check_version.3 --- gsasl-2.0.1/doc/man/gsasl_check_version.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_check_version.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_check_version" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_check_version" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_check_version \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_client_mechlist.3 gsasl-2.2.0/doc/man/gsasl_client_mechlist.3 --- gsasl-2.0.1/doc/man/gsasl_client_mechlist.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_client_mechlist.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_client_mechlist" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_client_mechlist" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_client_mechlist \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_client_start.3 gsasl-2.2.0/doc/man/gsasl_client_start.3 --- gsasl-2.0.1/doc/man/gsasl_client_start.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_client_start.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_client_start" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_client_start" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_client_start \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_client_suggest_mechanism.3 gsasl-2.2.0/doc/man/gsasl_client_suggest_mechanism.3 --- gsasl-2.0.1/doc/man/gsasl_client_suggest_mechanism.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_client_suggest_mechanism.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_client_suggest_mechanism" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_client_suggest_mechanism" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_client_suggest_mechanism \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_client_support_p.3 gsasl-2.2.0/doc/man/gsasl_client_support_p.3 --- gsasl-2.0.1/doc/man/gsasl_client_support_p.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_client_support_p.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_client_support_p" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_client_support_p" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_client_support_p \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_decode.3 gsasl-2.2.0/doc/man/gsasl_decode.3 --- gsasl-2.0.1/doc/man/gsasl_decode.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_decode.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_decode" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_decode" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_decode \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_done.3 gsasl-2.2.0/doc/man/gsasl_done.3 --- gsasl-2.0.1/doc/man/gsasl_done.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_done.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_done" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_done" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_done \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_encode.3 gsasl-2.2.0/doc/man/gsasl_encode.3 --- gsasl-2.0.1/doc/man/gsasl_encode.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_encode.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_encode" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_encode" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_encode \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_finish.3 gsasl-2.2.0/doc/man/gsasl_finish.3 --- gsasl-2.0.1/doc/man/gsasl_finish.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_finish.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_finish" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_finish" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_finish \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_free.3 gsasl-2.2.0/doc/man/gsasl_free.3 --- gsasl-2.0.1/doc/man/gsasl_free.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_free.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_free" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_free" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_free \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_hash_length.3 gsasl-2.2.0/doc/man/gsasl_hash_length.3 --- gsasl-2.0.1/doc/man/gsasl_hash_length.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_hash_length.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_hash_length" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_hash_length" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_hash_length \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_hex_from.3 gsasl-2.2.0/doc/man/gsasl_hex_from.3 --- gsasl-2.0.1/doc/man/gsasl_hex_from.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_hex_from.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_hex_from" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_hex_from" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_hex_from \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_hex_to.3 gsasl-2.2.0/doc/man/gsasl_hex_to.3 --- gsasl-2.0.1/doc/man/gsasl_hex_to.3 2022-07-15 10:52:19.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_hex_to.3 2022-09-03 09:59:28.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_hex_to" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_hex_to" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_hex_to \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_init.3 gsasl-2.2.0/doc/man/gsasl_init.3 --- gsasl-2.0.1/doc/man/gsasl_init.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_init.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_init" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_init" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_init \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_mechanism_name.3 gsasl-2.2.0/doc/man/gsasl_mechanism_name.3 --- gsasl-2.0.1/doc/man/gsasl_mechanism_name.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_mechanism_name.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_mechanism_name" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_mechanism_name" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_mechanism_name \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_mechanism_name_p.3 gsasl-2.2.0/doc/man/gsasl_mechanism_name_p.3 --- gsasl-2.0.1/doc/man/gsasl_mechanism_name_p.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_mechanism_name_p.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_mechanism_name_p" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_mechanism_name_p" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_mechanism_name_p \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_nonce.3 gsasl-2.2.0/doc/man/gsasl_nonce.3 --- gsasl-2.0.1/doc/man/gsasl_nonce.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_nonce.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_nonce" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_nonce" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_nonce \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_property_fast.3 gsasl-2.2.0/doc/man/gsasl_property_fast.3 --- gsasl-2.0.1/doc/man/gsasl_property_fast.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_property_fast.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_property_fast" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_property_fast" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_property_fast \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_property_free.3 gsasl-2.2.0/doc/man/gsasl_property_free.3 --- gsasl-2.0.1/doc/man/gsasl_property_free.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_property_free.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_property_free" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_property_free" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_property_free \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_property_get.3 gsasl-2.2.0/doc/man/gsasl_property_get.3 --- gsasl-2.0.1/doc/man/gsasl_property_get.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_property_get.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_property_get" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_property_get" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_property_get \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_property_set.3 gsasl-2.2.0/doc/man/gsasl_property_set.3 --- gsasl-2.0.1/doc/man/gsasl_property_set.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_property_set.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_property_set" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_property_set" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_property_set \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_property_set_raw.3 gsasl-2.2.0/doc/man/gsasl_property_set_raw.3 --- gsasl-2.0.1/doc/man/gsasl_property_set_raw.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_property_set_raw.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_property_set_raw" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_property_set_raw" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_property_set_raw \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_random.3 gsasl-2.2.0/doc/man/gsasl_random.3 --- gsasl-2.0.1/doc/man/gsasl_random.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_random.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_random" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_random" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_random \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_register.3 gsasl-2.2.0/doc/man/gsasl_register.3 --- gsasl-2.0.1/doc/man/gsasl_register.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_register.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_register" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_register" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_register \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_saslprep.3 gsasl-2.2.0/doc/man/gsasl_saslprep.3 --- gsasl-2.0.1/doc/man/gsasl_saslprep.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_saslprep.3 2022-09-03 09:59:31.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_saslprep" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_saslprep" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_saslprep \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_scram_secrets_from_password.3 gsasl-2.2.0/doc/man/gsasl_scram_secrets_from_password.3 --- gsasl-2.0.1/doc/man/gsasl_scram_secrets_from_password.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_scram_secrets_from_password.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_scram_secrets_from_password" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_scram_secrets_from_password" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_scram_secrets_from_password \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_scram_secrets_from_salted_password.3 gsasl-2.2.0/doc/man/gsasl_scram_secrets_from_salted_password.3 --- gsasl-2.0.1/doc/man/gsasl_scram_secrets_from_salted_password.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_scram_secrets_from_salted_password.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_scram_secrets_from_salted_password" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_scram_secrets_from_salted_password" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_scram_secrets_from_salted_password \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_server_mechlist.3 gsasl-2.2.0/doc/man/gsasl_server_mechlist.3 --- gsasl-2.0.1/doc/man/gsasl_server_mechlist.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_server_mechlist.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_server_mechlist" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_server_mechlist" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_server_mechlist \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_server_start.3 gsasl-2.2.0/doc/man/gsasl_server_start.3 --- gsasl-2.0.1/doc/man/gsasl_server_start.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_server_start.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_server_start" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_server_start" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_server_start \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_server_support_p.3 gsasl-2.2.0/doc/man/gsasl_server_support_p.3 --- gsasl-2.0.1/doc/man/gsasl_server_support_p.3 2022-07-15 10:52:23.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_server_support_p.3 2022-09-03 09:59:32.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_server_support_p" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_server_support_p" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_server_support_p \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_session_hook_get.3 gsasl-2.2.0/doc/man/gsasl_session_hook_get.3 --- gsasl-2.0.1/doc/man/gsasl_session_hook_get.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_session_hook_get.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_session_hook_get" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_session_hook_get" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_session_hook_get \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_session_hook_set.3 gsasl-2.2.0/doc/man/gsasl_session_hook_set.3 --- gsasl-2.0.1/doc/man/gsasl_session_hook_set.3 2022-07-15 10:52:20.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_session_hook_set.3 2022-09-03 09:59:29.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_session_hook_set" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_session_hook_set" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_session_hook_set \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_simple_getpass.3 gsasl-2.2.0/doc/man/gsasl_simple_getpass.3 --- gsasl-2.0.1/doc/man/gsasl_simple_getpass.3 2022-07-15 10:52:22.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_simple_getpass.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_simple_getpass" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_simple_getpass" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_simple_getpass \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_step.3 gsasl-2.2.0/doc/man/gsasl_step.3 --- gsasl-2.0.1/doc/man/gsasl_step.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_step.3 2022-09-03 09:59:33.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_step" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_step" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_step \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_step64.3 gsasl-2.2.0/doc/man/gsasl_step64.3 --- gsasl-2.0.1/doc/man/gsasl_step64.3 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_step64.3 2022-09-03 09:59:33.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_step64" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_step64" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_step64 \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_strerror.3 gsasl-2.2.0/doc/man/gsasl_strerror.3 --- gsasl-2.0.1/doc/man/gsasl_strerror.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_strerror.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_strerror" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_strerror" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_strerror \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/man/gsasl_strerror_name.3 gsasl-2.2.0/doc/man/gsasl_strerror_name.3 --- gsasl-2.0.1/doc/man/gsasl_strerror_name.3 2022-07-15 10:52:21.000000000 -0500 +++ gsasl-2.2.0/doc/man/gsasl_strerror_name.3 2022-09-03 09:59:30.000000000 -0500 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "gsasl_strerror_name" 3 "2.0.1" "gsasl" "gsasl" +.TH "gsasl_strerror_name" 3 "2.2.0" "gsasl" "gsasl" .SH NAME gsasl_strerror_name \- API function .SH SYNOPSIS diff -Nru gsasl-2.0.1/doc/reference/html/gsasl.devhelp2 gsasl-2.2.0/doc/reference/html/gsasl.devhelp2 --- gsasl-2.0.1/doc/reference/html/gsasl.devhelp2 2022-07-15 10:56:28.000000000 -0500 +++ gsasl-2.2.0/doc/reference/html/gsasl.devhelp2 2022-09-03 10:02:42.000000000 -0500 @@ -112,6 +112,7 @@ + @@ -152,6 +153,7 @@ + diff -Nru gsasl-2.0.1/doc/reference/html/gsasl-gsasl.h.html gsasl-2.2.0/doc/reference/html/gsasl-gsasl.h.html --- gsasl-2.0.1/doc/reference/html/gsasl-gsasl.h.html 2022-07-15 10:56:28.000000000 -0500 +++ gsasl-2.2.0/doc/reference/html/gsasl-gsasl.h.html 2022-09-03 10:02:42.000000000 -0500 @@ -2487,6 +2487,13 @@   +

GSASL_NO_CB_TLS_EXPORTER

+ +

Could not get required tls-exporter CB.

+ +  + +

GSASL_GSSAPI_RELEASE_BUFFER_ERROR

GSS-API library call error.

@@ -2789,6 +2796,13 @@   + +

GSASL_CB_TLS_EXPORTER

+ +

Base64 encoded tls-exporter channel binding.

+ +  +

GSASL_SAML20_AUTHENTICATE_IN_BROWSER

diff -Nru gsasl-2.0.1/doc/reference/html/gsasl-gsasl-version.h.html gsasl-2.2.0/doc/reference/html/gsasl-gsasl-version.h.html --- gsasl-2.0.1/doc/reference/html/gsasl-gsasl-version.h.html 2022-07-15 10:56:28.000000000 -0500 +++ gsasl-2.2.0/doc/reference/html/gsasl-gsasl-version.h.html 2022-09-03 10:02:42.000000000 -0500 @@ -75,7 +75,7 @@

Types and Values

GSASL_VERSION

-
# define GSASL_VERSION "2.0.1"
+
# define GSASL_VERSION "2.2.0"
 

Pre-processor symbol with a string that describe the header file version number. Used together with gsasl_check_version() to @@ -94,7 +94,7 @@


GSASL_VERSION_MINOR

-
# define GSASL_VERSION_MINOR 0
+
# define GSASL_VERSION_MINOR 2
 

Pre-processor symbol with a decimal value that describe the minor level of the header file version number. For example, when the @@ -104,7 +104,7 @@


GSASL_VERSION_PATCH

-
# define GSASL_VERSION_PATCH 1
+
# define GSASL_VERSION_PATCH 0
 

Pre-processor symbol with a decimal value that describe the patch level of the header file version number. For example, when the @@ -114,7 +114,7 @@


GSASL_VERSION_NUMBER

-
# define GSASL_VERSION_NUMBER 0x020001
+
# define GSASL_VERSION_NUMBER 0x020200
 

Pre-processor symbol with a hexadecimal value describing the header file version number. For example, when the header version diff -Nru gsasl-2.0.1/doc/reference/html/index.html gsasl-2.2.0/doc/reference/html/index.html --- gsasl-2.0.1/doc/reference/html/index.html 2022-07-15 10:56:28.000000000 -0500 +++ gsasl-2.2.0/doc/reference/html/index.html 2022-09-03 10:02:42.000000000 -0500 @@ -15,7 +15,7 @@

- for GNU SASL 2.0.1. + for GNU SASL 2.2.0. The latest version of this documentation can be found on-line at https://www.gnu.org/software/gsasl/reference/. diff -Nru gsasl-2.0.1/doc/reference/Makefile.in gsasl-2.2.0/doc/reference/Makefile.in --- gsasl-2.0.1/doc/reference/Makefile.in 2022-07-15 10:51:18.000000000 -0500 +++ gsasl-2.2.0/doc/reference/Makefile.in 2022-09-03 09:52:55.000000000 -0500 @@ -253,7 +253,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = version.xml +CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -478,7 +478,7 @@ *) \ b='$*';; \ esac -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.xml.in \ +am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/test-driver $(top_srcdir)/gtk-doc.make DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ @@ -553,6 +553,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -913,6 +914,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1711,6 +1713,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1908,6 +1911,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -2199,8 +2203,6 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo diff -Nru gsasl-2.0.1/doc/reference/version.xml.in gsasl-2.2.0/doc/reference/version.xml.in --- gsasl-2.0.1/doc/reference/version.xml.in 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/doc/reference/version.xml.in 1969-12-31 18:00:00.000000000 -0600 @@ -1 +0,0 @@ -@VERSION@ diff -Nru gsasl-2.0.1/doc/stamp-vti gsasl-2.2.0/doc/stamp-vti --- gsasl-2.0.1/doc/stamp-vti 2022-07-15 10:53:50.000000000 -0500 +++ gsasl-2.2.0/doc/stamp-vti 2022-09-03 09:59:33.000000000 -0500 @@ -1,4 +1,4 @@ -@set UPDATED 15 July 2022 -@set UPDATED-MONTH July 2022 -@set EDITION 2.0.1 -@set VERSION 2.0.1 +@set UPDATED 16 August 2022 +@set UPDATED-MONTH August 2022 +@set EDITION 2.2.0 +@set VERSION 2.2.0 diff -Nru gsasl-2.0.1/doc/texi/base64.c.texi gsasl-2.2.0/doc/texi/base64.c.texi --- gsasl-2.0.1/doc/texi/base64.c.texi 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/texi/base64.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,80 +0,0 @@ -@subheading gsasl_base64_to -@anchor{gsasl_base64_to} -@deftypefun {int} {gsasl_base64_to} (const char * @var{in}, size_t @var{inlen}, char ** @var{out}, size_t * @var{outlen}) -@var{in}: input byte array. - -@var{inlen}: size of input byte array. - -@var{out}: pointer to newly allocated base64-encoded string. - -@var{outlen}: pointer to size of newly allocated base64-encoded string. - -Encode data as base64. The @code{out} string is zero terminated, and - @code{outlen} holds the length excluding the terminating zero. The @code{out} buffer must be deallocated by the caller. - -Return value: Returns @code{GSASL_OK} on success, or @code{GSASL_MALLOC_ERROR} -if input was too large or memory allocation fail. - -@strong{Since:} 0.2.2 -@end deftypefun - -@subheading gsasl_base64_from -@anchor{gsasl_base64_from} -@deftypefun {int} {gsasl_base64_from} (const char * @var{in}, size_t @var{inlen}, char ** @var{out}, size_t * @var{outlen}) -@var{in}: input byte array - -@var{inlen}: size of input byte array - -@var{out}: pointer to newly allocated output byte array - -@var{outlen}: pointer to size of newly allocated output byte array - -Decode Base64 data. The @code{out} buffer must be deallocated by the -caller. - -Return value: Returns @code{GSASL_OK} on success, @code{GSASL_BASE64_ERROR} if -input was invalid, and @code{GSASL_MALLOC_ERROR} on memory allocation -errors. - -@strong{Since:} 0.2.2 -@end deftypefun - -@subheading gsasl_hex_to -@anchor{gsasl_hex_to} -@deftypefun {int} {gsasl_hex_to} (const char * @var{in}, size_t @var{inlen}, char ** @var{out}, size_t * @var{outlen}) -@var{in}: input byte array. - -@var{inlen}: size of input byte array. - -@var{out}: pointer to newly allocated hex-encoded string. - -@var{outlen}: pointer to size of newly allocated hex-encoded string. - -Hex encode data. The @code{out} string is zero terminated, and @code{outlen} holds the length excluding the terminating zero. The @code{out} buffer -must be deallocated by the caller. - -Return value: Returns @code{GSASL_OK} on success, or @code{GSASL_MALLOC_ERROR} -if input was too large or memory allocation fail. - -@strong{Since:} 1.10 -@end deftypefun - -@subheading gsasl_hex_from -@anchor{gsasl_hex_from} -@deftypefun {int} {gsasl_hex_from} (const char * @var{in}, char ** @var{out}, size_t * @var{outlen}) -@var{in}: input byte array - -@var{out}: pointer to newly allocated output byte array - -@var{outlen}: pointer to size of newly allocated output byte array - -Decode hex data. The @code{out} buffer must be deallocated by the -caller. - -Return value: Returns @code{GSASL_OK} on success, @code{GSASL_BASE64_ERROR} if -input was invalid, and @code{GSASL_MALLOC_ERROR} on memory allocation -errors. - -@strong{Since:} 1.10 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/callback.c.texi gsasl-2.2.0/doc/texi/callback.c.texi --- gsasl-2.0.1/doc/texi/callback.c.texi 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/texi/callback.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,111 +0,0 @@ -@subheading gsasl_callback_set -@anchor{gsasl_callback_set} -@deftypefun {void} {gsasl_callback_set} (Gsasl * @var{ctx}, Gsasl_callback_function @var{cb}) -@var{ctx}: handle received from @code{gsasl_init()} . - -@var{cb}: pointer to function implemented by application. - -Store the pointer to the application provided callback in the -library handle. The callback will be used, via @code{gsasl_callback()} , -by mechanisms to discover various parameters (such as username and -passwords). The callback function will be called with a -Gsasl_property value indicating the requested behaviour. For -example, for @code{GSASL_ANONYMOUS_TOKEN} , the function is expected to -invoke gsasl_property_set( @code{CTX} , @code{GSASL_ANONYMOUS_TOKEN} , "token") -where "token" is the anonymous token the application wishes the -SASL mechanism to use. See the manual for the meaning of all -parameters. - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_callback -@anchor{gsasl_callback} -@deftypefun {int} {gsasl_callback} (Gsasl * @var{ctx}, Gsasl_session * @var{sctx}, Gsasl_property @var{prop}) -@var{ctx}: handle received from @code{gsasl_init()} , may be NULL to derive it -from @code{sctx} . - -@var{sctx}: session handle. - -@var{prop}: enumerated value of Gsasl_property type. - -Invoke the application callback. The @code{prop} value indicate what the -callback is expected to do. For example, for -@code{GSASL_ANONYMOUS_TOKEN} , the function is expected to invoke -gsasl_property_set( @code{SCTX} , @code{GSASL_ANONYMOUS_TOKEN} , "token") where -"token" is the anonymous token the application wishes the SASL -mechanism to use. See the manual for the meaning of all -parameters. - -Return value: Returns whatever the application callback returns, or -@code{GSASL_NO_CALLBACK} if no application was known. - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_callback_hook_set -@anchor{gsasl_callback_hook_set} -@deftypefun {void} {gsasl_callback_hook_set} (Gsasl * @var{ctx}, void * @var{hook}) -@var{ctx}: libgsasl handle. - -@var{hook}: opaque pointer to application specific data. - -Store application specific data in the libgsasl handle. - -The application data can be later (for instance, inside a callback) -be retrieved by calling @code{gsasl_callback_hook_get()} . This is -normally used by the application to maintain a global state between -the main program and callbacks. - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_callback_hook_get -@anchor{gsasl_callback_hook_get} -@deftypefun {void *} {gsasl_callback_hook_get} (Gsasl * @var{ctx}) -@var{ctx}: libgsasl handle. - -Retrieve application specific data from libgsasl handle. - -The application data is set using @code{gsasl_callback_hook_set()} . This -is normally used by the application to maintain a global state -between the main program and callbacks. - -Return value: Returns the application specific data, or NULL. - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_session_hook_set -@anchor{gsasl_session_hook_set} -@deftypefun {void} {gsasl_session_hook_set} (Gsasl_session * @var{sctx}, void * @var{hook}) -@var{sctx}: libgsasl session handle. - -@var{hook}: opaque pointer to application specific data. - -Store application specific data in the libgsasl session handle. - -The application data can be later (for instance, inside a callback) -be retrieved by calling @code{gsasl_session_hook_get()} . This is normally -used by the application to maintain a per-session state between the -main program and callbacks. - -@strong{Since:} 0.2.14 -@end deftypefun - -@subheading gsasl_session_hook_get -@anchor{gsasl_session_hook_get} -@deftypefun {void *} {gsasl_session_hook_get} (Gsasl_session * @var{sctx}) -@var{sctx}: libgsasl session handle. - -Retrieve application specific data from libgsasl session handle. - -The application data is set using @code{gsasl_callback_hook_set()} . This -is normally used by the application to maintain a per-session state -between the main program and callbacks. - -Return value: Returns the application specific data, or NULL. - -@strong{Since:} 0.2.14 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/crypto.c.texi gsasl-2.2.0/doc/texi/crypto.c.texi --- gsasl-2.0.1/doc/texi/crypto.c.texi 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/texi/crypto.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,93 +0,0 @@ -@subheading gsasl_nonce -@anchor{gsasl_nonce} -@deftypefun {int} {gsasl_nonce} (char * @var{data}, size_t @var{datalen}) -@var{data}: output array to be filled with unpredictable random data. - -@var{datalen}: size of output array. - -Store unpredictable data of given size in the provided buffer. - -Return value: Returns @code{GSASL_OK} iff successful. -@end deftypefun - -@subheading gsasl_random -@anchor{gsasl_random} -@deftypefun {int} {gsasl_random} (char * @var{data}, size_t @var{datalen}) -@var{data}: output array to be filled with strong random data. - -@var{datalen}: size of output array. - -Store cryptographically strong random data of given size in the -provided buffer. - -Return value: Returns @code{GSASL_OK} iff successful. -@end deftypefun - -@subheading gsasl_hash_length -@anchor{gsasl_hash_length} -@deftypefun {size_t} {gsasl_hash_length} (Gsasl_hash @var{hash}) -@var{hash}: a @code{Gsasl_hash} element, e.g., @code{GSASL_HASH_SHA256} . - -Return the digest output size for hash function @code{hash} . For -example, gsasl_hash_length(GSASL_HASH_SHA256) returns -GSASL_HASH_SHA256_SIZE which is 32. - -@strong{Returns:} size of supplied @code{Gsasl_hash} element. - -@strong{Since:} 1.10 -@end deftypefun - -@subheading gsasl_scram_secrets_from_salted_password -@anchor{gsasl_scram_secrets_from_salted_password} -@deftypefun {int} {gsasl_scram_secrets_from_salted_password} (Gsasl_hash @var{hash}, const char * @var{salted_password}, char * @var{client_key}, char * @var{server_key}, char * @var{stored_key}) -@var{hash}: a @code{Gsasl_hash} element, e.g., @code{GSASL_HASH_SHA256} . - -@var{salted_password}: input array with salted password. - -@var{client_key}: pre-allocated output array with derived client key. - -@var{server_key}: pre-allocated output array with derived server key. - -@var{stored_key}: pre-allocated output array with derived stored key. - -Helper function to derive SCRAM ClientKey/ServerKey/StoredKey. The - @code{client_key} , @code{server_key} , and @code{stored_key} buffers must have room to -hold digest for given @code{hash} , use @code{GSASL_HASH_MAX_SIZE} which is -sufficient for all hashes. - -Return value: Returns @code{GSASL_OK} if successful, or error code. - -@strong{Since:} 1.10 -@end deftypefun - -@subheading gsasl_scram_secrets_from_password -@anchor{gsasl_scram_secrets_from_password} -@deftypefun {int} {gsasl_scram_secrets_from_password} (Gsasl_hash @var{hash}, const char * @var{password}, unsigned int @var{iteration_count}, const char * @var{salt}, size_t @var{saltlen}, char * @var{salted_password}, char * @var{client_key}, char * @var{server_key}, char * @var{stored_key}) -@var{hash}: a @code{Gsasl_hash} element, e.g., @code{GSASL_HASH_SHA256} . - -@var{password}: input parameter with password. - -@var{iteration_count}: number of PBKDF2 rounds to apply. - -@var{salt}: input character array of @code{saltlen} length with salt for PBKDF2. - -@var{saltlen}: length of @code{salt} . - -@var{salted_password}: pre-allocated output array with derived salted password. - -@var{client_key}: pre-allocated output array with derived client key. - -@var{server_key}: pre-allocated output array with derived server key. - -@var{stored_key}: pre-allocated output array with derived stored key. - -Helper function to generate SCRAM secrets from a password. The - @code{salted_password} , @code{client_key} , @code{server_key} , and @code{stored_key} buffers -must have room to hold digest for given @code{hash} , use -@code{GSASL_HASH_MAX_SIZE} which is sufficient for all hashes. - -Return value: Returns @code{GSASL_OK} if successful, or error code. - -@strong{Since:} 1.10 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/done.c.texi gsasl-2.2.0/doc/texi/done.c.texi --- gsasl-2.0.1/doc/texi/done.c.texi 2022-07-15 10:52:24.000000000 -0500 +++ gsasl-2.2.0/doc/texi/done.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,9 +0,0 @@ -@subheading gsasl_done -@anchor{gsasl_done} -@deftypefun {void} {gsasl_done} (Gsasl * @var{ctx}) -@var{ctx}: libgsasl handle. - -This function destroys a libgsasl handle. The handle must not be -used with other libgsasl functions after this call. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/error.c.texi gsasl-2.2.0/doc/texi/error.c.texi --- gsasl-2.0.1/doc/texi/error.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/error.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,38 +0,0 @@ -@subheading gsasl_strerror -@anchor{gsasl_strerror} -@deftypefun {const char *} {gsasl_strerror} (int @var{err}) -@var{err}: libgsasl error code - -Convert return code to human readable string explanation of the -reason for the particular error code. - -This string can be used to output a diagnostic message to the user. - -This function is one of few in the library that can be used without -a successful call to @code{gsasl_init()} . - -Return value: Returns a pointer to a statically allocated string -containing an explanation of the error code @code{err} . -@end deftypefun - -@subheading gsasl_strerror_name -@anchor{gsasl_strerror_name} -@deftypefun {const char *} {gsasl_strerror_name} (int @var{err}) -@var{err}: libgsasl error code - -Convert return code to human readable string representing the error -code symbol itself. For example, gsasl_strerror_name(@code{GSASL_OK} ) -returns the string "GSASL_OK". - -This string can be used to output a diagnostic message to the user. - -This function is one of few in the library that can be used without -a successful call to @code{gsasl_init()} . - -Return value: Returns a pointer to a statically allocated string -containing a string version of the error code @code{err} , or NULL if -the error code is not known. - -@strong{Since:} 0.2.29 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/free.c.texi gsasl-2.2.0/doc/texi/free.c.texi --- gsasl-2.0.1/doc/texi/free.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/free.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,16 +0,0 @@ -@subheading gsasl_free -@anchor{gsasl_free} -@deftypefun {void} {gsasl_free} (void * @var{ptr}) -@var{ptr}: memory pointer - -Invoke free( @code{ptr} ) to de-allocate memory pointer. Typically used on -strings allocated by other libgsasl functions. - -This is useful on Windows where libgsasl is linked to one CRT and -the application is linked to another CRT. Then malloc/free will -not use the same heap. This happens if you build libgsasl using -mingw32 and the application with Visual Studio. - -@strong{Since:} 0.2.19 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/init.c.texi gsasl-2.2.0/doc/texi/init.c.texi --- gsasl-2.0.1/doc/texi/init.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/init.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,14 +0,0 @@ -@subheading gsasl_init -@anchor{gsasl_init} -@deftypefun {int} {gsasl_init} (Gsasl ** @var{ctx}) -@var{ctx}: pointer to libgsasl handle. - -This functions initializes libgsasl. The handle pointed to by ctx -is valid for use with other libgsasl functions iff this function is -successful. It also register all builtin SASL mechanisms, using -@code{gsasl_register()} . - -Return value: GSASL_OK iff successful, otherwise -@code{GSASL_MALLOC_ERROR} . -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/listmech.c.texi gsasl-2.2.0/doc/texi/listmech.c.texi --- gsasl-2.0.1/doc/texi/listmech.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/listmech.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,30 +0,0 @@ -@subheading gsasl_client_mechlist -@anchor{gsasl_client_mechlist} -@deftypefun {int} {gsasl_client_mechlist} (Gsasl * @var{ctx}, char ** @var{out}) -@var{ctx}: libgsasl handle. - -@var{out}: newly allocated output character array. - -Return a newly allocated string containing SASL names, separated by -space, of mechanisms supported by the libgsasl client. @code{out} is -allocated by this function, and it is the responsibility of caller -to deallocate it. - -Return value: Returns @code{GSASL_OK} if successful, or error code. -@end deftypefun - -@subheading gsasl_server_mechlist -@anchor{gsasl_server_mechlist} -@deftypefun {int} {gsasl_server_mechlist} (Gsasl * @var{ctx}, char ** @var{out}) -@var{ctx}: libgsasl handle. - -@var{out}: newly allocated output character array. - -Return a newly allocated string containing SASL names, separated by -space, of mechanisms supported by the libgsasl server. @code{out} is -allocated by this function, and it is the responsibility of caller -to deallocate it. - -Return value: Returns @code{GSASL_OK} if successful, or error code. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/md5pwd.c.texi gsasl-2.2.0/doc/texi/md5pwd.c.texi --- gsasl-2.0.1/doc/texi/md5pwd.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/md5pwd.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,24 +0,0 @@ -@subheading gsasl_simple_getpass -@anchor{gsasl_simple_getpass} -@deftypefun {int} {gsasl_simple_getpass} (const char * @var{filename}, const char * @var{username}, char ** @var{key}) -@var{filename}: filename of file containing passwords. - -@var{username}: username string. - -@var{key}: newly allocated output character array. - -Retrieve password for user from specified file. The buffer @code{key} contain the password if this function is successful. The caller is -responsible for deallocating it. - -The file should be on the UoW "MD5 Based Authentication" format, -which means it is in text format with comments denoted by # first -on the line, with user entries looking as "usernameTABpassword". -This function removes CR and LF at the end of lines before -processing. TAB, CR, and LF denote ASCII values 9, 13, and 10, -respectively. - -Return value: Return @code{GSASL_OK} if output buffer contains the -password, @code{GSASL_AUTHENTICATION_ERROR} if the user could not be -found, or other error code. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/mechname.c.texi gsasl-2.2.0/doc/texi/mechname.c.texi --- gsasl-2.0.1/doc/texi/mechname.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/mechname.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,14 +0,0 @@ -@subheading gsasl_mechanism_name -@anchor{gsasl_mechanism_name} -@deftypefun {const char *} {gsasl_mechanism_name} (Gsasl_session * @var{sctx}) -@var{sctx}: libgsasl session handle. - -This function returns the name of the SASL mechanism used in the -session. The pointer must not be deallocated by the caller. - -Return value: Returns a zero terminated character array with the -name of the SASL mechanism, or NULL if not known. - -@strong{Since:} 0.2.28 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/property.c.texi gsasl-2.2.0/doc/texi/property.c.texi --- gsasl-2.0.1/doc/texi/property.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/property.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,107 +0,0 @@ -@subheading gsasl_property_free -@anchor{gsasl_property_free} -@deftypefun {void} {gsasl_property_free} (Gsasl_session * @var{sctx}, Gsasl_property @var{prop}) -@var{sctx}: session handle. - -@var{prop}: enumerated value of @code{Gsasl_property} type to clear - -Deallocate associated data with property @code{prop} in session handle. -After this call, gsasl_property_fast( @code{sctx} , @code{prop} ) will always -return NULL. - -@strong{Since:} 2.0.0 -@end deftypefun - -@subheading gsasl_property_set -@anchor{gsasl_property_set} -@deftypefun {int} {gsasl_property_set} (Gsasl_session * @var{sctx}, Gsasl_property @var{prop}, const char * @var{data}) -@var{sctx}: session handle. - -@var{prop}: enumerated value of Gsasl_property type, indicating the -type of data in @code{data} . - -@var{data}: zero terminated character string to store. - -Make a copy of @code{data} and store it in the session handle for the -indicated property @code{prop} . - -You can immediately deallocate @code{data} after calling this function, -without affecting the data stored in the session handle. - -Return value: @code{GSASL_OK} iff successful, otherwise -@code{GSASL_MALLOC_ERROR} . - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_property_set_raw -@anchor{gsasl_property_set_raw} -@deftypefun {int} {gsasl_property_set_raw} (Gsasl_session * @var{sctx}, Gsasl_property @var{prop}, const char * @var{data}, size_t @var{len}) -@var{sctx}: session handle. - -@var{prop}: enumerated value of Gsasl_property type, indicating the -type of data in @code{data} . - -@var{data}: character string to store. - -@var{len}: length of character string to store. - -Make a copy of @code{len} sized @code{data} and store a zero terminated version -of it in the session handle for the indicated property @code{prop} . - -You can immediately deallocate @code{data} after calling this function, -without affecting the data stored in the session handle. - -Except for the length indicator, this function is identical to -gsasl_property_set. - -Return value: @code{GSASL_OK} iff successful, otherwise -@code{GSASL_MALLOC_ERROR} . - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_property_fast -@anchor{gsasl_property_fast} -@deftypefun {const char *} {gsasl_property_fast} (Gsasl_session * @var{sctx}, Gsasl_property @var{prop}) -@var{sctx}: session handle. - -@var{prop}: enumerated value of Gsasl_property type, indicating the -type of data in @code{data} . - -Retrieve the data stored in the session handle for given property - @code{prop} . - -The pointer is to live data, and must not be deallocated or -modified in any way. - -This function will not invoke the application callback. - -Return value: Return property value, if known, or NULL if no value -known. - -@strong{Since:} 0.2.0 -@end deftypefun - -@subheading gsasl_property_get -@anchor{gsasl_property_get} -@deftypefun {const char *} {gsasl_property_get} (Gsasl_session * @var{sctx}, Gsasl_property @var{prop}) -@var{sctx}: session handle. - -@var{prop}: enumerated value of Gsasl_property type, indicating the -type of data in @code{data} . - -Retrieve the data stored in the session handle for given property - @code{prop} , possibly invoking the application callback to get the value. - -The pointer is to live data, and must not be deallocated or -modified in any way. - -This function will invoke the application callback, using -@code{gsasl_callback()} , when a property value is not known. - -Return value: Return data for property, or NULL if no value known. - -@strong{Since:} 0.2.0 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/register.c.texi gsasl-2.2.0/doc/texi/register.c.texi --- gsasl-2.0.1/doc/texi/register.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/register.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,15 +0,0 @@ -@subheading gsasl_register -@anchor{gsasl_register} -@deftypefun {int} {gsasl_register} (Gsasl * @var{ctx}, const Gsasl_mechanism * @var{mech}) -@var{ctx}: pointer to libgsasl handle. - -@var{mech}: plugin structure with information about plugin. - -This function initialize given mechanism, and if successful, add it -to the list of plugins that is used by the library. - -Return value: @code{GSASL_OK} iff successful, otherwise @code{GSASL_MALLOC_ERROR} . - -@strong{Since:} 0.2.0 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/saslprep.c.texi gsasl-2.2.0/doc/texi/saslprep.c.texi --- gsasl-2.0.1/doc/texi/saslprep.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/saslprep.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,20 +0,0 @@ -@subheading gsasl_saslprep -@anchor{gsasl_saslprep} -@deftypefun {int} {gsasl_saslprep} (const char * @var{in}, Gsasl_saslprep_flags @var{flags}, char ** @var{out}, int * @var{stringpreprc}) -@var{in}: a UTF-8 encoded string. - -@var{flags}: any SASLprep flag, e.g., @code{GSASL_ALLOW_UNASSIGNED} . - -@var{out}: on exit, contains newly allocated output string. - -@var{stringpreprc}: if non-NULL, will hold precise stringprep return code. - -Prepare string using SASLprep. On success, the @code{out} variable must -be deallocated by the caller. - -Return value: Returns @code{GSASL_OK} on success, or -@code{GSASL_SASLPREP_ERROR} on error. - -@strong{Since:} 0.2.3 -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/suggest.c.texi gsasl-2.2.0/doc/texi/suggest.c.texi --- gsasl-2.0.1/doc/texi/suggest.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/suggest.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,34 +0,0 @@ -@subheading gsasl_mechanism_name_p -@anchor{gsasl_mechanism_name_p} -@deftypefun {int} {gsasl_mechanism_name_p} (const char * @var{mech}) -@var{mech}: input variable with mechanism name string. - -Check if the mechanism name string @code{mech} follows syntactical rules. -It does not check that the name is registered with IANA. It does not -check that the mechanism name is actually implemented and supported. - -SASL mechanisms are named by strings, from 1 to 20 characters in -length, consisting of upper-case letters, digits, hyphens, and/or -underscores. - -@strong{Returns:} non-zero when mechanism name string @code{mech} conforms to -rules, zero when it does not meet the requirements. - -@strong{Since:} 2.0.0 -@end deftypefun - -@subheading gsasl_client_suggest_mechanism -@anchor{gsasl_client_suggest_mechanism} -@deftypefun {const char *} {gsasl_client_suggest_mechanism} (Gsasl * @var{ctx}, const char * @var{mechlist}) -@var{ctx}: libgsasl handle. - -@var{mechlist}: input character array with SASL mechanism names, -separated by invalid characters (e.g. SPC). - -Given a list of mechanisms, suggest which to use. - -Return value: Returns name of "best" SASL mechanism supported by -the libgsasl client which is present in the input string, or -NULL if no supported mechanism is found. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/supportp.c.texi gsasl-2.2.0/doc/texi/supportp.c.texi --- gsasl-2.0.1/doc/texi/supportp.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/supportp.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,28 +0,0 @@ -@subheading gsasl_client_support_p -@anchor{gsasl_client_support_p} -@deftypefun {int} {gsasl_client_support_p} (Gsasl * @var{ctx}, const char * @var{name}) -@var{ctx}: libgsasl handle. - -@var{name}: name of SASL mechanism. - -Decide whether there is client-side support for a specified -mechanism. - -Return value: Returns 1 if the libgsasl client supports the named -mechanism, otherwise 0. -@end deftypefun - -@subheading gsasl_server_support_p -@anchor{gsasl_server_support_p} -@deftypefun {int} {gsasl_server_support_p} (Gsasl * @var{ctx}, const char * @var{name}) -@var{ctx}: libgsasl handle. - -@var{name}: name of SASL mechanism. - -Decide whether there is server-side support for a specified -mechanism. - -Return value: Returns 1 if the libgsasl server supports the named -mechanism, otherwise 0. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/version.c.texi gsasl-2.2.0/doc/texi/version.c.texi --- gsasl-2.0.1/doc/texi/version.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/version.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,19 +0,0 @@ -@subheading gsasl_check_version -@anchor{gsasl_check_version} -@deftypefun {const char *} {gsasl_check_version} (const char * @var{req_version}) -@var{req_version}: version string to compare with, or NULL. - -Check GNU SASL Library version. - -See @code{GSASL_VERSION} for a suitable @code{req_version} string. - -This function is one of few in the library that can be used without -a successful call to @code{gsasl_init()} . - -Return value: Check that the version of the library is at -minimum the one given as a string in @code{req_version} and return the -actual version string of the library; return NULL if the -condition is not met. If NULL is passed to this function no -check is done and only the version string is returned. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/xcode.c.texi gsasl-2.2.0/doc/texi/xcode.c.texi --- gsasl-2.0.1/doc/texi/xcode.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/xcode.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,48 +0,0 @@ -@subheading gsasl_encode -@anchor{gsasl_encode} -@deftypefun {int} {gsasl_encode} (Gsasl_session * @var{sctx}, const char * @var{input}, size_t @var{input_len}, char ** @var{output}, size_t * @var{output_len}) -@var{sctx}: libgsasl session handle. - -@var{input}: input byte array. - -@var{input_len}: size of input byte array. - -@var{output}: newly allocated output byte array. - -@var{output_len}: pointer to output variable with size of output byte array. - -Encode data according to negotiated SASL mechanism. This might mean -that data is integrity or privacy protected. - -The @code{output} buffer is allocated by this function, and it is the -responsibility of caller to deallocate it by calling -gsasl_free( @code{output} ). - -Return value: Returns @code{GSASL_OK} if encoding was successful, -otherwise an error code. -@end deftypefun - -@subheading gsasl_decode -@anchor{gsasl_decode} -@deftypefun {int} {gsasl_decode} (Gsasl_session * @var{sctx}, const char * @var{input}, size_t @var{input_len}, char ** @var{output}, size_t * @var{output_len}) -@var{sctx}: libgsasl session handle. - -@var{input}: input byte array. - -@var{input_len}: size of input byte array. - -@var{output}: newly allocated output byte array. - -@var{output_len}: pointer to output variable with size of output byte array. - -Decode data according to negotiated SASL mechanism. This might mean -that data is integrity or privacy protected. - -The @code{output} buffer is allocated by this function, and it is the -responsibility of caller to deallocate it by calling -gsasl_free( @code{output} ). - -Return value: Returns @code{GSASL_OK} if encoding was successful, -otherwise an error code. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/xfinish.c.texi gsasl-2.2.0/doc/texi/xfinish.c.texi --- gsasl-2.0.1/doc/texi/xfinish.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/xfinish.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,9 +0,0 @@ -@subheading gsasl_finish -@anchor{gsasl_finish} -@deftypefun {void} {gsasl_finish} (Gsasl_session * @var{sctx}) -@var{sctx}: libgsasl session handle. - -Destroy a libgsasl client or server handle. The handle must not be -used with other libgsasl functions after this call. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/xstart.c.texi gsasl-2.2.0/doc/texi/xstart.c.texi --- gsasl-2.0.1/doc/texi/xstart.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/xstart.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,32 +0,0 @@ -@subheading gsasl_client_start -@anchor{gsasl_client_start} -@deftypefun {int} {gsasl_client_start} (Gsasl * @var{ctx}, const char * @var{mech}, Gsasl_session ** @var{sctx}) -@var{ctx}: libgsasl handle. - -@var{mech}: name of SASL mechanism. - -@var{sctx}: pointer to client handle. - -This functions initiates a client SASL authentication. This -function must be called before any other gsasl_client_*() function -is called. - -Return value: Returns @code{GSASL_OK} if successful, or error code. -@end deftypefun - -@subheading gsasl_server_start -@anchor{gsasl_server_start} -@deftypefun {int} {gsasl_server_start} (Gsasl * @var{ctx}, const char * @var{mech}, Gsasl_session ** @var{sctx}) -@var{ctx}: libgsasl handle. - -@var{mech}: name of SASL mechanism. - -@var{sctx}: pointer to server handle. - -This functions initiates a server SASL authentication. This -function must be called before any other gsasl_server_*() function -is called. - -Return value: Returns @code{GSASL_OK} if successful, or error code. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/texi/xstep.c.texi gsasl-2.2.0/doc/texi/xstep.c.texi --- gsasl-2.0.1/doc/texi/xstep.c.texi 2022-07-15 10:52:25.000000000 -0500 +++ gsasl-2.2.0/doc/texi/xstep.c.texi 1969-12-31 18:00:00.000000000 -0600 @@ -1,55 +0,0 @@ -@subheading gsasl_step -@anchor{gsasl_step} -@deftypefun {int} {gsasl_step} (Gsasl_session * @var{sctx}, const char * @var{input}, size_t @var{input_len}, char ** @var{output}, size_t * @var{output_len}) -@var{sctx}: libgsasl session handle. - -@var{input}: input byte array. - -@var{input_len}: size of input byte array. - -@var{output}: newly allocated output byte array. - -@var{output_len}: pointer to output variable with size of output byte array. - -Perform one step of SASL authentication. This reads data from the -other end (from @code{input} and @code{input_len} ), processes it (potentially -invoking callbacks to the application), and writes data to server -(into newly allocated variable @code{output} and @code{output_len} that -indicate the length of @code{output} ). - -The contents of the @code{output} buffer is unspecified if this functions -returns anything other than @code{GSASL_OK} or @code{GSASL_NEEDS_MORE} . If -this function return @code{GSASL_OK} or @code{GSASL_NEEDS_MORE} , however, the - @code{output} buffer is allocated by this function, and it is the -responsibility of caller to deallocate it by calling -gsasl_free( @code{output} ). - -Return value: Returns @code{GSASL_OK} if authenticated terminated -successfully, @code{GSASL_NEEDS_MORE} if more data is needed, or error -code. -@end deftypefun - -@subheading gsasl_step64 -@anchor{gsasl_step64} -@deftypefun {int} {gsasl_step64} (Gsasl_session * @var{sctx}, const char * @var{b64input}, char ** @var{b64output}) -@var{sctx}: libgsasl client handle. - -@var{b64input}: input base64 encoded byte array. - -@var{b64output}: newly allocated output base64 encoded byte array. - -This is a simple wrapper around @code{gsasl_step()} that base64 decodes -the input and base64 encodes the output. - -The contents of the @code{b64output} buffer is unspecified if this -functions returns anything other than @code{GSASL_OK} or -@code{GSASL_NEEDS_MORE} . If this function return @code{GSASL_OK} or -@code{GSASL_NEEDS_MORE} , however, the @code{b64output} buffer is allocated by -this function, and it is the responsibility of caller to deallocate -it by calling gsasl_free( @code{b64output} ). - -Return value: Returns @code{GSASL_OK} if authenticated terminated -successfully, @code{GSASL_NEEDS_MORE} if more data is needed, or error -code. -@end deftypefun - diff -Nru gsasl-2.0.1/doc/version.texi gsasl-2.2.0/doc/version.texi --- gsasl-2.0.1/doc/version.texi 2022-07-15 10:52:17.000000000 -0500 +++ gsasl-2.2.0/doc/version.texi 2022-09-03 09:56:33.000000000 -0500 @@ -1,4 +1,4 @@ -@set UPDATED 15 July 2022 -@set UPDATED-MONTH July 2022 -@set EDITION 2.0.1 -@set VERSION 2.0.1 +@set UPDATED 16 August 2022 +@set UPDATED-MONTH August 2022 +@set EDITION 2.2.0 +@set VERSION 2.2.0 diff -Nru gsasl-2.0.1/examples/Makefile.in gsasl-2.2.0/examples/Makefile.in --- gsasl-2.0.1/examples/Makefile.in 2022-07-15 10:51:19.000000000 -0500 +++ gsasl-2.2.0/examples/Makefile.in 2022-09-03 09:52:56.000000000 -0500 @@ -446,6 +446,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -806,6 +807,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1604,6 +1606,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1801,6 +1804,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/examples/openid20/Makefile.in gsasl-2.2.0/examples/openid20/Makefile.in --- gsasl-2.0.1/examples/openid20/Makefile.in 2022-07-15 10:51:19.000000000 -0500 +++ gsasl-2.2.0/examples/openid20/Makefile.in 2022-09-03 09:52:56.000000000 -0500 @@ -363,6 +363,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -723,6 +724,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1521,6 +1523,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1718,6 +1721,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/examples/saml20/Makefile.in gsasl-2.2.0/examples/saml20/Makefile.in --- gsasl-2.0.1/examples/saml20/Makefile.in 2022-07-15 10:51:19.000000000 -0500 +++ gsasl-2.2.0/examples/saml20/Makefile.in 2022-09-03 09:52:56.000000000 -0500 @@ -362,6 +362,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -722,6 +723,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1520,6 +1522,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1717,6 +1720,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/gl/intprops.h gsasl-2.2.0/gl/intprops.h --- gsasl-2.0.1/gl/intprops.h 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/intprops.h 2022-09-03 09:51:32.000000000 -0500 @@ -15,19 +15,10 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ - #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H -#include - -/* Return a value with the common real type of E and V and the value of V. - Do not evaluate E. */ -#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) - -/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see - . */ -#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) +#include "intprops-internal.h" /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ @@ -37,11 +28,11 @@ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if the real type T is signed. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ -#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +#define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e) /* Minimum and maximum values for integer types and expressions. */ @@ -49,7 +40,7 @@ /* The width in bits of the integer type or expression T. Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ -#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t) /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) @@ -58,51 +49,6 @@ ? (t) -1 \ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) -/* The maximum and minimum values for the type of the expression E, - after integer promotion. E is not evaluated. */ -#define _GL_INT_MINIMUM(e) \ - (EXPR_SIGNED (e) \ - ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_CONVERT (e, 0)) -#define _GL_INT_MAXIMUM(e) \ - (EXPR_SIGNED (e) \ - ? _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_NEGATE_CONVERT (e, 1)) -#define _GL_SIGNED_INT_MAXIMUM(e) \ - (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) - -/* Work around OpenVMS incompatibility with C99. */ -#if !defined LLONG_MAX && defined __INT64_MAX -# define LLONG_MAX __INT64_MAX -# define LLONG_MIN __INT64_MIN -#endif - -/* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. - If this is a problem for you, please let us know how to fix it for your host. - This assumption is tested by the intprops-tests module. */ - -/* Does the __typeof__ keyword work? This could be done by - 'configure', but for now it's easier to do it by hand. */ -#if (2 <= __GNUC__ \ - || (4 <= __clang_major__) \ - || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) -# define _GL_HAVE___TYPEOF__ 1 -#else -# define _GL_HAVE___TYPEOF__ 0 -#endif - -/* Return 1 if the integer type or expression T might be signed. Return 0 - if it is definitely unsigned. T must not be a bit-field expression. - This macro does not evaluate its argument, and expands to an - integer constant expression. */ -#if _GL_HAVE___TYPEOF__ -# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) -#else -# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 -#endif - /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ @@ -129,12 +75,11 @@ /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C - operators might not yield numerically correct answers due to - arithmetic overflow. They do not rely on undefined or - implementation-defined behavior. Their implementations are simple - and straightforward, but they are harder to use and may be less - efficient than the INT__WRAPV, INT__OK, and - INT__OVERFLOW macros described below. + operators overflow arithmetically when given the same arguments. + These macros do not rely on undefined or implementation-defined behavior. + Although their implementations are simple and straightforward, + they are harder to use and may be less efficient than the + INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: @@ -181,9 +126,7 @@ /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ - ((min) < 0 \ - ? (a) < - (max) \ - : 0 < (a)) + _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle @@ -227,43 +170,6 @@ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) -/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow - (A, B, P) work when P is non-null. */ -#ifdef __EDG__ -/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned - . */ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) -/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, - see . */ -#elif 7 <= __GNUC__ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 -#else -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#endif - -/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ -#if defined __clang_major__ && __clang_major__ < 14 -/* Work around Clang bug . */ -# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 -#else -# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW -#endif - -/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for - __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ -#ifdef __EDG__ -/* In EDG-based compilers like ICC 2021.3 and earlier, - __builtin_add_overflow_p etc. are not treated as integral constant - expressions even when all arguments are. */ -# define _GL_HAS_BUILTIN_OVERFLOW_P 0 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) -#else -# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) -#endif - /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume @@ -350,13 +256,18 @@ Because the WRAPV macros convert the result, they report overflow in different circumstances than the OVERFLOW macros do. For example, in the typical case with 16-bit 'short' and 32-bit 'int', - if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B) + if A, B and *R are all of type 'short' then INT_ADD_OVERFLOW (A, B) returns false because the addition cannot overflow after A and B - are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns + are converted to 'int', whereas INT_ADD_WRAPV (A, B, R) returns true or false depending on whether the sum fits into 'short'. These macros are tuned for their last input argument being a constant. + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ @@ -364,12 +275,7 @@ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#if _GL_HAS_BUILTIN_OVERFLOW_P -# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) -#else -# define INT_NEGATE_OVERFLOW(a) \ - INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) -#endif +#define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ @@ -391,224 +297,9 @@ /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ -#if _GL_HAS_BUILTIN_ADD_OVERFLOW -# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) -# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) -#else -# define INT_ADD_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) -# define INT_SUBTRACT_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) -#endif -#if _GL_HAS_BUILTIN_MUL_OVERFLOW -# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ - || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ - && !defined __EDG__) -# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) -# else - /* Work around GCC bug 91450. */ -# define INT_MULTIPLY_WRAPV(a, b, r) \ - ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ - && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ - ? ((void) __builtin_mul_overflow (a, b, r), 1) \ - : __builtin_mul_overflow (a, b, r)) -# endif -#else -# define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) -#endif - -/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 - https://llvm.org/bugs/show_bug.cgi?id=25390 - For now, assume all versions of GCC-like compilers generate bogus - warnings for _Generic. This matters only for compilers that - lack relevant builtins. */ -#if __GNUC__ || defined __clang__ -# define _GL__GENERIC_BOGUS 1 -#else -# define _GL__GENERIC_BOGUS 0 -#endif - -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. Return 1 if the - result overflows. See above for restrictions. */ -#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (_Generic \ - (*(r), \ - signed char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - signed char, SCHAR_MIN, SCHAR_MAX), \ - unsigned char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned char, 0, UCHAR_MAX), \ - short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - short int, SHRT_MIN, SHRT_MAX), \ - unsigned short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned short int, 0, USHRT_MAX), \ - int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX), \ - unsigned int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX), \ - long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX), \ - unsigned long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX), \ - long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX), \ - unsigned long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -#else -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. If *R is - signed, its type is ST with bounds SMIN..SMAX; otherwise its type - is UT with bounds U..UMAX. ST and UT are narrower than int. - Return 1 if the result overflows. See above for restrictions. */ -# if _GL_HAVE___TYPEOF__ -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (TYPE_SIGNED (__typeof__ (*(r))) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) -# else -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (overflow (a, b, smin, smax) \ - ? (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ - : (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) -# endif - -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (signed char) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - signed char, SCHAR_MIN, SCHAR_MAX, \ - unsigned char, UCHAR_MAX) \ - : sizeof *(r) == sizeof (short int) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - short int, SHRT_MIN, SHRT_MAX, \ - unsigned short int, USHRT_MAX) \ - : sizeof *(r) == sizeof (int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX)) \ - : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) -# ifdef LLONG_MAX -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (long int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) \ - : (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -# else -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) -# endif -#endif - -/* Store the low-order bits of A B into *R, where the operation - is given by OP. Use the unsigned type UT for calculation to avoid - overflow problems. *R's type is T, with extrema TMIN and TMAX. - T must be a signed integer type. Return 1 if the result overflows. */ -#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ - (overflow (a, b, tmin, tmax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) - -/* Return the low-order bits of A B, where the operation is given - by OP. Use the unsigned type UT for calculation to avoid undefined - behavior on signed integer overflow, and convert the result to type T. - UT is at least as wide as T and is no narrower than unsigned int, - T is two's complement, and there is no padding or trap representations. - Assume that converting UT to T yields the low-order bits, as is - done in all known two's-complement C compilers. E.g., see: - https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html - - According to the C standard, converting UT to T yields an - implementation-defined result or signal for values outside T's - range. However, code that works around this theoretical problem - runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: - https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html - As the compiler bug is real, don't try to work around the - theoretical problem. */ - -#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ - ((t) ((ut) (a) op (ut) (b))) - -/* Return true if the numeric values A + B, A - B, A * B fall outside - the range TMIN..TMAX. Arguments should be integer expressions - without side effects. TMIN should be signed and nonpositive. - TMAX should be positive, and should be signed unless TMIN is zero. */ -#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ - && (a) < (tmin) - (b)) \ - : (a) <= -1 - (b)) \ - || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ - : (a) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ - && (b) < (tmin) - (a)) \ - : (b) <= -1 - (a)) \ - || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ - && (tmax) < (a) + (b))) \ - : (tmax) < (b) || (tmax) - (b) < (a)) -#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ - (((a) < 0) == ((b) < 0) \ - ? ((a) < (b) \ - ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ - : (tmax) < (a) - (b)) \ - : (a) < 0 \ - ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ - || (a) - (tmin) < (b)) \ - : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ - && (tmax) <= -1 - (b)) \ - || (tmax) + (b) < (a))) -#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? ((a) < 0 \ - ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - ? (a) < (tmax) / (b) \ - : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ - : (tmax) / -(b)) \ - <= -1 - (a))) \ - : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ - ? (EXPR_SIGNED (a) \ - ? 0 < (a) + (tmin) \ - : 0 < (a) && -1 - (tmin) < (a) - 1) \ - : (tmin) / (b) < (a)) \ - : (b) == 0 \ - ? 0 \ - : ((a) < 0 \ - ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ - ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ - : (tmin) / (a) < (b)) \ - : (tmax) / (b) < (a))) +#define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r) /* The following macros compute A + B, A - B, and A * B, respectively. If no overflow occurs, they set *R to the result and return 1; @@ -624,6 +315,8 @@ A, B, and *R should be integers; they need not be the same type, and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. @@ -635,8 +328,8 @@ These macros are tuned for B being a constant. */ -#define INT_ADD_OK(a, b, r) ! INT_ADD_WRAPV (a, b, r) -#define INT_SUBTRACT_OK(a, b, r) ! INT_SUBTRACT_WRAPV (a, b, r) -#define INT_MULTIPLY_OK(a, b, r) ! INT_MULTIPLY_WRAPV (a, b, r) +#define INT_ADD_OK(a, b, r) (! INT_ADD_WRAPV (a, b, r)) +#define INT_SUBTRACT_OK(a, b, r) (! INT_SUBTRACT_WRAPV (a, b, r)) +#define INT_MULTIPLY_OK(a, b, r) (! INT_MULTIPLY_WRAPV (a, b, r)) #endif /* _GL_INTPROPS_H */ diff -Nru gsasl-2.0.1/gl/intprops-internal.h gsasl-2.2.0/gl/intprops-internal.h --- gsasl-2.0.1/gl/intprops-internal.h 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/gl/intprops-internal.h 2022-09-03 09:51:32.000000000 -0500 @@ -0,0 +1,392 @@ +/* intprops-internal.h -- properties of integer types not visible to users + + Copyright (C) 2001-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_INTPROPS_INTERNAL_H +#define _GL_INTPROPS_INTERNAL_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the real type T is signed. */ +#define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression T. + Do not evaluate T. T must not be a bit-field expression. + Padding bits are not supported; this is checked at compile-time below. */ +#define _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +#if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ + || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) +# define _GL_HAVE___TYPEOF__ 1 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ +#if _GL_HAVE___TYPEOF__ +# define _GL_SIGNED_TYPE_OR_EXPR(t) _GL_TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + A should not have side effects, and A's type should be an + integer with minimum value MIN and maximum MAX. */ +#define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 ? (a) < - (max) : 0 < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif + +#if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \ + && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW)) +# include +#endif + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. Arguments should not have side + effects and A, B and *R can be of any integer type other than char, + bool, a bit-precise integer type, or an enumeration type. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H +# define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b)) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b)) +#else +# define _GL_INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#elif defined ckd_mul && !defined _GL_STDCKDINT_H +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b)) +#else +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. Arguments should not have side effects, + and A, B and *R can be of any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. Arguments should not have side + effects, and A, B and *R can be of any integer type other than + char, bool, a bit-precise integer type, or an enumeration type. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (_GL_TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + signed char, SCHAR_MIN, SCHAR_MAX, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return 1 if the integer expressions A - B and -A would overflow, + respectively. Arguments should not have side effects, + and can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + These macros are tuned for their last input argument being a constant. */ + +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_INT_NEGATE_OVERFLOW(a) \ + __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0) +#else +# define _GL_INT_NEGATE_OVERFLOW(a) \ + _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should not have side effects + and can be any integer type other than char, bool, + a bit-precise integer type, or an enumeration type. + TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((_GL_INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (_GL_EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +#endif /* _GL_INTPROPS_INTERNAL_H */ diff -Nru gsasl-2.0.1/gl/Makefile.am gsasl-2.2.0/gl/Makefile.am --- gsasl-2.0.1/gl/Makefile.am 2022-07-15 10:50:25.000000000 -0500 +++ gsasl-2.2.0/gl/Makefile.am 2022-09-03 09:51:47.000000000 -0500 @@ -758,7 +758,7 @@ ## begin gnulib module intprops -EXTRA_DIST += intprops.h +EXTRA_DIST += intprops-internal.h intprops.h ## end gnulib module intprops @@ -1398,6 +1398,27 @@ ## end gnulib module stdbool +## begin gnulib module stdckdint + +BUILT_SOURCES += $(STDCKDINT_H) + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +if GL_GENERATE_STDCKDINT_H +stdckdint.h: stdckdint.in.h $(top_builddir)/config.status + $(gl_V_at)$(SED_HEADER_STDOUT) \ + $(srcdir)/stdckdint.in.h > $@-t + $(AM_V_at)mv $@-t $@ +else +stdckdint.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += stdckdint.h stdckdint.h-t + +EXTRA_DIST += intprops-internal.h stdckdint.in.h + +## end gnulib module stdckdint + ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) @@ -2018,6 +2039,7 @@ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ + -e 's/@''GNULIB_CHMOD''@/$(GL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \ @@ -2049,6 +2071,7 @@ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ + -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ diff -Nru gsasl-2.0.1/gl/Makefile.in gsasl-2.2.0/gl/Makefile.in --- gsasl-2.0.1/gl/Makefile.in 2022-07-15 10:51:19.000000000 -0500 +++ gsasl-2.2.0/gl/Makefile.in 2022-09-03 09:52:56.000000000 -0500 @@ -675,6 +675,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -1035,6 +1036,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1833,6 +1835,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -2030,6 +2033,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -2151,10 +2155,10 @@ iconv_open-irix.h iconv_open-osf.h iconv_open-solaris.h \ iconv_open-zos.h iconv_open-aix.gperf iconv_open-hpux.gperf \ iconv_open-irix.gperf iconv_open-osf.gperf \ - iconv_open-solaris.gperf iconv_open-zos.gperf intprops.h \ - inttypes.in.h limits.in.h localcharset.h locale.in.h \ - $(top_srcdir)/maint.mk malloc.c malloc.c malloca.h \ - lc-charset-dispatch.c lc-charset-dispatch.h \ + iconv_open-solaris.gperf iconv_open-zos.gperf \ + intprops-internal.h intprops.h inttypes.in.h limits.in.h \ + localcharset.h locale.in.h $(top_srcdir)/maint.mk malloc.c \ + malloc.c malloca.h lc-charset-dispatch.c lc-charset-dispatch.h \ mbrtowc-impl-utf8.h mbrtowc-impl.h mbtowc-lock.c mbtowc-lock.h \ windows-initguard.h memchr.valgrind msvc-inval.h \ msvc-nothrow.h netdb.in.h netinet_in.in.h pathmax.h \ @@ -2164,11 +2168,12 @@ setlocale_null.h windows-initguard.h w32sock.h signal.in.h \ _Noreturn.h arg-nonnull.h c++defs.h warn-on-use.h snprintf.c \ w32sock.h w32sock.h stat-w32.c stat-w32.h stat-time.h \ - stdalign.in.h stdarg.in.h stdbool.in.h stddef.in.h stdint.in.h \ - stdio.in.h stdlib.in.h streq.h strerror-override.h string.in.h \ - sys_select.in.h sys_socket.in.h sys_stat.in.h sys_time.in.h \ - sys_types.in.h sys_uio.in.h time.in.h unistd.in.h unistr.in.h \ - unitypes.in.h $(top_srcdir)/build-aux/update-copyright \ + stdalign.in.h stdarg.in.h stdbool.in.h intprops-internal.h \ + stdckdint.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \ + streq.h strerror-override.h string.in.h sys_select.in.h \ + sys_socket.in.h sys_stat.in.h sys_time.in.h sys_types.in.h \ + sys_uio.in.h time.in.h unistd.in.h unistr.in.h unitypes.in.h \ + $(top_srcdir)/build-aux/update-copyright \ $(top_srcdir)/build-aux/useless-if-before-free asnprintf.c \ float+.h printf-args.c printf-args.h printf-parse.c \ printf-parse.h vasnprintf.c vasnprintf.h asprintf.c \ @@ -2179,11 +2184,11 @@ iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h \ iconv_open-solaris.h iconv_open-zos.h inttypes.h $(LIMITS_H) \ locale.h netdb.h $(NETINET_IN_H) poll.h signal.h $(STDALIGN_H) \ - $(STDARG_H) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \ - stdlib.h string.h sys/select.h sys/socket.h sys/stat.h \ - sys/time.h sys/types.h sys/uio.h time.h unistd.h \ - $(LIBUNISTRING_UNISTR_H) $(LIBUNISTRING_UNITYPES_H) wchar.h \ - wctype.h + $(STDARG_H) $(STDBOOL_H) $(STDCKDINT_H) $(STDDEF_H) \ + $(STDINT_H) stdio.h stdlib.h string.h sys/select.h \ + sys/socket.h sys/stat.h sys/time.h sys/types.h sys/uio.h \ + time.h unistd.h $(LIBUNISTRING_UNISTR_H) \ + $(LIBUNISTRING_UNITYPES_H) wchar.h wctype.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \ arpa/inet.h-t errno.h errno.h-t fcntl.h fcntl.h-t float.h \ @@ -2194,13 +2199,13 @@ locale.h locale.h-t netdb.h netdb.h-t netinet/in.h \ netinet/in.h-t poll.h poll.h-t signal.h signal.h-t stdalign.h \ stdalign.h-t stdarg.h stdarg.h-t stdbool.h stdbool.h-t \ - stddef.h stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t \ - stdlib.h stdlib.h-t string.h string.h-t sys/select.h \ - sys/select.h-t sys/socket.h sys/socket.h-t sys/stat.h \ - sys/stat.h-t sys/time.h sys/time.h-t sys/types.h sys/types.h-t \ - sys/uio.h sys/uio.h-t time.h time.h-t unistd.h unistd.h-t \ - unistr.h unistr.h-t unitypes.h unitypes.h-t wchar.h wchar.h-t \ - wctype.h wctype.h-t + stdckdint.h stdckdint.h-t stddef.h stddef.h-t stdint.h \ + stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t string.h \ + string.h-t sys/select.h sys/select.h-t sys/socket.h \ + sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \ + sys/types.h sys/types.h-t sys/uio.h sys/uio.h-t time.h \ + time.h-t unistd.h unistd.h-t unistr.h unistr.h-t unitypes.h \ + unitypes.h-t wchar.h wchar.h-t wctype.h wctype.h-t MOSTLYCLEANDIRS = arpa netinet sys sys sys sys CLEANFILES = DISTCLEANFILES = @@ -3919,6 +3924,15 @@ @GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status @GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +@GL_GENERATE_STDCKDINT_H_TRUE@stdckdint.h: stdckdint.in.h $(top_builddir)/config.status +@GL_GENERATE_STDCKDINT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_STDCKDINT_H_TRUE@ $(srcdir)/stdckdint.in.h > $@-t +@GL_GENERATE_STDCKDINT_H_TRUE@ $(AM_V_at)mv $@-t $@ +@GL_GENERATE_STDCKDINT_H_FALSE@stdckdint.h: $(top_builddir)/config.status +@GL_GENERATE_STDCKDINT_H_FALSE@ rm -f $@ + # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @@ -4414,6 +4428,7 @@ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ + -e 's/@''GNULIB_CHMOD''@/$(GL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \ @@ -4445,6 +4460,7 @@ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ + -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ diff -Nru gsasl-2.0.1/gl/malloca.c gsasl-2.2.0/gl/malloca.c --- gsasl-2.0.1/gl/malloca.c 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/malloca.c 2022-09-03 09:51:32.000000000 -0500 @@ -21,8 +21,9 @@ /* Specification. */ #include "malloca.h" +#include + #include "idx.h" -#include "intprops.h" #include "verify.h" /* The speed critical point in this file is freea() applied to an alloca() @@ -50,17 +51,16 @@ uintptr_t alignment2_mask = 2 * sa_alignment_max - 1; int plus = sizeof (small_t) + alignment2_mask; idx_t nplus; - if (!INT_ADD_WRAPV (n, plus, &nplus) && !xalloc_oversized (nplus, 1)) + if (!ckd_add (&nplus, n, plus) && !xalloc_oversized (nplus, 1)) { char *mem = (char *) malloc (nplus); if (mem != NULL) { uintptr_t umem = (uintptr_t)mem, umemplus; - /* The INT_ADD_WRAPV avoids signed integer overflow on + /* The ckd_add avoids signed integer overflow on theoretical platforms where UINTPTR_MAX <= INT_MAX. */ - INT_ADD_WRAPV (umem, sizeof (small_t) + sa_alignment_max - 1, - &umemplus); + ckd_add (&umemplus, umem, sizeof (small_t) + sa_alignment_max - 1); idx_t offset = ((umemplus & ~alignment2_mask) + sa_alignment_max - umem); void *vp = mem + offset; diff -Nru gsasl-2.0.1/gl/reallocarray.c gsasl-2.2.0/gl/reallocarray.c --- gsasl-2.0.1/gl/reallocarray.c 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/reallocarray.c 2022-09-03 09:51:33.000000000 -0500 @@ -19,16 +19,15 @@ #include +#include #include #include -#include "intprops.h" - void * reallocarray (void *ptr, size_t nmemb, size_t size) { size_t nbytes; - if (INT_MULTIPLY_WRAPV (nmemb, size, &nbytes)) + if (ckd_mul (&nbytes, nmemb, size)) { errno = ENOMEM; return NULL; diff -Nru gsasl-2.0.1/gl/stdbool.in.h gsasl-2.2.0/gl/stdbool.in.h --- gsasl-2.0.1/gl/stdbool.in.h 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/stdbool.in.h 2022-09-03 09:51:33.000000000 -0500 @@ -58,27 +58,11 @@ /* 7.16. Boolean type and values */ -/* BeOS already #defines false 0, true 1. We use the same - definitions below, but temporarily we have to #undef them. */ -#if defined __BEOS__ && !defined __HAIKU__ -# include /* defines bool but not _Bool */ -# undef false -# undef true -#endif - #ifdef __cplusplus # define _Bool bool # define bool bool #else -# if defined __BEOS__ && !defined __HAIKU__ - /* A compiler known to have 'bool'. */ - /* If the compiler already has both 'bool' and '_Bool', we can assume they - are the same types. */ -# if !@HAVE__BOOL@ -typedef bool _Bool; -# endif -# else -# if !defined __GNUC__ +# if !defined __GNUC__ /* If @HAVE__BOOL@: Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when the built-in _Bool type is used. See @@ -98,10 +82,10 @@ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. The only benefit of the enum, debuggability, is not important with these compilers. So use 'signed char' and no enum. */ -# define _Bool signed char -# else +# define _Bool signed char +# else /* With this compiler, trust the _Bool type if the compiler has it. */ -# if !@HAVE__BOOL@ +# if !@HAVE__BOOL@ /* For the sake of symbolic names in gdb, define true and false as enum constants, not only as macros. It is tempting to write @@ -112,7 +96,6 @@ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the enum; this ensures that '_Bool' promotes to 'int'. */ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; -# endif # endif # endif # define bool _Bool diff -Nru gsasl-2.0.1/gl/stdckdint.in.h gsasl-2.2.0/gl/stdckdint.in.h --- gsasl-2.0.1/gl/stdckdint.in.h 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/gl/stdckdint.in.h 2022-09-03 09:51:33.000000000 -0500 @@ -0,0 +1,37 @@ +/* stdckdint.h -- checked integer arithmetic + + Copyright 2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_STDCKDINT_H +#define _GL_STDCKDINT_H + +#include "intprops-internal.h" + +#include + +/* Store into *R the low-order bits of A + B, A - B, A * B, respectively. + Return 1 if the result overflows, 0 otherwise. + A, B, and *R can have any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + + These are like the standard macros introduced in C23, except that + arguments should not have side effects. */ + +#define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r)) +#define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r)) +#define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r)) + +#endif /* _GL_STDCKDINT_H */ diff -Nru gsasl-2.0.1/gl/sys_stat.in.h gsasl-2.2.0/gl/sys_stat.in.h --- gsasl-2.0.1/gl/sys_stat.in.h 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/sys_stat.in.h 2022-09-03 09:51:33.000000000 -0500 @@ -391,7 +391,33 @@ #endif -#if @GNULIB_MDA_CHMOD@ +#if @GNULIB_CHMOD@ +# if @REPLACE_CHMOD@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef chmod +# define chmod rpl_chmod +# endif +_GL_FUNCDECL_RPL (chmod, int, (const char *filename, mode_t mode) + _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (chmod, int, (const char *filename, mode_t mode)); +# elif defined _WIN32 && !defined __CYGWIN__ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef chmod +# define chmod _chmod +# endif +/* Need to cast, because in mingw the last argument is 'int mode'. */ +_GL_CXXALIAS_MDA_CAST (chmod, int, (const char *filename, mode_t mode)); +# else +_GL_CXXALIAS_SYS (chmod, int, (const char *filename, mode_t mode)); +# endif +_GL_CXXALIASWARN (chmod); +#elif defined GNULIB_POSIXCHECK +# undef chmod +# if HAVE_RAW_DECL_CHMOD +_GL_WARN_ON_USE (chmod, "chmod has portability problems - " + "use gnulib module chmod for portability"); +# endif +#elif @GNULIB_MDA_CHMOD@ /* On native Windows, map 'chmod' to '_chmod', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::chmod always. */ diff -Nru gsasl-2.0.1/gl/verify.h gsasl-2.2.0/gl/verify.h --- gsasl-2.0.1/gl/verify.h 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/verify.h 2022-09-03 09:51:33.000000000 -0500 @@ -303,13 +303,16 @@ # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) #elif 1200 <= _MSC_VER # define assume(R) __assume (R) +#elif 202311L <= __STDC_VERSION__ +# include +# define assume(R) ((R) ? (void) 0 : unreachable ()) #elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP /* Doing it this way helps various packages when configured with --enable-gcc-warnings, which compiles with -Dlint. It's nicer - when 'assume' silences warnings even with older GCCs. */ + if 'assume' silences warnings with GCC 3.4 through GCC 4.4.7 (2012). */ # define assume(R) ((R) ? (void) 0 : __builtin_trap ()) #else - /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6. */ + /* Some older tools grok NOTREACHED, e.g., Oracle Studio 12.6 (2017). */ # define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0) #endif diff -Nru gsasl-2.0.1/gl/xmalloc.c gsasl-2.2.0/gl/xmalloc.c --- gsasl-2.0.1/gl/xmalloc.c 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/gl/xmalloc.c 2022-09-03 09:51:33.000000000 -0500 @@ -22,9 +22,9 @@ #include "xalloc.h" #include "ialloc.h" -#include "intprops.h" #include "minmax.h" +#include #include #include @@ -195,7 +195,7 @@ else { /* Set N = floor (1.5 * N) + 1 to make progress even if N == 0. */ - if (INT_ADD_WRAPV (n, (n >> 1) + 1, &n)) + if (ckd_add (&n, n, (n >> 1) + 1)) xalloc_die (); } @@ -236,7 +236,7 @@ N_MAX, and what the C language can represent safely. */ idx_t n; - if (INT_ADD_WRAPV (n0, n0 >> 1, &n)) + if (ckd_add (&n, n0, n0 >> 1)) n = IDX_MAX; if (0 <= n_max && n_max < n) n = n_max; @@ -251,7 +251,7 @@ size_t nbytes; #endif idx_t adjusted_nbytes - = (INT_MULTIPLY_WRAPV (n, s, &nbytes) + = (ckd_mul (&nbytes, n, s) ? MIN (IDX_MAX, SIZE_MAX) : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0); if (adjusted_nbytes) @@ -263,9 +263,9 @@ if (! pa) *pn = 0; if (n - n0 < n_incr_min - && (INT_ADD_WRAPV (n0, n_incr_min, &n) + && (ckd_add (&n, n0, n_incr_min) || (0 <= n_max && n_max < n) - || INT_MULTIPLY_WRAPV (n, s, &nbytes))) + || ckd_mul (&nbytes, n, s))) xalloc_die (); pa = xrealloc (pa, nbytes); *pn = n; diff -Nru gsasl-2.0.1/gltests/Makefile.in gsasl-2.2.0/gltests/Makefile.in --- gsasl-2.0.1/gltests/Makefile.in 2022-07-15 10:51:19.000000000 -0500 +++ gsasl-2.2.0/gltests/Makefile.in 2022-09-03 09:52:56.000000000 -0500 @@ -624,6 +624,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -984,6 +985,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1782,6 +1784,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1979,6 +1982,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/anonymous/Makefile.in gsasl-2.2.0/lib/anonymous/Makefile.in --- gsasl-2.0.1/lib/anonymous/Makefile.in 2022-07-15 10:51:20.000000000 -0500 +++ gsasl-2.2.0/lib/anonymous/Makefile.in 2022-09-03 09:52:57.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/cram-md5/Makefile.in gsasl-2.2.0/lib/cram-md5/Makefile.in --- gsasl-2.0.1/lib/cram-md5/Makefile.in 2022-07-15 10:51:20.000000000 -0500 +++ gsasl-2.2.0/lib/cram-md5/Makefile.in 2022-09-03 09:52:57.000000000 -0500 @@ -370,6 +370,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -730,6 +731,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1528,6 +1530,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1725,6 +1728,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/cram-md5/server.c gsasl-2.2.0/lib/cram-md5/server.c --- gsasl-2.0.1/lib/cram-md5/server.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/cram-md5/server.c 2022-09-03 05:40:43.000000000 -0500 @@ -54,7 +54,10 @@ rc = cram_md5_challenge (challenge); if (rc) - return GSASL_CRYPTO_ERROR; + { + free (challenge); + return GSASL_CRYPTO_ERROR; + } *mech_data = challenge; diff -Nru gsasl-2.0.1/lib/digest-md5/getsubopt.c gsasl-2.2.0/lib/digest-md5/getsubopt.c --- gsasl-2.0.1/lib/digest-md5/getsubopt.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/digest-md5/getsubopt.c 2022-09-02 11:12:05.000000000 -0500 @@ -70,7 +70,7 @@ /* Try to match the characters between *OPTIONP and VSTART against one of the TOKENS. */ for (cnt = 0; tokens[cnt] != NULL; ++cnt) - if (memcmp (*optionp, tokens[cnt], vstart - *optionp) == 0 + if (strncmp (*optionp, tokens[cnt], vstart - *optionp) == 0 && tokens[cnt][vstart - *optionp] == '\0') { /* We found the current option in TOKENS. */ diff -Nru gsasl-2.0.1/lib/digest-md5/Makefile.in gsasl-2.2.0/lib/digest-md5/Makefile.in --- gsasl-2.0.1/lib/digest-md5/Makefile.in 2022-07-15 10:51:20.000000000 -0500 +++ gsasl-2.2.0/lib/digest-md5/Makefile.in 2022-09-03 09:52:57.000000000 -0500 @@ -596,6 +596,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -956,6 +957,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1754,6 +1756,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1951,6 +1954,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/digest-md5/test-parser.c gsasl-2.2.0/lib/digest-md5/test-parser.c --- gsasl-2.0.1/lib/digest-md5/test-parser.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/digest-md5/test-parser.c 2022-09-02 11:20:08.000000000 -0500 @@ -28,6 +28,7 @@ #include #include +#include "free.h" #include "parser.h" #include "printer.h" #include "digesthmac.h" @@ -60,6 +61,7 @@ abort (); printf ("printed `%s' PASS\n", tmp); free (tmp); + digest_md5_free_challenge (&c); } { @@ -70,6 +72,7 @@ rc = digest_md5_parse_challenge (token, 0, &c); if (rc == 0) abort (); + digest_md5_free_challenge (&c); printf ("PASS\n"); } @@ -80,6 +83,7 @@ rc = digest_md5_parse_challenge (token, 0, &c); if (rc == 0) abort (); + digest_md5_free_challenge (&c); printf ("PASS\n"); } @@ -99,6 +103,7 @@ abort (); printf ("printed `%s' PASS\n", tmp); free (tmp); + digest_md5_free_challenge (&c); } { @@ -126,6 +131,7 @@ abort (); printf ("printed `%s' PASS\n", tmp); free (tmp); + digest_md5_free_challenge (&c); } /* Response */ @@ -138,6 +144,7 @@ if (rc == 0) abort (); printf ("PASS\n"); + digest_md5_free_response (&r); } { @@ -156,6 +163,7 @@ abort (); printf ("printed `%s' PASS\n", tmp); free (tmp); + digest_md5_free_response (&r); } /* Auth-response, finish. */ @@ -170,6 +178,7 @@ printf ("`%s'? %s\n", f.rspauth, strcmp ("6a204da26b9888ee40bb3052ff056a67", f.rspauth) == 0 ? "ok" : "FAILURE"); + digest_md5_free_response (&r); } { @@ -180,6 +189,7 @@ if (rc == 0) abort (); printf ("invalid? PASS\n"); + digest_md5_free_finish (&f); } rc = gc_init (); diff -Nru gsasl-2.0.1/lib/external/Makefile.in gsasl-2.2.0/lib/external/Makefile.in --- gsasl-2.0.1/lib/external/Makefile.in 2022-07-15 10:51:20.000000000 -0500 +++ gsasl-2.2.0/lib/external/Makefile.in 2022-09-03 09:52:57.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/gl/intprops.h gsasl-2.2.0/lib/gl/intprops.h --- gsasl-2.0.1/lib/gl/intprops.h 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/intprops.h 2022-09-03 09:52:06.000000000 -0500 @@ -15,19 +15,10 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ - #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H -#include - -/* Return a value with the common real type of E and V and the value of V. - Do not evaluate E. */ -#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) - -/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see - . */ -#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) +#include "intprops-internal.h" /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ @@ -37,11 +28,11 @@ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if the real type T is signed. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ -#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +#define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e) /* Minimum and maximum values for integer types and expressions. */ @@ -49,7 +40,7 @@ /* The width in bits of the integer type or expression T. Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ -#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t) /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) @@ -58,51 +49,6 @@ ? (t) -1 \ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) -/* The maximum and minimum values for the type of the expression E, - after integer promotion. E is not evaluated. */ -#define _GL_INT_MINIMUM(e) \ - (EXPR_SIGNED (e) \ - ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_CONVERT (e, 0)) -#define _GL_INT_MAXIMUM(e) \ - (EXPR_SIGNED (e) \ - ? _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_NEGATE_CONVERT (e, 1)) -#define _GL_SIGNED_INT_MAXIMUM(e) \ - (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) - -/* Work around OpenVMS incompatibility with C99. */ -#if !defined LLONG_MAX && defined __INT64_MAX -# define LLONG_MAX __INT64_MAX -# define LLONG_MIN __INT64_MIN -#endif - -/* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. - If this is a problem for you, please let us know how to fix it for your host. - This assumption is tested by the intprops-tests module. */ - -/* Does the __typeof__ keyword work? This could be done by - 'configure', but for now it's easier to do it by hand. */ -#if (2 <= __GNUC__ \ - || (4 <= __clang_major__) \ - || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) -# define _GL_HAVE___TYPEOF__ 1 -#else -# define _GL_HAVE___TYPEOF__ 0 -#endif - -/* Return 1 if the integer type or expression T might be signed. Return 0 - if it is definitely unsigned. T must not be a bit-field expression. - This macro does not evaluate its argument, and expands to an - integer constant expression. */ -#if _GL_HAVE___TYPEOF__ -# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) -#else -# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 -#endif - /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ @@ -129,12 +75,11 @@ /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C - operators might not yield numerically correct answers due to - arithmetic overflow. They do not rely on undefined or - implementation-defined behavior. Their implementations are simple - and straightforward, but they are harder to use and may be less - efficient than the INT__WRAPV, INT__OK, and - INT__OVERFLOW macros described below. + operators overflow arithmetically when given the same arguments. + These macros do not rely on undefined or implementation-defined behavior. + Although their implementations are simple and straightforward, + they are harder to use and may be less efficient than the + INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: @@ -181,9 +126,7 @@ /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ - ((min) < 0 \ - ? (a) < - (max) \ - : 0 < (a)) + _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle @@ -227,43 +170,6 @@ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) -/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow - (A, B, P) work when P is non-null. */ -#ifdef __EDG__ -/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned - . */ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) -/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, - see . */ -#elif 7 <= __GNUC__ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 -#else -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#endif - -/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ -#if defined __clang_major__ && __clang_major__ < 14 -/* Work around Clang bug . */ -# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 -#else -# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW -#endif - -/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for - __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ -#ifdef __EDG__ -/* In EDG-based compilers like ICC 2021.3 and earlier, - __builtin_add_overflow_p etc. are not treated as integral constant - expressions even when all arguments are. */ -# define _GL_HAS_BUILTIN_OVERFLOW_P 0 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) -#else -# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) -#endif - /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume @@ -350,13 +256,18 @@ Because the WRAPV macros convert the result, they report overflow in different circumstances than the OVERFLOW macros do. For example, in the typical case with 16-bit 'short' and 32-bit 'int', - if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B) + if A, B and *R are all of type 'short' then INT_ADD_OVERFLOW (A, B) returns false because the addition cannot overflow after A and B - are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns + are converted to 'int', whereas INT_ADD_WRAPV (A, B, R) returns true or false depending on whether the sum fits into 'short'. These macros are tuned for their last input argument being a constant. + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ @@ -364,12 +275,7 @@ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#if _GL_HAS_BUILTIN_OVERFLOW_P -# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) -#else -# define INT_NEGATE_OVERFLOW(a) \ - INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) -#endif +#define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ @@ -391,224 +297,9 @@ /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ -#if _GL_HAS_BUILTIN_ADD_OVERFLOW -# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) -# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) -#else -# define INT_ADD_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) -# define INT_SUBTRACT_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) -#endif -#if _GL_HAS_BUILTIN_MUL_OVERFLOW -# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ - || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ - && !defined __EDG__) -# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) -# else - /* Work around GCC bug 91450. */ -# define INT_MULTIPLY_WRAPV(a, b, r) \ - ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ - && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ - ? ((void) __builtin_mul_overflow (a, b, r), 1) \ - : __builtin_mul_overflow (a, b, r)) -# endif -#else -# define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) -#endif - -/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 - https://llvm.org/bugs/show_bug.cgi?id=25390 - For now, assume all versions of GCC-like compilers generate bogus - warnings for _Generic. This matters only for compilers that - lack relevant builtins. */ -#if __GNUC__ || defined __clang__ -# define _GL__GENERIC_BOGUS 1 -#else -# define _GL__GENERIC_BOGUS 0 -#endif - -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. Return 1 if the - result overflows. See above for restrictions. */ -#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (_Generic \ - (*(r), \ - signed char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - signed char, SCHAR_MIN, SCHAR_MAX), \ - unsigned char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned char, 0, UCHAR_MAX), \ - short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - short int, SHRT_MIN, SHRT_MAX), \ - unsigned short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned short int, 0, USHRT_MAX), \ - int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX), \ - unsigned int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX), \ - long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX), \ - unsigned long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX), \ - long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX), \ - unsigned long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -#else -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. If *R is - signed, its type is ST with bounds SMIN..SMAX; otherwise its type - is UT with bounds U..UMAX. ST and UT are narrower than int. - Return 1 if the result overflows. See above for restrictions. */ -# if _GL_HAVE___TYPEOF__ -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (TYPE_SIGNED (__typeof__ (*(r))) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) -# else -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (overflow (a, b, smin, smax) \ - ? (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ - : (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) -# endif - -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (signed char) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - signed char, SCHAR_MIN, SCHAR_MAX, \ - unsigned char, UCHAR_MAX) \ - : sizeof *(r) == sizeof (short int) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - short int, SHRT_MIN, SHRT_MAX, \ - unsigned short int, USHRT_MAX) \ - : sizeof *(r) == sizeof (int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX)) \ - : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) -# ifdef LLONG_MAX -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (long int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) \ - : (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -# else -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) -# endif -#endif - -/* Store the low-order bits of A B into *R, where the operation - is given by OP. Use the unsigned type UT for calculation to avoid - overflow problems. *R's type is T, with extrema TMIN and TMAX. - T must be a signed integer type. Return 1 if the result overflows. */ -#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ - (overflow (a, b, tmin, tmax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) - -/* Return the low-order bits of A B, where the operation is given - by OP. Use the unsigned type UT for calculation to avoid undefined - behavior on signed integer overflow, and convert the result to type T. - UT is at least as wide as T and is no narrower than unsigned int, - T is two's complement, and there is no padding or trap representations. - Assume that converting UT to T yields the low-order bits, as is - done in all known two's-complement C compilers. E.g., see: - https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html - - According to the C standard, converting UT to T yields an - implementation-defined result or signal for values outside T's - range. However, code that works around this theoretical problem - runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: - https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html - As the compiler bug is real, don't try to work around the - theoretical problem. */ - -#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ - ((t) ((ut) (a) op (ut) (b))) - -/* Return true if the numeric values A + B, A - B, A * B fall outside - the range TMIN..TMAX. Arguments should be integer expressions - without side effects. TMIN should be signed and nonpositive. - TMAX should be positive, and should be signed unless TMIN is zero. */ -#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ - && (a) < (tmin) - (b)) \ - : (a) <= -1 - (b)) \ - || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ - : (a) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ - && (b) < (tmin) - (a)) \ - : (b) <= -1 - (a)) \ - || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ - && (tmax) < (a) + (b))) \ - : (tmax) < (b) || (tmax) - (b) < (a)) -#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ - (((a) < 0) == ((b) < 0) \ - ? ((a) < (b) \ - ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ - : (tmax) < (a) - (b)) \ - : (a) < 0 \ - ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ - || (a) - (tmin) < (b)) \ - : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ - && (tmax) <= -1 - (b)) \ - || (tmax) + (b) < (a))) -#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? ((a) < 0 \ - ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - ? (a) < (tmax) / (b) \ - : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ - : (tmax) / -(b)) \ - <= -1 - (a))) \ - : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ - ? (EXPR_SIGNED (a) \ - ? 0 < (a) + (tmin) \ - : 0 < (a) && -1 - (tmin) < (a) - 1) \ - : (tmin) / (b) < (a)) \ - : (b) == 0 \ - ? 0 \ - : ((a) < 0 \ - ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ - ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ - : (tmin) / (a) < (b)) \ - : (tmax) / (b) < (a))) +#define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r) /* The following macros compute A + B, A - B, and A * B, respectively. If no overflow occurs, they set *R to the result and return 1; @@ -624,6 +315,8 @@ A, B, and *R should be integers; they need not be the same type, and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. @@ -635,8 +328,8 @@ These macros are tuned for B being a constant. */ -#define INT_ADD_OK(a, b, r) ! INT_ADD_WRAPV (a, b, r) -#define INT_SUBTRACT_OK(a, b, r) ! INT_SUBTRACT_WRAPV (a, b, r) -#define INT_MULTIPLY_OK(a, b, r) ! INT_MULTIPLY_WRAPV (a, b, r) +#define INT_ADD_OK(a, b, r) (! INT_ADD_WRAPV (a, b, r)) +#define INT_SUBTRACT_OK(a, b, r) (! INT_SUBTRACT_WRAPV (a, b, r)) +#define INT_MULTIPLY_OK(a, b, r) (! INT_MULTIPLY_WRAPV (a, b, r)) #endif /* _GL_INTPROPS_H */ diff -Nru gsasl-2.0.1/lib/gl/intprops-internal.h gsasl-2.2.0/lib/gl/intprops-internal.h --- gsasl-2.0.1/lib/gl/intprops-internal.h 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/lib/gl/intprops-internal.h 2022-09-03 09:52:06.000000000 -0500 @@ -0,0 +1,392 @@ +/* intprops-internal.h -- properties of integer types not visible to users + + Copyright (C) 2001-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_INTPROPS_INTERNAL_H +#define _GL_INTPROPS_INTERNAL_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the real type T is signed. */ +#define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression T. + Do not evaluate T. T must not be a bit-field expression. + Padding bits are not supported; this is checked at compile-time below. */ +#define _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +#if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ + || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) +# define _GL_HAVE___TYPEOF__ 1 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ +#if _GL_HAVE___TYPEOF__ +# define _GL_SIGNED_TYPE_OR_EXPR(t) _GL_TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + A should not have side effects, and A's type should be an + integer with minimum value MIN and maximum MAX. */ +#define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 ? (a) < - (max) : 0 < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif + +#if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \ + && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW)) +# include +#endif + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. Arguments should not have side + effects and A, B and *R can be of any integer type other than char, + bool, a bit-precise integer type, or an enumeration type. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H +# define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b)) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b)) +#else +# define _GL_INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#elif defined ckd_mul && !defined _GL_STDCKDINT_H +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b)) +#else +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. Arguments should not have side effects, + and A, B and *R can be of any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. Arguments should not have side + effects, and A, B and *R can be of any integer type other than + char, bool, a bit-precise integer type, or an enumeration type. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (_GL_TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + signed char, SCHAR_MIN, SCHAR_MAX, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return 1 if the integer expressions A - B and -A would overflow, + respectively. Arguments should not have side effects, + and can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + These macros are tuned for their last input argument being a constant. */ + +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_INT_NEGATE_OVERFLOW(a) \ + __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0) +#else +# define _GL_INT_NEGATE_OVERFLOW(a) \ + _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should not have side effects + and can be any integer type other than char, bool, + a bit-precise integer type, or an enumeration type. + TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((_GL_INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (_GL_EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +#endif /* _GL_INTPROPS_INTERNAL_H */ diff -Nru gsasl-2.0.1/lib/gl/Makefile.am gsasl-2.2.0/lib/gl/Makefile.am --- gsasl-2.0.1/lib/gl/Makefile.am 2022-07-15 10:50:47.000000000 -0500 +++ gsasl-2.2.0/lib/gl/Makefile.am 2022-09-03 09:52:15.000000000 -0500 @@ -613,7 +613,7 @@ ## begin gnulib module intprops -EXTRA_DIST += intprops.h +EXTRA_DIST += intprops-internal.h intprops.h ## end gnulib module intprops @@ -954,6 +954,27 @@ ## end gnulib module stdbool +## begin gnulib module stdckdint + +BUILT_SOURCES += $(STDCKDINT_H) + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +if GL_GENERATE_STDCKDINT_H +stdckdint.h: stdckdint.in.h $(top_builddir)/config.status + $(gl_V_at)$(SED_HEADER_STDOUT) \ + $(srcdir)/stdckdint.in.h > $@-t + $(AM_V_at)mv $@-t $@ +else +stdckdint.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += stdckdint.h stdckdint.h-t + +EXTRA_DIST += intprops-internal.h stdckdint.in.h + +## end gnulib module stdckdint + ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) @@ -1554,6 +1575,7 @@ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ + -e 's/@''GNULIB_CHMOD''@/$(GL_LGL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_LGL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_LGL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_LGL_GNULIB_FSTATAT)/g' \ @@ -1585,6 +1607,7 @@ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ + -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ diff -Nru gsasl-2.0.1/lib/gl/Makefile.in gsasl-2.2.0/lib/gl/Makefile.in --- gsasl-2.0.1/lib/gl/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/gl/Makefile.in 2022-09-03 09:52:58.000000000 -0500 @@ -613,6 +613,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -973,6 +974,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1771,6 +1773,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1968,6 +1971,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -2079,12 +2083,13 @@ stdio-impl.h filename.h float.in.h stdio-impl.h freading.h \ stdio-impl.h stdio-impl.h stat-w32.c stat-w32.h stdio-impl.h \ gss-extra.c gss-extra.h $(top_srcdir)/build-aux/config.rpath \ - ialloc.h intprops.h inttypes.in.h cdefs.h libc-config.h \ - limits.in.h malloc.c malloc.c malloca.h memchr.valgrind \ - memmem.c memmem.c str-two-way.h memxor.h msvc-inval.h \ - msvc-nothrow.h pathmax.h realloc.c realloc.c _Noreturn.h \ - arg-nonnull.h c++defs.h warn-on-use.h stat-w32.c stat-w32.h \ - stat-time.h stdalign.in.h stdbool.in.h stddef.in.h stdint.in.h \ + ialloc.h intprops-internal.h intprops.h inttypes.in.h cdefs.h \ + libc-config.h limits.in.h malloc.c malloc.c malloca.h \ + memchr.valgrind memmem.c memmem.c str-two-way.h memxor.h \ + msvc-inval.h msvc-nothrow.h pathmax.h realloc.c realloc.c \ + _Noreturn.h arg-nonnull.h c++defs.h warn-on-use.h stat-w32.c \ + stat-w32.h stat-time.h stdalign.in.h stdbool.in.h \ + intprops-internal.h stdckdint.in.h stddef.in.h stdint.in.h \ stdio.in.h stdlib.in.h string.in.h sys_random.in.h \ sys_socket.in.h sys_stat.in.h sys_types.in.h sys_uio.in.h \ time.in.h unistd.in.h asnprintf.c float+.h printf-args.c \ @@ -2093,19 +2098,19 @@ xalloc-oversized.h BUILT_SOURCES = $(ALLOCA_H) $(BYTESWAP_H) $(ERRNO_H) fcntl.h \ $(FLOAT_H) inttypes.h $(LIMITS_H) $(STDALIGN_H) $(STDBOOL_H) \ - $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h sys/random.h \ - sys/socket.h sys/stat.h sys/types.h sys/uio.h time.h unistd.h \ - wchar.h + $(STDCKDINT_H) $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h \ + string.h sys/random.h sys/socket.h sys/stat.h sys/types.h \ + sys/uio.h time.h unistd.h wchar.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t byteswap.h \ byteswap.h-t errno.h errno.h-t fcntl.h fcntl.h-t float.h \ float.h-t inttypes.h inttypes.h-t limits.h limits.h-t \ - stdalign.h stdalign.h-t stdbool.h stdbool.h-t stddef.h \ - stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h \ - stdlib.h-t string.h string.h-t sys/random.h sys/random.h-t \ - sys/socket.h sys/socket.h-t sys/stat.h sys/stat.h-t \ - sys/types.h sys/types.h-t sys/uio.h sys/uio.h-t time.h \ - time.h-t unistd.h unistd.h-t wchar.h wchar.h-t + stdalign.h stdalign.h-t stdbool.h stdbool.h-t stdckdint.h \ + stdckdint.h-t stddef.h stddef.h-t stdint.h stdint.h-t stdio.h \ + stdio.h-t stdlib.h stdlib.h-t string.h string.h-t sys/random.h \ + sys/random.h-t sys/socket.h sys/socket.h-t sys/stat.h \ + sys/stat.h-t sys/types.h sys/types.h-t sys/uio.h sys/uio.h-t \ + time.h time.h-t unistd.h unistd.h-t wchar.h wchar.h-t MOSTLYCLEANDIRS = sys sys sys sys CLEANFILES = DISTCLEANFILES = @@ -3380,6 +3385,15 @@ @GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status @GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +@GL_GENERATE_STDCKDINT_H_TRUE@stdckdint.h: stdckdint.in.h $(top_builddir)/config.status +@GL_GENERATE_STDCKDINT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_STDCKDINT_H_TRUE@ $(srcdir)/stdckdint.in.h > $@-t +@GL_GENERATE_STDCKDINT_H_TRUE@ $(AM_V_at)mv $@-t $@ +@GL_GENERATE_STDCKDINT_H_FALSE@stdckdint.h: $(top_builddir)/config.status +@GL_GENERATE_STDCKDINT_H_FALSE@ rm -f $@ + # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @@ -3873,6 +3887,7 @@ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ + -e 's/@''GNULIB_CHMOD''@/$(GL_LGL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_LGL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_LGL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_LGL_GNULIB_FSTATAT)/g' \ @@ -3904,6 +3919,7 @@ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ + -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ diff -Nru gsasl-2.0.1/lib/gl/malloca.c gsasl-2.2.0/lib/gl/malloca.c --- gsasl-2.0.1/lib/gl/malloca.c 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/malloca.c 2022-09-03 09:52:06.000000000 -0500 @@ -21,8 +21,9 @@ /* Specification. */ #include "malloca.h" +#include + #include "idx.h" -#include "intprops.h" #include "verify.h" /* The speed critical point in this file is freea() applied to an alloca() @@ -50,17 +51,16 @@ uintptr_t alignment2_mask = 2 * sa_alignment_max - 1; int plus = sizeof (small_t) + alignment2_mask; idx_t nplus; - if (!INT_ADD_WRAPV (n, plus, &nplus) && !xalloc_oversized (nplus, 1)) + if (!ckd_add (&nplus, n, plus) && !xalloc_oversized (nplus, 1)) { char *mem = (char *) malloc (nplus); if (mem != NULL) { uintptr_t umem = (uintptr_t)mem, umemplus; - /* The INT_ADD_WRAPV avoids signed integer overflow on + /* The ckd_add avoids signed integer overflow on theoretical platforms where UINTPTR_MAX <= INT_MAX. */ - INT_ADD_WRAPV (umem, sizeof (small_t) + sa_alignment_max - 1, - &umemplus); + ckd_add (&umemplus, umem, sizeof (small_t) + sa_alignment_max - 1); idx_t offset = ((umemplus & ~alignment2_mask) + sa_alignment_max - umem); void *vp = mem + offset; diff -Nru gsasl-2.0.1/lib/gl/reallocarray.c gsasl-2.2.0/lib/gl/reallocarray.c --- gsasl-2.0.1/lib/gl/reallocarray.c 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/reallocarray.c 2022-09-03 09:52:06.000000000 -0500 @@ -19,16 +19,15 @@ #include +#include #include #include -#include "intprops.h" - void * reallocarray (void *ptr, size_t nmemb, size_t size) { size_t nbytes; - if (INT_MULTIPLY_WRAPV (nmemb, size, &nbytes)) + if (ckd_mul (&nbytes, nmemb, size)) { errno = ENOMEM; return NULL; diff -Nru gsasl-2.0.1/lib/gl/stdbool.in.h gsasl-2.2.0/lib/gl/stdbool.in.h --- gsasl-2.0.1/lib/gl/stdbool.in.h 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/stdbool.in.h 2022-09-03 09:52:06.000000000 -0500 @@ -58,27 +58,11 @@ /* 7.16. Boolean type and values */ -/* BeOS already #defines false 0, true 1. We use the same - definitions below, but temporarily we have to #undef them. */ -#if defined __BEOS__ && !defined __HAIKU__ -# include /* defines bool but not _Bool */ -# undef false -# undef true -#endif - #ifdef __cplusplus # define _Bool bool # define bool bool #else -# if defined __BEOS__ && !defined __HAIKU__ - /* A compiler known to have 'bool'. */ - /* If the compiler already has both 'bool' and '_Bool', we can assume they - are the same types. */ -# if !@HAVE__BOOL@ -typedef bool _Bool; -# endif -# else -# if !defined __GNUC__ +# if !defined __GNUC__ /* If @HAVE__BOOL@: Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when the built-in _Bool type is used. See @@ -98,10 +82,10 @@ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. The only benefit of the enum, debuggability, is not important with these compilers. So use 'signed char' and no enum. */ -# define _Bool signed char -# else +# define _Bool signed char +# else /* With this compiler, trust the _Bool type if the compiler has it. */ -# if !@HAVE__BOOL@ +# if !@HAVE__BOOL@ /* For the sake of symbolic names in gdb, define true and false as enum constants, not only as macros. It is tempting to write @@ -112,7 +96,6 @@ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the enum; this ensures that '_Bool' promotes to 'int'. */ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; -# endif # endif # endif # define bool _Bool diff -Nru gsasl-2.0.1/lib/gl/stdckdint.in.h gsasl-2.2.0/lib/gl/stdckdint.in.h --- gsasl-2.0.1/lib/gl/stdckdint.in.h 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/lib/gl/stdckdint.in.h 2022-09-03 09:52:06.000000000 -0500 @@ -0,0 +1,37 @@ +/* stdckdint.h -- checked integer arithmetic + + Copyright 2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_STDCKDINT_H +#define _GL_STDCKDINT_H + +#include "intprops-internal.h" + +#include + +/* Store into *R the low-order bits of A + B, A - B, A * B, respectively. + Return 1 if the result overflows, 0 otherwise. + A, B, and *R can have any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + + These are like the standard macros introduced in C23, except that + arguments should not have side effects. */ + +#define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r)) +#define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r)) +#define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r)) + +#endif /* _GL_STDCKDINT_H */ diff -Nru gsasl-2.0.1/lib/gl/sys_stat.in.h gsasl-2.2.0/lib/gl/sys_stat.in.h --- gsasl-2.0.1/lib/gl/sys_stat.in.h 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/sys_stat.in.h 2022-09-03 09:52:06.000000000 -0500 @@ -391,7 +391,33 @@ #endif -#if @GNULIB_MDA_CHMOD@ +#if @GNULIB_CHMOD@ +# if @REPLACE_CHMOD@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef chmod +# define chmod rpl_chmod +# endif +_GL_FUNCDECL_RPL (chmod, int, (const char *filename, mode_t mode) + _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (chmod, int, (const char *filename, mode_t mode)); +# elif defined _WIN32 && !defined __CYGWIN__ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef chmod +# define chmod _chmod +# endif +/* Need to cast, because in mingw the last argument is 'int mode'. */ +_GL_CXXALIAS_MDA_CAST (chmod, int, (const char *filename, mode_t mode)); +# else +_GL_CXXALIAS_SYS (chmod, int, (const char *filename, mode_t mode)); +# endif +_GL_CXXALIASWARN (chmod); +#elif defined GNULIB_POSIXCHECK +# undef chmod +# if HAVE_RAW_DECL_CHMOD +_GL_WARN_ON_USE (chmod, "chmod has portability problems - " + "use gnulib module chmod for portability"); +# endif +#elif @GNULIB_MDA_CHMOD@ /* On native Windows, map 'chmod' to '_chmod', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::chmod always. */ diff -Nru gsasl-2.0.1/lib/gl/verify.h gsasl-2.2.0/lib/gl/verify.h --- gsasl-2.0.1/lib/gl/verify.h 2022-07-15 10:50:39.000000000 -0500 +++ gsasl-2.2.0/lib/gl/verify.h 2022-09-03 09:52:06.000000000 -0500 @@ -303,13 +303,16 @@ # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) #elif 1200 <= _MSC_VER # define assume(R) __assume (R) +#elif 202311L <= __STDC_VERSION__ +# include +# define assume(R) ((R) ? (void) 0 : unreachable ()) #elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP /* Doing it this way helps various packages when configured with --enable-gcc-warnings, which compiles with -Dlint. It's nicer - when 'assume' silences warnings even with older GCCs. */ + if 'assume' silences warnings with GCC 3.4 through GCC 4.4.7 (2012). */ # define assume(R) ((R) ? (void) 0 : __builtin_trap ()) #else - /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6. */ + /* Some older tools grok NOTREACHED, e.g., Oracle Studio 12.6 (2017). */ # define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0) #endif diff -Nru gsasl-2.0.1/lib/gs2/client.c gsasl-2.2.0/lib/gs2/client.c --- gsasl-2.0.1/lib/gs2/client.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/gs2/client.c 2022-09-02 13:42:10.000000000 -0500 @@ -222,7 +222,8 @@ *output = malloc (*output_len); if (!*output) return GSASL_MALLOC_ERROR; - memcpy (*output, token->value, token->length); + if (token->value) + memcpy (*output, token->value, token->length); } return GSASL_OK; @@ -288,6 +289,9 @@ if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED) return GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR; + if (state->token.length > 0 && state->token.value == NULL) + return GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR; + res = token2output (state, &state->token, output, output_len); if (res != GSASL_OK) return res; diff -Nru gsasl-2.0.1/lib/gs2/Makefile.in gsasl-2.2.0/lib/gs2/Makefile.in --- gsasl-2.0.1/lib/gs2/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/gs2/Makefile.in 2022-09-03 09:52:58.000000000 -0500 @@ -372,6 +372,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -732,6 +733,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1530,6 +1532,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1727,6 +1730,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/gssapi/client.c gsasl-2.2.0/lib/gssapi/client.c --- gsasl-2.0.1/lib/gssapi/client.c 2022-07-15 09:48:32.000000000 -0500 +++ gsasl-2.2.0/lib/gssapi/client.c 2022-09-02 13:41:31.000000000 -0500 @@ -136,11 +136,15 @@ if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED) return GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR; + if (bufdesc2.length > 0 && bufdesc2.value == NULL) + return GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR; + *output_len = bufdesc2.length; *output = malloc (*output_len); if (!*output) return GSASL_MALLOC_ERROR; - memcpy (*output, bufdesc2.value, bufdesc2.length); + if (bufdesc2.value) + memcpy (*output, bufdesc2.value, bufdesc2.length); if (maj_stat == GSS_S_COMPLETE) state->step = 2; diff -Nru gsasl-2.0.1/lib/gssapi/Makefile.in gsasl-2.2.0/lib/gssapi/Makefile.in --- gsasl-2.0.1/lib/gssapi/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/gssapi/Makefile.in 2022-09-03 09:52:58.000000000 -0500 @@ -372,6 +372,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -732,6 +733,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1530,6 +1532,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1727,6 +1730,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/login/Makefile.in gsasl-2.2.0/lib/login/Makefile.in --- gsasl-2.0.1/lib/login/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/login/Makefile.in 2022-09-03 09:52:58.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/m4/gnulib-comp.m4 gsasl-2.2.0/lib/m4/gnulib-comp.m4 --- gsasl-2.0.1/lib/m4/gnulib-comp.m4 2022-07-15 10:50:41.000000000 -0500 +++ gsasl-2.2.0/lib/m4/gnulib-comp.m4 2022-09-03 09:52:08.000000000 -0500 @@ -144,6 +144,7 @@ # Code from module std-gnu11: # Code from module stdalign: # Code from module stdbool: + # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: @@ -433,6 +434,14 @@ gl_STDBOOL_H gl_CONDITIONAL_HEADER([stdbool.h]) AC_PROG_MKDIR_P + AC_CHECK_HEADERS_ONCE([stdckdint.h]) + if test $ac_cv_header_stdckdint_h = yes; then + GL_GENERATE_STDCKDINT_H=false + else + GL_GENERATE_STDCKDINT_H=true + fi + gl_CONDITIONAL_HEADER([stdckdint.h]) + AC_PROG_MKDIR_P gl_STDDEF_H gl_STDDEF_H_REQUIRE_DEFAULTS gl_CONDITIONAL_HEADER([stddef.h]) @@ -754,6 +763,7 @@ lib/ialloc.c lib/ialloc.h lib/idx.h + lib/intprops-internal.h lib/intprops.h lib/inttypes.in.h lib/itold.c @@ -798,6 +808,7 @@ lib/stat.c lib/stdalign.in.h lib/stdbool.in.h + lib/stdckdint.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio-impl.h diff -Nru gsasl-2.0.1/lib/Makefile.in gsasl-2.2.0/lib/Makefile.in --- gsasl-2.0.1/lib/Makefile.in 2022-07-15 10:51:20.000000000 -0500 +++ gsasl-2.2.0/lib/Makefile.in 2022-09-03 09:52:57.000000000 -0500 @@ -416,6 +416,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -776,6 +777,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1574,6 +1576,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1771,6 +1774,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/ntlm/Makefile.in gsasl-2.2.0/lib/ntlm/Makefile.in --- gsasl-2.0.1/lib/ntlm/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/ntlm/Makefile.in 2022-09-03 09:52:58.000000000 -0500 @@ -365,6 +365,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -725,6 +726,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1523,6 +1525,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1720,6 +1723,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/openid20/Makefile.in gsasl-2.2.0/lib/openid20/Makefile.in --- gsasl-2.0.1/lib/openid20/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/openid20/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/openid20/server.c gsasl-2.2.0/lib/openid20/server.c --- gsasl-2.0.1/lib/openid20/server.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/openid20/server.c 2022-08-20 08:53:21.000000000 -0500 @@ -126,10 +126,12 @@ res = gsasl_callback (NULL, sctx, GSASL_VALIDATE_OPENID20); if (res != GSASL_OK) { - *output = strdup ("openid.error=fail"); + const char *failstr = "openid.error=fail"; + + *output_len = strlen (failstr); + *output = strdup (failstr); if (!*output) return GSASL_MALLOC_ERROR; - *output_len = strlen (*output); /* [RFC4422] Section 3.6 explicitly prohibits additional information in an unsuccessful authentication outcome. diff -Nru gsasl-2.0.1/lib/plain/Makefile.in gsasl-2.2.0/lib/plain/Makefile.in --- gsasl-2.0.1/lib/plain/Makefile.in 2022-07-15 10:51:21.000000000 -0500 +++ gsasl-2.2.0/lib/plain/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/saml20/Makefile.in gsasl-2.2.0/lib/saml20/Makefile.in --- gsasl-2.0.1/lib/saml20/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/lib/saml20/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/scram/client.c gsasl-2.2.0/lib/scram/client.c --- gsasl-2.0.1/lib/scram/client.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/scram/client.c 2022-08-20 08:53:21.000000000 -0500 @@ -54,8 +54,6 @@ char *cfmb; /* client first message bare */ char *serversignature; char *authmessage; - char *cbtlsunique; - size_t cbtlsuniquelen; struct scram_client_first cf; struct scram_server_first sf; struct scram_client_final cl; @@ -142,45 +140,47 @@ { case 0: { - const char *p; + const char *p, *b64cb; - p = gsasl_property_get (sctx, GSASL_CB_TLS_UNIQUE); - if (state->plus && !p) - return GSASL_NO_CB_TLS_UNIQUE; + p = gsasl_property_get (sctx, GSASL_AUTHID); + if (!p) + return GSASL_NO_AUTHID; + + free (state->cf.username); + rc = gsasl_saslprep (p, GSASL_ALLOW_UNASSIGNED, + &state->cf.username, NULL); + if (rc != GSASL_OK) + return rc; + + p = gsasl_property_get (sctx, GSASL_AUTHZID); if (p) + state->cf.authzid = strdup (p); + + b64cb = gsasl_property_get (sctx, GSASL_CB_TLS_EXPORTER); + if (b64cb) + state->cf.cbname = strdup ("tls-exporter"); + else { - rc = gsasl_base64_from (p, strlen (p), &state->cbtlsunique, - &state->cbtlsuniquelen); - if (rc != GSASL_OK) - return rc; + b64cb = gsasl_property_get (sctx, GSASL_CB_TLS_UNIQUE); + if (b64cb) + state->cf.cbname = strdup ("tls-unique"); } if (state->plus) { + if (!b64cb) + return GSASL_NO_CB_TLS_EXPORTER; + state->cf.cbflag = 'p'; - state->cf.cbname = strdup ("tls-unique"); } else { - if (state->cbtlsuniquelen > 0) + if (b64cb) state->cf.cbflag = 'y'; else state->cf.cbflag = 'n'; } - p = gsasl_property_get (sctx, GSASL_AUTHID); - if (!p) - return GSASL_NO_AUTHID; - - rc = gsasl_saslprep (p, GSASL_ALLOW_UNASSIGNED, - &state->cf.username, NULL); - if (rc != GSASL_OK) - return rc; - - p = gsasl_property_get (sctx, GSASL_AUTHZID); - if (p) - state->cf.authzid = strdup (p); - rc = scram_print_client_first (&state->cf, output); if (rc == -2) return GSASL_MALLOC_ERROR; @@ -205,21 +205,31 @@ return GSASL_MALLOC_ERROR; /* Prepare B64("cbind-input") for the next step. */ - if (state->cf.cbflag == 'p') + if (state->plus && b64cb) { - size_t len = (p - *output) + state->cbtlsuniquelen; - char *cbind_input = malloc (len); + size_t len; + char *cbind_input; + char *cb; + size_t cblen; + + rc = gsasl_base64_from (b64cb, strlen (b64cb), &cb, &cblen); + if (rc != GSASL_OK) + return rc; + + len = (p - *output) + cblen; + cbind_input = malloc (len); if (cbind_input == NULL) return GSASL_MALLOC_ERROR; + memcpy (cbind_input, *output, p - *output); - memcpy (cbind_input + (p - *output), state->cbtlsunique, - state->cbtlsuniquelen); + memcpy (cbind_input + (p - *output), cb, cblen); + free (cb); rc = gsasl_base64_to (cbind_input, len, &state->cl.cbind, NULL); free (cbind_input); } else rc = gsasl_base64_to (*output, p - *output, &state->cl.cbind, NULL); - if (rc != 0) + if (rc != GSASL_OK) return rc; /* We are done. */ @@ -238,6 +248,7 @@ strlen (state->cf.client_nonce)) != 0) return GSASL_AUTHENTICATION_ERROR; + free (state->cl.nonce); state->cl.nonce = strdup (state->sf.nonce); if (!state->cl.nonce) return GSASL_MALLOC_ERROR; @@ -421,7 +432,6 @@ free (state->cfmb); free (state->serversignature); free (state->authmessage); - free (state->cbtlsunique); scram_free_client_first (&state->cf); scram_free_server_first (&state->sf); scram_free_client_final (&state->cl); diff -Nru gsasl-2.0.1/lib/scram/Makefile.in gsasl-2.2.0/lib/scram/Makefile.in --- gsasl-2.0.1/lib/scram/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/lib/scram/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -373,6 +373,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -733,6 +734,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1531,6 +1533,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1728,6 +1731,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/scram/parser.c gsasl-2.2.0/lib/scram/parser.c --- gsasl-2.0.1/lib/scram/parser.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/scram/parser.c 2022-08-20 08:53:21.000000000 -0500 @@ -78,6 +78,8 @@ scram_parse_client_first (const char *str, size_t len, struct scram_client_first *cf) { + scram_free_client_first (cf); + /* Minimum client first string is 'n,,n=a,r=b'. */ if (strnlen (str, len) < 10) return -1; @@ -220,6 +222,8 @@ scram_parse_server_first (const char *str, size_t len, struct scram_server_first *sf) { + scram_free_server_first (sf); + /* Minimum server first string is 'r=ab,s=biws,i=1'. */ if (strnlen (str, len) < 15) return -1; @@ -329,6 +333,8 @@ scram_parse_client_final (const char *str, size_t len, struct scram_client_final *cl) { + scram_free_client_final (cl); + /* Minimum client final string is 'c=biws,r=ab,p=ab=='. */ if (strnlen (str, len) < 18) return -1; @@ -457,6 +463,8 @@ scram_parse_server_final (const char *str, size_t len, struct scram_server_final *sl) { + scram_free_server_final (sl); + /* Minimum client final string is 'v=ab=='. */ if (strnlen (str, len) < 6) return -1; diff -Nru gsasl-2.0.1/lib/scram/server.c gsasl-2.2.0/lib/scram/server.c --- gsasl-2.0.1/lib/scram/server.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/scram/server.c 2022-08-20 08:53:21.000000000 -0500 @@ -64,8 +64,8 @@ char storedkey[GSASL_HASH_MAX_SIZE]; char serverkey[GSASL_HASH_MAX_SIZE]; char *authmessage; - char *cbtlsunique; - size_t cbtlsuniquelen; + char *cb; + size_t cblen; struct scram_client_first cf; struct scram_server_first sf; struct scram_client_final cl; @@ -187,33 +187,48 @@ if (input_len == 0) return GSASL_NEEDS_MORE; - { - const char *p; - - p = gsasl_property_get (sctx, GSASL_CB_TLS_UNIQUE); - if (state->plus && !p) - return GSASL_NO_CB_TLS_UNIQUE; - if (p) - { - rc = gsasl_base64_from (p, strlen (p), &state->cbtlsunique, - &state->cbtlsuniquelen); - if (rc != GSASL_OK) - return rc; - } - } - if (scram_parse_client_first (input, input_len, &state->cf) < 0) return GSASL_MECHANISM_PARSE_ERROR; - /* In PLUS server mode, we require use of channel bindings. */ - if (state->plus && state->cf.cbflag != 'p') - return GSASL_AUTHENTICATION_ERROR; + if (state->plus) + { + const char *p; - /* In non-PLUS mode, but where have channel bindings data (and - thus advertised PLUS) we reject a client 'y' cbflag. */ - if (!state->plus - && state->cbtlsuniquelen > 0 && state->cf.cbflag == 'y') - return GSASL_AUTHENTICATION_ERROR; + /* In PLUS server mode, we require use of channel bindings. */ + if (state->cf.cbflag != 'p' || state->cf.cbname == NULL) + return GSASL_AUTHENTICATION_ERROR; + + if (strcmp (state->cf.cbname, "tls-exporter") == 0) + { + p = gsasl_property_get (sctx, GSASL_CB_TLS_EXPORTER); + if (!p) + return GSASL_NO_CB_TLS_EXPORTER; + } + else if (strcmp (state->cf.cbname, "tls-unique") == 0) + { + p = gsasl_property_get (sctx, GSASL_CB_TLS_UNIQUE); + if (!p) + return GSASL_NO_CB_TLS_UNIQUE; + } + else + return GSASL_AUTHENTICATION_ERROR; + + rc = gsasl_base64_from (p, strlen (p), &state->cb, &state->cblen); + if (rc != GSASL_OK) + return rc; + } + else if (state->cf.cbflag == 'y') + { + const char *p = gsasl_property_get (sctx, GSASL_CB_TLS_EXPORTER); + /* In non-PLUS mode we reject a client 'y' cbflag since we + support channel bindings UNLESS we actually don't have + any channel bindings (application told to libgsasl that + it doesn't want PLUS). */ + if (!p) + p = gsasl_property_get (sctx, GSASL_CB_TLS_UNIQUE); + if (p != NULL) + return GSASL_AUTHENTICATION_ERROR; + } /* Check that username doesn't fail SASLprep. */ { @@ -338,6 +353,7 @@ { size_t len; + free (state->cbind); rc = gsasl_base64_from (state->cl.cbind, strlen (state->cl.cbind), &state->cbind, &len); if (rc != 0) @@ -352,11 +368,11 @@ strlen (state->gs2header)) != 0) return GSASL_AUTHENTICATION_ERROR; - if (len - strlen (state->gs2header) != state->cbtlsuniquelen) + if (len - strlen (state->gs2header) != state->cblen) return GSASL_AUTHENTICATION_ERROR; if (memcmp (state->cbind + strlen (state->gs2header), - state->cbtlsunique, state->cbtlsuniquelen) != 0) + state->cb, state->cblen) != 0) return GSASL_AUTHENTICATION_ERROR; } else @@ -374,6 +390,7 @@ { size_t len; + free (state->clientproof); rc = gsasl_base64_from (state->cl.proof, strlen (state->cl.proof), &state->clientproof, &len); if (rc != 0) @@ -549,7 +566,7 @@ free (state->snonce); free (state->clientproof); free (state->authmessage); - free (state->cbtlsunique); + free (state->cb); scram_free_client_first (&state->cf); scram_free_server_first (&state->sf); scram_free_client_final (&state->cl); diff -Nru gsasl-2.0.1/lib/securid/Makefile.in gsasl-2.2.0/lib/securid/Makefile.in --- gsasl-2.0.1/lib/securid/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/lib/securid/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -369,6 +369,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -729,6 +730,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1527,6 +1529,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1724,6 +1727,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/src/error.c gsasl-2.2.0/lib/src/error.c --- gsasl-2.0.1/lib/src/error.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/src/error.c 2022-08-20 08:53:21.000000000 -0500 @@ -159,7 +159,9 @@ ERR (GSASL_NO_SAML20_REDIRECT_URL, N_("Callback failed to provide SAML20 redirect URL.")), ERR (GSASL_NO_OPENID20_REDIRECT_URL, - N_("Callback failed to provide OPENID20 redirect URL.")) + N_("Callback failed to provide OPENID20 redirect URL.")), + ERR (GSASL_NO_CB_TLS_EXPORTER, + N_("Authentication failed because a tls-exporter channel binding was not provided.")) }; /* *INDENT-ON* */ diff -Nru gsasl-2.0.1/lib/src/gsasl.h gsasl-2.2.0/lib/src/gsasl.h --- gsasl-2.0.1/lib/src/gsasl.h 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/src/gsasl.h 2022-08-20 08:53:21.000000000 -0500 @@ -96,6 +96,7 @@ * @GSASL_NO_SERVICE: Could not get required service name. * @GSASL_NO_HOSTNAME: Could not get required hostname. * @GSASL_NO_CB_TLS_UNIQUE: Could not get required tls-unique CB. + * @GSASL_NO_CB_TLS_EXPORTER: Could not get required tls-exporter CB. * @GSASL_NO_SAML20_IDP_IDENTIFIER: Could not get required SAML IdP. * @GSASL_NO_SAML20_REDIRECT_URL: Could not get required SAML * redirect URL. @@ -151,6 +152,7 @@ GSASL_NO_SAML20_IDP_IDENTIFIER = 66, GSASL_NO_SAML20_REDIRECT_URL = 67, GSASL_NO_OPENID20_REDIRECT_URL = 68, + GSASL_NO_CB_TLS_EXPORTER = 69, /* Mechanism specific errors. */ GSASL_GSSAPI_RELEASE_BUFFER_ERROR = 37, GSASL_GSSAPI_IMPORT_NAME_ERROR = 38, @@ -197,6 +199,7 @@ * @GSASL_SCRAM_STOREDKEY: Hex-encoded SCRAM StoredKey derived * from users' passowrd. * @GSASL_CB_TLS_UNIQUE: Base64 encoded tls-unique channel binding. + * @GSASL_CB_TLS_EXPORTER: Base64 encoded tls-exporter channel binding. * @GSASL_SAML20_IDP_IDENTIFIER: SAML20 user IdP URL. * @GSASL_SAML20_REDIRECT_URL: SAML 2.0 URL to access in browser. * @GSASL_OPENID20_REDIRECT_URL: OpenID 2.0 URL to access in browser. @@ -242,6 +245,7 @@ GSASL_SAML20_REDIRECT_URL = 20, GSASL_OPENID20_REDIRECT_URL = 21, GSASL_OPENID20_OUTCOME_DATA = 22, + GSASL_CB_TLS_EXPORTER = 25, /* Client callbacks. */ GSASL_SAML20_AUTHENTICATE_IN_BROWSER = 250, GSASL_OPENID20_AUTHENTICATE_IN_BROWSER = 251, diff -Nru gsasl-2.0.1/lib/src/internal.h gsasl-2.2.0/lib/src/internal.h --- gsasl-2.0.1/lib/src/internal.h 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/src/internal.h 2022-08-20 08:53:21.000000000 -0500 @@ -78,6 +78,7 @@ char *scram_serverkey; char *scram_storedkey; char *cb_tls_unique; + char *cb_tls_exporter; char *saml20_idp_identifier; char *saml20_redirect_url; char *openid20_redirect_url; diff -Nru gsasl-2.0.1/lib/src/Makefile.in gsasl-2.2.0/lib/src/Makefile.in --- gsasl-2.0.1/lib/src/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/lib/src/Makefile.in 2022-09-03 09:52:59.000000000 -0500 @@ -435,6 +435,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -795,6 +796,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1593,6 +1595,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1790,6 +1793,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/lib/src/property.c gsasl-2.2.0/lib/src/property.c --- gsasl-2.0.1/lib/src/property.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/src/property.c 2022-08-20 08:53:21.000000000 -0500 @@ -112,6 +112,10 @@ p = &sctx->cb_tls_unique; break; + case GSASL_CB_TLS_EXPORTER: + p = &sctx->cb_tls_exporter; + break; + case GSASL_SAML20_IDP_IDENTIFIER: p = &sctx->saml20_idp_identifier; break; diff -Nru gsasl-2.0.1/lib/src/xfinish.c gsasl-2.2.0/lib/src/xfinish.c --- gsasl-2.0.1/lib/src/xfinish.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/lib/src/xfinish.c 2022-08-20 08:53:21.000000000 -0500 @@ -66,6 +66,7 @@ free (sctx->scram_serverkey); free (sctx->scram_storedkey); free (sctx->cb_tls_unique); + free (sctx->cb_tls_exporter); free (sctx->saml20_idp_identifier); free (sctx->saml20_redirect_url); free (sctx->openid20_redirect_url); diff -Nru gsasl-2.0.1/m4/gnulib-comp.m4 gsasl-2.2.0/m4/gnulib-comp.m4 --- gsasl-2.0.1/m4/gnulib-comp.m4 2022-07-15 10:50:18.000000000 -0500 +++ gsasl-2.2.0/m4/gnulib-comp.m4 2022-09-03 09:51:39.000000000 -0500 @@ -171,6 +171,7 @@ dnl for the builtin va_copy to work. gl_PROG_CC_C99 arranges for this. gl_PROG_CC_C99 # Code from module stdbool: + # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: @@ -584,6 +585,14 @@ gl_STDBOOL_H gl_CONDITIONAL_HEADER([stdbool.h]) AC_PROG_MKDIR_P + AC_CHECK_HEADERS_ONCE([stdckdint.h]) + if test $ac_cv_header_stdckdint_h = yes; then + GL_GENERATE_STDCKDINT_H=false + else + GL_GENERATE_STDCKDINT_H=true + fi + gl_CONDITIONAL_HEADER([stdckdint.h]) + AC_PROG_MKDIR_P gl_STDDEF_H gl_STDDEF_H_REQUIRE_DEFAULTS gl_CONDITIONAL_HEADER([stddef.h]) @@ -979,6 +988,7 @@ lib/iconv_open.c lib/idx.h lib/inet_ntop.c + lib/intprops-internal.h lib/intprops.h lib/inttypes.in.h lib/itold.c @@ -1044,6 +1054,7 @@ lib/stdalign.in.h lib/stdarg.in.h lib/stdbool.in.h + lib/stdckdint.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio-impl.h diff -Nru gsasl-2.0.1/m4/iconv.m4 gsasl-2.2.0/m4/iconv.m4 --- gsasl-2.0.1/m4/iconv.m4 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/m4/iconv.m4 2022-09-03 09:51:34.000000000 -0500 @@ -1,4 +1,4 @@ -# iconv.m4 serial 24 +# iconv.m4 serial 26 dnl Copyright (C) 2000-2002, 2007-2014, 2016-2022 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation @@ -234,12 +234,6 @@ dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". -dnl This is tricky because of the way 'aclocal' is implemented: -dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. -dnl Otherwise aclocal's initial scan pass would miss the macro definition. -dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. -dnl Otherwise aclocal would emit many "Use of uninitialized value $1" -dnl warnings. AC_DEFUN_ONCE([AM_ICONV], [ AM_ICONV_LINK @@ -280,4 +274,20 @@ ICONV_CONST="const" fi ]) + + dnl A summary result, for those packages which want to print a summary at the + dnl end of the configuration. + if test "$am_func_iconv" = yes; then + if test -n "$LIBICONV"; then + am_cv_func_iconv_summary='yes, in libiconv' + else + am_cv_func_iconv_summary='yes, in libc' + fi + else + if test "$am_cv_func_iconv" = yes; then + am_cv_func_iconv_summary='not working, consider installing GNU libiconv' + else + am_cv_func_iconv_summary='no, consider installing GNU libiconv' + fi + fi ]) diff -Nru gsasl-2.0.1/m4/largefile.m4 gsasl-2.2.0/m4/largefile.m4 --- gsasl-2.0.1/m4/largefile.m4 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/m4/largefile.m4 2022-09-03 09:51:34.000000000 -0500 @@ -10,8 +10,10 @@ # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this # setting of _LARGEFILE_SOURCE is needed so that declares fseeko # and ftello in C++ mode as well. +# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. AC_DEFUN([gl_SET_LARGEFILE_SOURCE], [ + m4_ifndef([AC_SYS_YEAR2038], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_FUNC_FSEEKO case "$host_os" in @@ -20,9 +22,10 @@ [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) ;; esac + ]) ]) -# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+ +# Work around a problem in Autoconf through 2.71 on glibc 2.34+ # with _TIME_BITS. Also, work around a problem in autoconf <= 2.69: # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. @@ -43,6 +46,7 @@ ]) ])# m4_version_prereq 2.70 +m4_ifndef([AC_SYS_YEAR2038], [ # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, # CACHE-VAR, @@ -118,6 +122,7 @@ [64], [gl_YEAR2038_BODY([])])]) ])# AC_SYS_LARGEFILE +])# m4_ifndef AC_SYS_YEAR2038 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. diff -Nru gsasl-2.0.1/m4/lib-link.m4 gsasl-2.2.0/m4/lib-link.m4 --- gsasl-2.0.1/m4/lib-link.m4 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/m4/lib-link.m4 2022-09-03 09:51:34.000000000 -0500 @@ -1,4 +1,4 @@ -# lib-link.m4 serial 32 +# lib-link.m4 serial 33 dnl Copyright (C) 2001-2022 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -196,8 +196,8 @@ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) AC_ARG_WITH(PACK[-prefix], -[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib - --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib + --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no diff -Nru gsasl-2.0.1/m4/stdbool.m4 gsasl-2.2.0/m4/stdbool.m4 --- gsasl-2.0.1/m4/stdbool.m4 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/m4/stdbool.m4 2022-09-03 09:51:35.000000000 -0500 @@ -43,75 +43,76 @@ AC_SUBST([HAVE__BOOL]) ]) -# This version of the macro is needed in autoconf <= 2.68. +m4_version_prereq([2.72], [], [ AC_DEFUN([AC_CHECK_HEADER_STDBOOL], - [AC_CACHE_CHECK([for stdbool.h that conforms to C99], + [AC_CHECK_TYPES([_Bool]) + AC_CACHE_CHECK([for stdbool.h that conforms to C99 or later], [ac_cv_header_stdbool_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( - [[ - #include + [[#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ - #ifdef __cplusplus - typedef bool Bool; - #else - typedef _Bool Bool; - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif + #if !true + #error "'true' is not true" #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" #endif + char d[false == 0 ? 1 : -1]; - struct s { Bool s: 1; Bool t; bool u: 1; bool v; } s; + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html */ - Bool q = true; - Bool *pq = &q; - bool *qq = &q; + bool p = true; + bool *pp = &p; ]], [[ - bool e = &s; - *pq |= q; *pq |= ! q; - *qq |= q; *qq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq + !qq); + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); ]])], [ac_cv_header_stdbool_h=yes], [ac_cv_header_stdbool_h=no])]) - AC_CHECK_TYPES([_Bool]) -]) +])# AC_CHECK_HEADER_STDBOOL + +]) # m4_version_prereq 2.72 diff -Nru gsasl-2.0.1/m4/sys_stat_h.m4 gsasl-2.2.0/m4/sys_stat_h.m4 --- gsasl-2.0.1/m4/sys_stat_h.m4 2022-07-15 10:50:16.000000000 -0500 +++ gsasl-2.2.0/m4/sys_stat_h.m4 2022-09-03 09:51:35.000000000 -0500 @@ -1,4 +1,4 @@ -# sys_stat_h.m4 serial 41 -*- Autoconf -*- +# sys_stat_h.m4 serial 42 -*- Autoconf -*- dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -46,7 +46,7 @@ dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include - ]], [fchmodat fstat fstatat futimens getumask lchmod lstat + ]], [chmod fchmodat fstat fstatat futimens getumask lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) AC_REQUIRE([AC_C_RESTRICT]) @@ -72,6 +72,7 @@ [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS], [ gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHMOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHMODAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTATAT]) @@ -112,6 +113,7 @@ HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) + REPLACE_CHMOD=0; AC_SUBST([REPLACE_CHMOD]) REPLACE_FCHMODAT=0; AC_SUBST([REPLACE_FCHMODAT]) REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) diff -Nru gsasl-2.0.1/m4/year2038.m4 gsasl-2.2.0/m4/year2038.m4 --- gsasl-2.0.1/m4/year2038.m4 2022-07-15 10:50:17.000000000 -0500 +++ gsasl-2.2.0/m4/year2038.m4 2022-09-03 09:51:35.000000000 -0500 @@ -1,4 +1,4 @@ -# year2038.m4 serial 7 +# year2038.m4 serial 8 dnl Copyright (C) 2017-2022 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -7,6 +7,12 @@ dnl Attempt to ensure that 'time_t' can go past the year 2038 and that dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. +m4_ifdef([AC_SYS_YEAR2038], [ + AC_DEFUN([gl_YEAR2038_EARLY]) + AC_DEFUN([gl_YEAR2038], [AC_SYS_YEAR2038]) + AC_DEFUN([gl_YEAR2038_BODY], [_AC_SYS_YEAR2038]) +], [ + AC_DEFUN([gl_YEAR2038_EARLY], [ AC_REQUIRE([AC_CANONICAL_HOST]) @@ -122,3 +128,5 @@ [ gl_YEAR2038_BODY([require-year2038-safe]) ]) + +]) # m4_ifndef AC_SYS_YEAR2038 diff -Nru gsasl-2.0.1/maint.mk gsasl-2.2.0/maint.mk --- gsasl-2.0.1/maint.mk 2022-07-15 10:50:17.000000000 -0500 +++ gsasl-2.2.0/maint.mk 2022-09-03 09:51:35.000000000 -0500 @@ -622,9 +622,9 @@ $(_sc_header_without_use) # Extract function names: -# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h +# perl -lne '/^(?:extern )?(?:void|char|Hash_table) \*?(\w+) *\(/ and print $1' lib/hash.h _hash_re = \ -clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning +hash_(re(set_tuning|move)|xin(itialize|sert)|in(itialize|sert)|get_(firs|nex)t|print_statistics|(delet|fre)e|lookup|clear) _hash_fn = \<($(_hash_re)) *\( _hash_struct = (struct )?\<[Hh]ash_(table|tuning)\> sc_prohibit_hash_without_use: diff -Nru gsasl-2.0.1/Makefile.am gsasl-2.2.0/Makefile.am --- gsasl-2.0.1/Makefile.am 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/Makefile.am 2022-08-16 11:38:12.000000000 -0500 @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --with-gssapi-impl=no +AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --with-gssapi-impl=no ACLOCAL_AMFLAGS = -I m4 -I lib/m4 diff -Nru gsasl-2.0.1/Makefile.in gsasl-2.2.0/Makefile.in --- gsasl-2.0.1/Makefile.in 2022-07-15 10:53:29.000000000 -0500 +++ gsasl-2.2.0/Makefile.in 2022-09-03 09:59:08.000000000 -0500 @@ -403,6 +403,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -763,6 +764,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1561,6 +1563,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1758,6 +1761,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -1857,7 +1861,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --with-gssapi-impl=no +AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --with-gssapi-impl=no ACLOCAL_AMFLAGS = -I m4 -I lib/m4 SUBDIRS = lib po gl src examples tests doc gltests diff -Nru gsasl-2.0.1/NEWS gsasl-2.2.0/NEWS --- gsasl-2.0.1/NEWS 2022-07-15 10:49:41.000000000 -0500 +++ gsasl-2.2.0/NEWS 2022-09-03 09:50:54.000000000 -0500 @@ -1,5 +1,65 @@ GNU SASL NEWS -- History of user-visible changes. -*- outline -*- +* Noteworthy changes in release 2.2.0 (2022-09-03) [stable] + +** Fix build error with too old GnuTLS. + +** Tests: New tests/gsasl-mailutils-tls.sh. +It performs integration checks between GNU SASL and GNU MailUtils +imapd with TLS enabled, thereby testing TLS support in the 'gsasl' +command line tool. + +** Various minor bug fixes and improvements. +Mainly to pacify improved CI/CD checking. + +* Noteworthy changes in release 2.1.1 (2022-08-16) [beta] + +** Tests: New tests/gsasl-mailutils-gs2krb5-gssapi.sh. +It perform integration checks between GNU SASL and GNU MailUtils imapd +(GSSAPI and GS2-KRB5). They can be used externally from the GNU SASL +build environment to perform system integration tests, see +.gitlab-ci.yml for inspiration. + +** Various minor bug fixes and improvements. +Fix two crashes in 'gsasl' introduced in 2.1.0. + +* Noteworthy changes in release 2.1.0 (2022-08-05) [beta] + +** Support new "tls-exporter" channel binding. +The "tls-exporter" channel binding is specified in RFC 9266 +. Now we can support +SCRAM-*-PLUS over TLS 1.3 channels, and address some of the security +problems with "tls-unique". + +The library add new callback property GSASL_CB_TLS_EXPORTER and error +code GSASL_NO_CB_TLS_EXPORTER. These are documented in the manual. + +The 'gsasl' command-line tool set it if system GnuTLS has +GNUTLS_CB_TLS_EXPORTER, which was introduced with GnuTLS 3.7.2 +released on 2021-05-29. + +** SCRAM: Support for "tls-exporter". +The SCRAM client will now query the application for +GSASL_CB_TLS_EXPORTER before it query for GSASL_CB_TLS_UNIQUE. Supply +it to support TLS 1.3. The SCRAM server will query the application +for the channel binding type requested by the client (tls-unique or +tls-exporter), and it is up to the application to decide what to do. + +** SCRAM: Fix memory leaks on incremental application usage. +See tests/scram-incremental.c for application behaviour that trigger +the leaks. We run valgrind --leak-check=full to catch future +regressions. + +** Tests: New tests/gsasl-dovecot-gssapi.sh & tests/gsasl-mailutils-cram.sh. +These perform integration checks between GNU SASL and Dovecot +(GSS-API) and GNU MailUtils imapd (CRAM-MD5, DIGEST-MD5, SCRAM-SHA-*). +They can be used externally from the GNU SASL build environment to +perform system integration tests, see .gitlab-ci.yml for inspiration. + +** API and ABI modifications. +GSASL_CB_TLS_EXPORTER: Added. +GSASL_NO_CB_TLS_EXPORTER: Added. + * Noteworthy changes in release 2.0.1 (2022-07-15) [stable] ** Support for the libgssglue GSS-API library were added. diff -Nru gsasl-2.0.1/po/da.po gsasl-2.2.0/po/da.po --- gsasl-2.0.1/po/da.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/da.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2015-05-01 18:00+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -238,295 +238,307 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Tilbagekald mislykkedes i at tilbyde OPENID20-videresendelsesadresse." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Godkendelse mislykkedes, da en tls-unique CB ikke var indeholdt." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Libgsasl ukendt fejl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Inddataliste for SASL-mekanismer understøttet af serveren:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Inddataliste for SASL-mekanismer understøttet af serveren:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Bruger mekanisme:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Uddata fra serveren:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Uddata fra klienten:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Prøv »%s --help« for yderligere information.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "mangler argument" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "kræver både --x509-cert-file og --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "kan ikke bruge både --starttls og --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "kan ikke bruge både --smtp og --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "kan ikke bruge både --smtp og --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "initialiseringsfejl: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "fejl ved visning af mekanismer: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Denne klient understøtter de følgende mekanismer:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Denne server understøtter de følgende mekanismer:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS global initialisering mislykkedes: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS-initialisering mislykkedes: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "angivelse af GnuTLS-standarder mislykkedes: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "angivelse af GnuTLS-standarder mislykkedes: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "allokerer anonym GnuTLS-akkreditiv: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "angiver anonym GnuTLS-akkreditiv: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "allokerer X.509 GnuTLS-akkreditiv: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "indlæser X.509 GnuTLS-akkreditiv: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "ingen X.509 CA'er blev fundet: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "ingen X.509 CA'er blev fundet" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "angivelse af GnuTLS-standarder mislykkedes: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "angiver X.509 GnuTLS-akkreditiv: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "angiver prioritet for GnuTLS-krypteringsalgoritme (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS-håndtryk mislykkedes: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "verificerer modpartcertifikat: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "servercertifikat er ikke troværdigt" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "servercertifikat har ikke en kendt udsteder" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "servercertifikat er blevet tilbagekaldt" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "kunne ikke verificere servercertifikat (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "hentning af kanalbinding mislykkedes: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "hentning af kanalbinding mislykkedes: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Kan ikke finde mekanisme ...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mekanisme utilgængelig: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "Indtast base64-godkendelsesdata fra klienten (tast RET hvis ingen):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "Indtast base64-godkendelsesdata fra serveren (tast RET hvis ingen):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "serverfejl" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mekanismefejl: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Servergodkendelse afsluttet (klient troværdig) ...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Klientgodkendelse afsluttet (server troværdig) ...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Indtast programdata (EOF for at afslutte):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64-kodede programdata at sende:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL-post er for stor: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "kodningsfejl: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Session afsluttet ...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "afslutning af GnuTLS-session mislykkedes: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "fejl: server returnerede ikke et symbol\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/de.po gsasl-2.2.0/po/de.po --- gsasl-2.0.1/po/de.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/de.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-11-08 20:08+0100\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" @@ -261,297 +261,311 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Callback konnte keine OPENID20-Weiterleitungs-URL bereitstellen." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" +"Die Authentifizierung ist fehlgeschlagen, weil keine TLS-eindeutige CB " +"angegeben wurde." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Unbekanner Libgsasl-Fehler" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Eingabeliste der SASL-Mechanismen:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "SASL-Eingabemechanismen eingeben, die vom Server unterstützt werden:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Benutze Mechanismus:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Ausgabe vom Server:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Ausgabe vom Client:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "Option --mechanism muss angegeben sein" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "nicht unterstützter --mechanism für --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "Wiederholungszahl muss positiv sein: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Passwort eingeben: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "Fehlendes Argument" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "Benötigt sowohl --x509-cert-file als auch --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "Kann nicht --starttls und --no-starttls gleichzeitig nutzen" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "Kann nicht --smtp und --imap gleichzeitig nutzen" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "Kann SASL-Profil nicht erraten (versuchen Sie --smtp oder --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "Initialisierung fehlgeschlagen: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "Fehler beim Auflisten der Mechanismen: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Dieser Client unterstützt folgende Mechanismen:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Dieser Server unterstützt folgende Mechanismen:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Globale Initialisierung von GnuTLS fehlgeschlagen: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Initialisierung von GnuTLS fehlgeschlagen: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "Einstellen der Vorgabewerte für GnuTLS fehlgeschlagen: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "Einstellen des Servernamens für GnuTLS fehlgeschlagen: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "Reservieren des anonymen GnuTLS-Berechtigungsnachweises: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "Festlegen des anonymen GnuTLS-Berechtigungsnachweises: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "Reservieren des X.509-GnuTLS-Berechtigungsnachweises: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "Laden des X.509-GnuTLS-Berechtigungsnachweises: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "Keine X.509-CAs gefunden: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "Keine X.509-CAs gefunden" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "Einstellen des Systemvertrauens: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "Festlegen des X.509-GnuTLS-Berechtigungsnachweises: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "Festlegen der GnuTLS-Verschlüsselungs-Priorität (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "TLS-X.509-Verifizierung: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS-Handschlag fehlgeschlagen: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "TLS-Sitzungsinformationen: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "TLS-X.509-Zertifikat %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "Verifizieren des Partnerzertifikats: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "Das Serverzertifikat ist nicht vertrauenswürdig" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "Serverzertifikat hat keinen bekannten Herausgeber" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "Serverzertifikat wurde zurückgezogen" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "Konnte Serverzertifikat nicht verifizieren (rc=%u)." -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "Ermitteln der Kanalbindungen fehlgeschlagen: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "Ermitteln der Kanalbindungen fehlgeschlagen: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Kann Mechanismus nicht finden...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "Mechanismus nicht verfügbar: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Geben Sie Base64-Authentifizierungsdaten vom Client ein (ENTER für keine):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Geben Sie Base64-Authentifizierungsdaten vom Server ein (ENTER für keine):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "Serverfehler" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "Mechanismus-Fehler: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Server-Authentifizierung abgeschlossen (der Client vertraut)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Client-Authentifizierung abgeschlossen (der Server vertraut)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Geben Sie Anwendungsdaten ein (EOF zum Beenden):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64-codierte Anwendungsdaten zum Verschicken:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL-Datensatz zu groß: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "Codierungsfehler: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sitzung beendet...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "Beenden der GnuTLS-Sitzung fehlgeschlagen: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "Warnung: Server hat kein Token zurückgegeben\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/eo.po gsasl-2.2.0/po/eo.po --- gsasl-2.0.1/po/eo.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/eo.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-10-28 17:29-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" @@ -232,295 +232,307 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Eventvoko malsukcesis provizi rekondukan URL OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Aŭtentigo malsukcesis ĉar tls-unika CB ne estis provizata." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Nekonata eraro de Libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Enig-listo de mekanismoj SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Enig-listo de mekanismoj SASL subtenataj de la servilo:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Uzata mekanismo:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Eligo el servilo:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Eligo el kliento:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Provu '%s --help' por pli da informoj.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "mankas postulata --mechanism" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "ne subtenata --mechanism por --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "iteracia nombro devas esti pozitiva: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Entajpu pasvorton: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "mankas argumento" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "necesas kaj --x509-cert-file kaj --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "ne povas uzi kaj --starttls kaj --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "ne povas uzi kaj --smtp kaj --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "ne eblas diveni profilon SASL (provu --smtp aŭ --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "ekiga malsukceso: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "eraro dum listigo de mekanismoj: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Tiu ĉi kliento subtenas la jenajn mekanismojn:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Tiu ĉi servilo subtenas la jenajn mekanismojn:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Ĝenerala ekigo de GnuTLS malsukcesis: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Ekigo de GnuTLS malsukcesis: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "difino de GnuTLS-defaŭltoj malsukcesis: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "difino de servil-nomoj de GnuTLS fiaskis: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "rezervo de sennoma legitimilo GnuTLS: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "difino de sennoma legitimilo GnuTLS: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "rezervo de X.509-legitimilo GnuTLS: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "ŝargo je X.509-legitimilo GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "neniu X.509 CA trovite: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "neniu X.509 CA trovite" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "difino de sistema fido de GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "difino de X.509-legitimilo GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "difino de ĉifra prioritato GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "TLS X.509 Kontrolado: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "Kvitanco GnuTLS malsukcesis: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "TLS seanc-info: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "TLS X.509 Atestilo %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "kontrolado de samtavolana atestilo: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "servila atestilo ne estas fidinda" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "servila atestilo ne havis konatan eldonanto" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "servila atestilo estas revokata" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "ni ne povis kontroli servilan atestilon (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "akiro de kanalo-ligado malsukcesis: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "akiro de kanalo-ligado malsukcesis: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Ni ne povis trovi mekanismon...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mekanismo nedisponebla: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "Enmetu aŭtentigan datumaron base64 el kliento (premu RET se nenio):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "Enmetu aŭtentigan datumaron base64 el servilo (premu RET se nenio):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "servila eraro" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mekanisma eraro: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Servila aŭtentigo finis (kliento estas fidinda)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Klienta aŭtentigo finis (servilo estas fidinda)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Enmetu aplikaĵan datumaron (EOF por fini):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64-enkodita aplikaĵ-datumaro por sendi:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Rikordo SASL tro granda: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "enkoda eraro: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Seanco finiĝis...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "ĉesigo de seanco GnuTLS malsukcesis: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "averto: servilo ne liveris ĵetonon\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/es.po gsasl-2.2.0/po/es.po --- gsasl-2.0.1/po/es.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/es.po 2022-09-03 09:56:03.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2022-04-26 10:09-0500\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" @@ -243,299 +243,311 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Falló la retrollamada al proveer un URL de redirección OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Error de autenticación porque no se proporcionó un tls-único CB." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Error desconocido en libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Lista de entrada de mecanismos SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Lista de entrada de mecanismos SASL admitidos por el servidor:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Se utiliza el mecanismo:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Salida del servidor:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Salida del cliente:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Pruebe `%s --help' para más información.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "falta el --mechanism requerido" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "no se admite --mechanism para --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "la cuenta de iteración debe ser positiva: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Ingrese la contraseña: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "falta un argumento" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "se requieren --x509-cert-file y --x509-key-file al mismo tiempo" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "no se pueden utilizar --starttls y --no-starttls al mismo tiempo" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "no se pueden utilizar --smtp e --imap al mismo tiempo" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "no se puede determinar el perfil SASL (pruebe --smtp o --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "fallo de inicialización: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "error al listar mecanismos: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Este cliente admite los siguientes mecanismos:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Este servidor admite los siguientes mecanismos:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Falló la inicialización global de GnuTLS: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Falló la inicialización de GnuTLS: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "falló al establecer los valores predeterminados de GnuTLS: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "falló al establecer el nombre de servidor GnuTLS: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "reservando la credencial GnuTLS anónima: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "estableciendo la credencial GnuTLS anónima: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "reservando la credencial GnuTLS X.509: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "cargando la credencial X.509 GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "no se encontró ninguna AC X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "no se encontró ninguna AC X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "estableciendo la confianza de sistema GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "estableciendo la credencial X.509 GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "estableciendo la prioridad de cifrado GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "Verificación X.509 TLS: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "Falló la negociación GnuTLS: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "Información de sesión TLS: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "Certificado X.509 de TLS %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "verificando el certificado del par: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "el certificado del servidor no es confiable" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "el certificado del servidor no tiene un emisor conocido" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "el certificado del servidor ha sido revocado" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "no se pudo verificar el certificado del servidor (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "falló al obtener el enlace del canal: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "falló al obtener el enlace del canal: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "No se puede encontrar el mecanismo…\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "el mecanismo no está disponible: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Introduzca los datos autenticación base64 del cliente (pulse RET si no hay " "datos):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Introduzca los datos de autenticación base64 del servidor (pulse RET si no " "hay datos):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "error del servidor" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "error de mecanismo: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Finalizó la autenticación del servidor (cliente confiable)…\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Finalizó la autenticación del cliente (servidor confiable)…\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Introduzca los datos de la aplicación (EOF para terminar):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Datos de aplicación codificados con base64 para enviar:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Registro SASL demasiado grande: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "error de codificación: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sesión finalizada…\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "falló la terminación de sesión GnuTLS: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "aviso: el servidor no devolvió un token\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/eu.po gsasl-2.2.0/po/eu.po --- gsasl-2.0.1/po/eu.po 2022-07-15 10:52:10.000000000 -0500 +++ gsasl-2.2.0/po/eu.po 2022-09-03 09:56:03.000000000 -0500 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gsasl 0.1.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2004-11-05 16:36+0100\n" "Last-Translator: Mikel Olasagasti \n" "Language-Team: Basque \n" @@ -211,300 +211,311 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" + +#: lib/src/error.c:186 #, fuzzy msgid "Libgsasl unknown error" msgstr "Libgsasl errorea (%d): %s" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Aukeratu SASL mekanismoa:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, fuzzy, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Sartu zerbitzariak onartzen dituen SASL mekanismoak:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Mekanismo hau erabiltzen:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Zerbitzariaren irteera:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Bezeroaren irteera:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, fuzzy, c-format msgid "error listing mechanisms: %s" msgstr "Mekanismo hau erabiltzen:\n" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Bezero honek mekanismo hauek onartzen ditu:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Zerbitzari honek mekanismo hauek onartzen ditu:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, fuzzy, c-format msgid "server certificate is not trusted" msgstr "Zerbitzaria egiaztatua (bezeroak fidatua)...\n" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Ezin da mekanismoa aurkitu...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Sartu bezeroko egiaztapen datuak base64 moduan (sakatu INTRO behar ez " "bada):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Sartu zerbitzariko egiaztapen datuak base64 moduan (sakatu INTRO behar ez " "bada):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Zerbitzaria egiaztatua (bezeroak fidatua)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Bezeroa egiaztatua (zerbitzariak fidatua)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Sartu aplikazioaren datuak (fitxategi-amaiera amaitzeko):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Bidaliko den aplikazio datuak base64 moduan kodifikatua:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Saioa amaituta...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/fi.po gsasl-2.2.0/po/fi.po --- gsasl-2.0.1/po/fi.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/fi.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2012-05-18 14:53+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" @@ -237,299 +237,311 @@ msgstr "" "Vastakutsu ei kyennyt tarjoamaan OPENID20 uudelleenohjausverkko-osoitetta." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Todennus epäonnistui koska tls-unique CB ei tarjottu." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Tuntematon Libgsasl-virhe" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Palvelin tukee SASL-mekanismien syöteluetteloa:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Palvelin tukee SASL-mekanismien syöteluetteloa:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Käytetään mekanismia:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Tuloste palvelimelta:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Tuloste asiakkaalta:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Lisätietoja käskyllä ”%s --help”.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "puuttuva argumentti" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "" "tarvitsee sekä valitsimen --x509-cert-file että valitsimen --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "" "ei voi käyttää sekä valitsinta --starttls että valitsinta --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "ei voi käyttää sekä valitsinta --smtp että valitsinta --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "ei voi käyttää sekä valitsinta --smtp että valitsinta --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "alustusvirhe: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "virheluettelomekanismit: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Tämä asiakas tukee seuraavia mekanismeja:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Tämä palvelin tukee seuraavia mekanismeja:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS-yleisalustus epäonnistui: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS-alustus epäonnistui: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "GnuTLS-oletusten asetus epäonnistui: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "GnuTLS-oletusten asetus epäonnistui: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "varataan anonyymi GnuTLS-valtuutus: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "asetetaan anonyymi GnuTLS-valtuutus: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "varataan X.509 GnuTLS-valtuutus: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "ladataan X.509 GnuTLS-valtuutus: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "ei löytynyt X.509-varmennusviranomaisia: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "ei löytynyt X.509-varmennusviranomaisia" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "GnuTLS-oletusten asetus epäonnistui: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "asetetaan X.509 GnuTLS-valtuutus: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "asetetaan GnuTLS-salausprioriteetti (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS-kättely epäonnistui: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "todenna vertaisvarmenne: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "palvelinvarmenne ei ole luotettava" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "palvelinvarmenteen julkaisija ei ole tunnettu" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "palvelinvarmenne on peruttu" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "ei voitu todentaa palvelinvarmennetta (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "kanavasitomisen hakeminen epäonnistui: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "kanavasitomisen hakeminen epäonnistui: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Mekanismia ei löydy...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mekanismi on tavoittamattomissa: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Kirjoita base64-varmennedataa asiakkaalta (paina RET, jos ei mitään):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Kirjoita base64-varmennedataa palvelimelta (paina RET, jos ei mitään):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "palvelinvirhe" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mekanismivirhe: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Palvelinvarmennus päättynyt (asiakas luotettu)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Asiakasvarmennus päättynyt (palvelin luotettu)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Kirjoita sovellusdataa (Päätä EOF-merkillä):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64-koodattua sovellusdataa lähetettävänä:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL-tietue on liian suuri: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "koodausvirhe: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Istunto päättyi...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "GnuTLS-istunnon päättäminen epäonnistui: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "virhe: palvelin ei palauttanut merkkijonoa\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/fr.po gsasl-2.2.0/po/fr.po --- gsasl-2.0.1/po/fr.po 2022-07-15 10:53:47.000000000 -0500 +++ gsasl-2.2.0/po/fr.po 2022-09-03 09:56:03.000000000 -0500 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: GNU gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-11-07 17:58+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" @@ -250,300 +250,313 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Échec d'appel pour fournir l'URL de redirection OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" +"Échec d'authentification parce que le CB unique TLS n'a pas été fourni." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Erreur libgsasl inconnue" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Saisir la liste de mécanismes SASL :\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Liste de mécanismes SASL pris en charge par le serveur :\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Mécanisme utilisé :\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Sortie du serveur :\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Sortie du client :\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" "Exécutez « %s --help » pour obtenir des renseignements complémentaires.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "option --mechanism manquante" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "--mechanism non pris en charge pour --mkpasswd : %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "le compteur doit être positif : %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Saisir le mot de passe : " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "argument manquant" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "--x509-cert-file et --x509-key-file sont tous deux nécessaires" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "impossible d'utiliser --starttls et --no-starttls en même temps" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "impossible d'utiliser --smtp et --imap en même temps" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "impossible de détecter le profil SASL (essayez --smtp ou --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "échec d'initialisation : %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "erreur de liste des mécanismes : %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Ce client prend en charge les mécanismes suivants :\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Ce serveur prend en charge les mécanismes suivants :\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Échec d'initialisation globale de GnuTLS : %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Échec d'initialisation de GnuTLS : %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "échec de définition des valeurs GnuTLS par défaut : %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "échec de la configuration du nom de serveur GnuTLS : %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "allocation d'un certificat anonyme GnuTLS : %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "définition d'un certificat anonyme GnuTLS : %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "allocation d'un certificat X509 GnuTLS : %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "chargement d'un certificat X509 GnuTLS : %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "aucune autorité de certification (CA) X509 disponible : %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "aucune autorité de certification (CA) X509 disponible" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "configuration du système de confiance GnuTLS : %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "définition d'un certificat X509 GnuTLS : %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "définition des chiffrements prioritaires GnuTLS (%s) : %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "Vérification TLS X.509 : %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "Échec de négociation GnuTLS : %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "Info de session TLS : %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "Certificat TLS X.509 %u : %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "vérification du certificat pair : %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "le certificat du serveur n'est pas digne de confiance" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "le certificat du serveur n'a pas d'émetteur connu" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "le certificat du serveur a été révoqué" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "impossible de vérifier le certificat du serveur (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "échec d'obtention du lien de canal : %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "échec d'obtention du lien de canal : %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Impossible de trouver le mécanisme…\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mécanisme non disponible : %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Saisir les données d'authentification en base 64 du client (appuyer sur " "Entrée si aucune) :\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Saisir les données d'authentification en base 64 du serveur (appuyer sur " "Entrée si aucune) :\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "erreur du serveur" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "erreur de mécanisme : %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Authentification par le serveur terminée (client fiable)…\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Authentification par le client terminée (serveur fiable)…\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Saisir les données d'application (EOF pour terminer) :\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Données applicatives encodées en base 64 à transmettre :\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Bloc SASL trop grand : %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "erreur d'encodage : %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Session terminée…\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "échec de fin de session GnuTLS : %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "avertissement : le serveur n'a pas renvoyé de jeton\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/ga.po gsasl-2.2.0/po/ga.po --- gsasl-2.0.1/po/ga.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/ga.po 2022-09-03 09:56:03.000000000 -0500 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gsasl 1.1\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2009-03-25 20:03-0500\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" @@ -240,303 +240,315 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Theip ar fhíordheimhniú ós rud é nár tugadh an t-óstainm." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Libgsasl: earráid anaithnid" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Iontráil liosta de shásraí SASL atá tacaithe ag an fhreastalaí:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Iontráil liosta de shásraí SASL atá tacaithe ag an fhreastalaí:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Ag úsáid an tsásra:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Aschur ón fhreastalaí:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Aschur ón chliant:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Bain triail as `%s --help' chun tuilleadh eolais a fháil.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "tá gá le --x509-cert-file agus --x509-key-file araon" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "ní féidir --starttls agus --no-starttls a úsáid le chéile" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "ní féidir --smtp agus --imap a úsáid le chéile" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "ní féidir --smtp agus --imap a úsáid le chéile" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "theip ar thúsú: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "earráid agus sásraí á dtaispeáint: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Tacaíonn an cliant seo na sásraí seo a leanas:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Tacaíonn an freastalaí seo na sásraí a leanas:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "theip ar thúsú comhchoiteann GnuTLS: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "theip ar thúsú GnuTLS: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "theip ar shocrú na réamhshocruithe GnuTLS: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "theip ar shocrú na réamhshocruithe GnuTLS: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "dintiúr GnuTLS gan ainm á dháileadh: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "dintiúr GnuTLS gan ainm á shocrú: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "dintiúr X.509 GnuTLS á dháileadh: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "dintiúr X.509 GnuTLS á luchtú: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "níor aimsíodh aon CA X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "níor aimsíodh aon CA X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "theip ar shocrú na réamhshocruithe GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "dintiúr X.509 GnuTLS á shocrú: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "sifearthosaíocht GnuTLS á socrú (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "theip ar chumarsáid thionscantach GnuTLS: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "teastas an chomhghleacaí á fhíorú: %s" # # @name STRONGAUTH_REQUIRED_HINT # # @loc none -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "ní chuirtear muinín sa teastas freastalaí" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "níl eisitheoir atá ar eolas ag an teastas freastalaí" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "aisghaireadh an teastas freastalaí" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "níorbh fhéidir an teastas freastalaí a fhíorú (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "theip ar shocrú na réamhshocruithe GnuTLS: %s" + +#: src/gsasl.c:893 #, fuzzy, c-format msgid "getting channel binding failed: %s" msgstr "theip ar shocrú na réamhshocruithe GnuTLS: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Ní bhfuarthas an sásra...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "níl an sásra ar fáil: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Iontráil sonraí fíordheimhnithe base64 ón chliant (RET mura bhfuil aon sonra " "ann):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Iontráil sonraí fíordheimhnithe base64 ón fhreastalaí (RET mura bhfuil aon " "sonra ann):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "earráid le sásra: %s" # # @name STRONGAUTH_REQUIRED_HINT # # @loc none -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Fíordheimhniú den fhreastalaí déanta (cliant iontaofa)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Fíordheimhniú den chliant déanta (freastalaí iontaofa)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Iontráil sonraí feidhmchláir (comhadchríoch nuair atá tú déanta):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Sonraí le seoladh, ionchódaithe le bunuimhir 64:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "earráid ionchódaithe: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Seisiún déanta...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "theip ar chur deireadh leis an seisiún GnuTLS: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/gsasl.pot gsasl-2.2.0/po/gsasl.pot --- gsasl-2.0.1/po/gsasl.pot 2022-07-15 10:52:10.000000000 -0500 +++ gsasl-2.2.0/po/gsasl.pot 2022-09-03 09:56:03.000000000 -0500 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gsasl 2.0.1\n" +"Project-Id-Version: gsasl 2.2.0\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -208,295 +208,306 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/hr.po gsasl-2.2.0/po/hr.po --- gsasl-2.0.1/po/hr.po 2022-07-15 10:52:10.000000000 -0500 +++ gsasl-2.2.0/po/hr.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2012-08-13 23:09+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" @@ -212,296 +212,307 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Ulazni popis SASL mehanizama koje podržava poslužitelj:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Ulazni popis SASL mehanizama koje podržava poslužitelj:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Koristim mehanizam:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Ispis poslužitelja:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Ispis klijenta:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Pokušajte „%s --help” za više informacija.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "nedostaje argument" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "zahtijeva i --x509-cert-file i --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "ne mogu koristiti i --starttls i --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "ne mogu koristiti i --smtp i --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "ne mogu koristiti i --smtp i --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "greška inicijalizacije: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "greška ispisa mehanizama: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Ovaj klijent podržava sljedeće mehanizme:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Ovaj poslužitelj podržava sljedeće mehanizme:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS globalna inicijalizacija nije uspjela: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS inicijalizacija nije uspjela: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "postavljanje GnuTLS zadanih postavki nije uspjelo: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "postavljanje GnuTLS zadanih postavki nije uspjelo: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "alociram anonimnu GnuTLS vjerodajnicu: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "postavljam anonimnu GnuTLS vjerodajnicu: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "alociram X.509 GnuTLS vjerodajnicu: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "učitavam X.509 GnuTLS vjerodajnicu: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "nijedan X.509 CA nije pronađen: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "nijedan X.509 CA nije pronađen" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "postavljanje GnuTLS zadanih postavki nije uspjelo: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "postavljam X.509 GnuTLS vjerodajnicu: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "postavljam GnuTLS prioritet šifriranja (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS rukovanje nije uspjelo: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "provjeravam certifikat člana: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "certifikat poslužitelja nije pouzdan" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "certifikat poslužitelja nema poznatog izdavatelja" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "certifikat poslužitelja je ukinut" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "ne mogu provjeriti certifikat poslužitelja (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "nisam uspio dohvatiti dodijeljene vrijednosti kanala: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "nisam uspio dohvatiti dodijeljene vrijednosti kanala: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Ne mogu pronaći mehanizam...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mehanizam nije dostupan: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "Unesite base64 podatke ovjere klijenta (pritisnite RET ako ih nema):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Unesite base64 podatke ovjere poslužitelja (pritisnite RET ako ih nema):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "greška poslužitelja" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "greška mehanizma: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Ovjera poslužitelja završena (klijent je pouzdan)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Ovjera klijenta završena (poslužitelj je pouzdan)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Unesite programske podatke (EOF za završetak):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64 kodirani programski podaci za slanje:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL zapis je prevelik: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "greška kodiranja: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sjednica završena...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "prekidanje GnuTLS sjednice nije uspjelo: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "greška: poslužitelj nije vratio simbol\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/hu.po gsasl-2.2.0/po/hu.po --- gsasl-2.0.1/po/hu.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/hu.po 2022-09-03 09:56:03.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.8.1\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2019-11-23 21:47+0100\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" @@ -244,299 +244,311 @@ msgstr "" "A visszahívásnak nem sikerült biztosítania az OPENID20 átirányítási URL-t." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "A hitelesítés nem sikerült, mert az egyedi TLS CB nem lett megadva." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Ismeretlen libgsasl hiba" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "A kiszolgáló által támogatott SASL mechanizmusok bemeneti listája:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "A kiszolgáló által támogatott SASL mechanizmusok bemeneti listája:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Mechanizmus használata:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Kimenet a kiszolgálóról:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Kimenet a kliensről:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "További információkért próbálja a(z) „%s --help” parancsot.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "hiányzó argumentum" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "a --x509-cert-file és a --x509-key-file is szükséges" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "nem használható együtt a --starttls és a --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "nem használható együtt a --smtp és a --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "nem használható együtt a --smtp és a --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "előkészítési hiba: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "hiba a mechanizmusok listázásakor: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Ez a kliens a következő mechanizmusokat támogatja:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Ez a kiszolgáló a következő mechanizmusokat támogatja:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "a GnuTLS globális előkészítése nem sikerült: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "a GnuTLS előkészítése nem sikerült: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "a GnuTLS alapértelmezések beállítása nem sikerült: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "a GnuTLS alapértelmezések beállítása nem sikerült: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "névtelen GnuTLS hitelesítési adatok lefoglalása: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "névtelen GnuTLS hitelesítési adatok beállítása: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "X.509 GnuTLS hitelesítési adatok lefoglalása: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "X.509 GnuTLS hitelesítési adatok betöltése: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "X.509 CA-k nem találhatók: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "X.509 CA-k nem találhatók" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "a GnuTLS alapértelmezések beállítása nem sikerült: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "X.509 GnuTLS hitelesítési adatok beállítása: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "GnuTLS titkosító prioritás (%s) beállítása: %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "a GnuTLS kézfogás nem sikerült: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "a partner tanúsítványának ellenőrzése: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "a kiszolgáló tanúsítványa nem megbízható" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "a kiszolgáló tanúsítványának nincs ismert kibocsátója" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "a kiszolgáló tanúsítványát visszavonták" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "nem sikerült ellenőrizni a kiszolgáló tanúsítványát (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "a csatornakötés beszerzése nem sikerült: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "a csatornakötés beszerzése nem sikerült: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Nem található a mechanizmus…\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "a mechanizmus nem érhető el: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Adja meg a base64 hitelesítési adatokat a kliensről (ha nincs, nyomjon ENTER-" "t):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Adja meg a base64 hitelesítési adatokat a kiszolgálóról (ha nincs, nyomjon " "ENTER-t):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "kiszolgálóhiba" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mechanizmushiba: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "A kiszolgáló hitelesítése befejeződött (a kliens megbízható)…\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "A kliens hitelesítése befejeződött (a kiszolgáló megbízható)…\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Adja meg az alkalmazás adatait (fájl vége a befejezéshez):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "A küldendő base64 kódolású alkalmazás adatok:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "A SASL rekord túl nagy: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "kódolási hiba: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "A munkamenet befejeződött…\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "a GnuTLS munkamenet megszakítása nem sikerült: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "figyelmeztetés: a kiszolgáló nem adott vissza tokent\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/id.po gsasl-2.2.0/po/id.po --- gsasl-2.0.1/po/id.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/id.po 2022-09-03 09:56:04.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl-1.1\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2010-01-27 07:30+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -230,297 +230,309 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Panggil kembali gagal untuk menyediakan pengalihan URL OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Otentikasi gagal karena nama CB tls-unique tidak disediakan." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Galat tak diketahui libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Daftar input mekanisme SASL yang didukung oleh server:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Daftar input mekanisme SASL yang didukung oleh server:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Menggunakan mekanisme:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Output dari server:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Output dari klien:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Coba `%s' --help untuk informasi lebih lanjut.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "membutuhkan file --x509-cert-file dan --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "tidak dapat menggunakan --starttls dan --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "tidak dapat menggunakan --smtp dan --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "tidak dapat menggunakan --smtp dan --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "kegagalan inisialisasi: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "kesalahan menampilkan mekanisme: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Klien ini mendukung mekanisme berikut:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Server ini mendukung mekanisme berikut:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Inisialisasi global GnuTLS gagal: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Inisialisasi GnuTLS gagal: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "seting baku GnuTLS gagal: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "seting baku GnuTLS gagal: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "mengalokasikan kredensial GnuTLS anonim: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "menset kredensial GnuTLS anonim: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "mengalokasikan kredensial GnuTLS X.509: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "memuatkan kredensial GnuTLS X.509: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "tidak ditemukan CA X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "tidak ditemukan CA X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "seting baku GnuTLS gagal: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "menset kredensial GnuTLS X.509: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "menset prioritas penyandi GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "Kegagalan handshake GnuTLS: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "verifikasi sertifikat peer: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "sertifikat server tidak dipercaya" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "sertifikat server tidak berisikan penerbit yang dikenal" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "sertifikat server telah dicabut" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "tidak dapat memverifikasi sertifikat server (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "seting baku GnuTLS gagal: %s" + +#: src/gsasl.c:893 #, fuzzy, c-format msgid "getting channel binding failed: %s" msgstr "seting baku GnuTLS gagal: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Tidak dapat menemukan mekanisme...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mekanisme tidak tersedia: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Masukkan data otentikasi base64 dari klien (tekan RET bila tidak ada):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Masukkan data otentikasi base64 dari server (tekan RET bila tidak ada):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "kesalahan mekanisme: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Otentikasi server selesai (klien dipercaya)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Otentikasi klien selesai (server dipercaya)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Masukkan data aplikasi (EOF untuk mengakhiri):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Data aplikasi berkode base64 yang dikirim:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "kesalahan pengkodean: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sesi selesai...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "gagal mengakhiri sesi GnuTLS: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/it.po gsasl-2.2.0/po/it.po --- gsasl-2.0.1/po/it.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/it.po 2022-09-03 09:56:04.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl-1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2012-05-18 16:22+0200\n" "Last-Translator: Sergio Zanchetta \n" "Language-Team: Italian \n" @@ -245,299 +245,313 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Il callback non è riuscito a fornire l'URL di redirezione OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" +"Autenticazione non riuscita poiché non è stata fornita un'associazione di " +"canale tls-unique." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Errore sconosciuto di libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Inserire l'elenco dei meccanismi SASL supportati dal server:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Inserire l'elenco dei meccanismi SASL supportati dal server:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Meccanismo in uso:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Output dal server:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Output dal client:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Usare \"%s --help\" per maggiori informazioni.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "argomento mancante" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "necessari sia --x509-cert-file che --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "impossibile usare sia --starttls che --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "impossibile usare sia --smtp che --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "impossibile usare sia --smtp che --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "inizializzazione non riuscita: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "errore nell'elencare i meccanismi: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Questo client supporta i seguenti meccanismi:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Questo server supporta i seguenti meccanismi:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "inizializzazione globale di GnuTLS non riuscita: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "inizializzazione di GnuTLS non riuscita: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "impostazione dei predefiniti GnuTLS non riuscita: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "impostazione dei predefiniti GnuTLS non riuscita: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "allocazione delle credenziali anonime di GnuTLS: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "impostazione delle credenziali anonime di GnuTLS: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "allocazione della credenziale X.509 di GnuTLS: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "caricamento della credenziale X.509 di GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "nessun CA X.509 trovato: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "nessun CA X.509 trovato" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "impostazione dei predefiniti GnuTLS non riuscita: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "impostazione della credenziale X.509 di GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "impostazione priorità del cifrario di GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "handshake di GnuTLS non riuscito: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "verifica certificato del peer: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "il certificato del server non è fidato" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "il certificato del server non ha un emittente conosciuto" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "il certificato del server è stato revocato" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "impossibile verificare il certificato del server (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "recupero dell'associazione di canale non riuscito: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "recupero dell'associazione di canale non riuscito: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Impossibile trovare il meccanismo...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "meccanismo non disponibile: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Inserire i dati di autenticazione in base64 dal client (premere INVIO se non " "presenti):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Inserire dati di autenticazione in base64 dal server (premere INVIO se non " "presenti):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "errore del server" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "errore del meccanismo: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Autenticazione del server terminata (client fidato)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Autenticazione del client terminata (server fidato)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Inserire dati applicazione (EOF per terminare):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Dati applicazione codificati in base64 da inviare:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Record SASL troppo grande: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "errore di codifica: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sessione terminata...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "arresto della sessione GnuTLS non riuscito: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "errore: il server non ha restituito un token\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/nl.po gsasl-2.2.0/po/nl.po --- gsasl-2.0.1/po/nl.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/nl.po 2022-09-03 09:56:04.000000000 -0500 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gsasl-2.0.0\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2022-06-23 10:42+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" @@ -241,297 +241,309 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Terugaanroep leverde geen OPENID20-doorverwijzings-URL." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Authenticatie is mislukt omdat geen TLS-unieke CB opgegeven is." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Libgsasl: onbekende fout" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Invoerlijst van SASL-mechanismen:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Invoerlijst van SASL-mechanismen ondersteund door server:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Gebruikt mechanisme:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Serveruitvoer:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Cliëntuitvoer:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Typ '%s --help' voor meer informatie.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "vereiste optie '--mechanism' ontbreekt" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "niet-ondersteund mechanisme voor '--mkpasswd': %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "iteratiewaarde moet positief zijn: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Voer wachtwoord in: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "ontbrekend argument" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "opties '--x509-cert-file' en '--x509-key-file' zijn beide nodig" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "opties '--starttls' en '--no-starttls' gaan niet samen" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "opties '--smtp' en '--imap' gaan niet samen" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "kan SASL-profiel niet raden (probeer '--smtp' of '--imap')" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "initialisatiefout: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "fout bij opsommen van mechanismen: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Deze cliënt ondersteunt de volgende mechanismen:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Deze server ondersteunt de volgende mechanismen:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "algemene GnuTLS-initialisatie is mislukt: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS-initialisatie is mislukt: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "instellen van GnuTLS-standaardwaarden is mislukt: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "instellen van GnuTLS-servernaam is mislukt: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "reserveren van anonieme GnuTLS-vertrouwensgegevens: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "instellen van anonieme GnuTLS-vertrouwensgegevens: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "reserveren van X.509 GnuTLS-vertrouwensgegevens: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "laden van X.509 GnuTLS-vertrouwensgegevens: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "geen X.509 certificaatautoriteiten gevonden: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "geen X.509 certificaatautoriteiten gevonden" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "instellen van GnuTLS-systeemvertrouwen: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "instellen van X.509 GnuTLS-vertrouwensgegevens: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "instellen van GnuTLS-sleuteluitwisselingsprioriteit (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "TLS X.509-verificatie: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS-handshake is mislukt: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "TLS sessie-info: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "TLS X.509-certificaat %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "verifiëren van certificaat van andere computer: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "servercertificaat wordt niet vertrouwd" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "servercertificaat heeft geen bekende uitgever" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "servercertificaat is ingetrokken" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "kan servercertificaat niet verifiëren (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "verkrijgen van kanaalbinding is mislukt: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "verkrijgen van kanaalbinding is mislukt: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Kan mechanisme niet vinden...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mechanisme is onbeschikbaar: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Geef base64-authenticatiegegevens van de cliënt (druk op Enter als geen):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Geef base64-authenticatiegegevens van de server (druk op Enter als geen):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "serverfout" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mechanismefout: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Serverauthenticatie is voltooid (cliënt wordt vertrouwd).\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Cliëntauthenticatie is voltooid (server wordt vertrouwd).\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Voer toepassingsgegevens in (geef EOF om af te sluiten):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Te verzenden base64-gecodeerde toepassingsgegevens:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL-record is te lang: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "coderingsfout: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sessie is voltooid.\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "beëindigen van GnuTLS-sessie is mislukt: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "waarschuwing: server heeft geen token teruggegeven\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/pl.po gsasl-2.2.0/po/pl.po --- gsasl-2.0.1/po/pl.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/pl.po 2022-09-03 09:56:04.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-10-27 17:02+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" @@ -244,295 +244,309 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Wywołanie zwrotne nie dostarczyło URL-a przekierowującego OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" +"Uwierzytelnienie nie powiodło się, ponieważ nie zapewniono CB unikalnego dla " +"TLS." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Nieznany błąd libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Wejściowa lista mechanizmów SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Wejściowa lista mechanizmów SASL obsługiwanych przez serwer:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Użycie mechanizmu:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Wyjście serwera:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Wyjście klienta:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Polecenie `%s --help' pozwoli uzyskać więcej informacji.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "brak wymaganego --mechanism" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "nie obsługiwana opcja --mechanism dla --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "liczba iteracji musi być dodatnia: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Hasło: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "brak argumentu" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "wymagane jest zarówno --x509-cert-file jak i --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "nie można użyć --starttls i --nostarttls jednocześnie" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "nie można użyć --smtp i --imap jednocześnie" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "nie można odgadnąć profilu SASL (proszę spróbować --smtp lub --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "błąd inicjalizacji: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "błąd wypisywania mechanizmów: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Mechanizmy obsługiwane przez tego klienta:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Mechanizmy obsługiwane przez ten serwer:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Globalna inicjalizacja GnuTLS nie powiodła się: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Inicjalizacja GnuTLS nie powiodła się: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "ustawienie wartości domyślnych GnuTLS nie powiodło się: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "ustawienie nazwy serwera GnuTLS nie powiodło się: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "przydzielanie anonimowych danych uwierzytelniających GnuTLS: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "ustawianie anonimowych danych uwierzytelniających GnuTLS: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "przydzielanie danych uwierzytelniających X.509 GnuTLS: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "wczytywanie danych uwierzytelniających X.509 GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "nie znaleziono CA X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "nie znaleziono CA X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "ustawianie zaufania systemu GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "ustawianie danych uwierzytelniających X.509 GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "ustawianie priorytetu szyfrów GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "Weryfikacja X.509 TLS: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "powitanie GnuTLS nie powiodło się: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "Informacja o sesji TLS: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "Certyfikat X.509 TLS %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "sprawdzanie certyfikatu drugiej strony: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "certyfikat serwera nie jest zaufany" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "certyfikat serwera nie ma znanego wystawcy" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "certyfikat serwera został anulowany" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "nie udało się zweryfikować certyfikatu serwera (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "pobranie przypisania kanału nie powiodło się: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "pobranie przypisania kanału nie powiodło się: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Nie znaleziono mechanizmu...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mechanizm niedostępny: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "Dana uwierzytelniające base64 od klienta (RET jeśli żadne):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "Dane uwierzytelniające base64 od serwera (RET jeśli żadne):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "błąd serwera" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "błąd mechanizmu: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Uwierzytelnienie serwera zakończone (klient zaufał)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Uwierzytelnienie klienta zakończone (serwer zaufał)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Dane aplikacji (EOF aby zakończyć):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Zakodowane base64 dane aplikacji do wysłania:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Rekord SASL zbyt duży: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "błąd kodowania: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sesja zakończona...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "zakończenie sesji GnuTLS nie powiodło się: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "uwaga: serwer nie zwrócił tokenu\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/pt_BR.po gsasl-2.2.0/po/pt_BR.po --- gsasl-2.0.1/po/pt_BR.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/pt_BR.po 2022-09-03 09:56:04.000000000 -0500 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gsasl 1.9.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2020-12-26 07:49-0300\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" "Language-Team: Romanian \n" @@ -271,185 +271,192 @@ msgstr "" "Apelul invers nu a putut furniza adresa URL de redirecționare OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Autentificarea a eșuat deoarece nu a fost furnizat un CB unic tls." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Eroare necunoscută în libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Lista de introducere a metodelor SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Lista de introducere a metodelor SASL acceptate de server:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Se utilizează mecanismul:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Ieșirea de la server:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Ieșirea de la client:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Încercați «%s --help» pentru mai multe informații.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "opțiunea necesară „--mechanism”, lipsește" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "opțiunea „--mechanism” nu este acceptată cu „--mkpasswd”: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "numărul de iterații trebuie să fie pozitiv: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Introduceți parola: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "lipsește argumentul" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "necesită atât --x509-cert-file cât și --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "nu se poate utiliza atât --starttls, cât și --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "nu se poate utiliza atât --smtp cât și --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "nu se poate ghici profilul SASL (încercați --smtp sau --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "eșec de inițializare: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "mecanisme de listare a erorilor: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Acest client suportă următoarele mecanisme:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Acest server suportă următoarele mecanisme:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Inițializarea globală GnuTLS a eșuat: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Inițializarea GnuTLS a eșuat: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "configurarea valorilor implicite GnuTLS a eșuat: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "configurarea numelui serverului GnuTLS a eșuat: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "alocarea acreditării GnuTLS anonime: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "configurarea acreditării GnuTLS anonime: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "alocarea acreditării X.509 GnuTLS: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "se încarcă acreditările X.509 GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "nu au fost găsite autorități de certificare X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "nu au fost găsite autorități de certificare X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "configurarea sistemului de încredere GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "configurarea acreditării X.509 GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "setarea priorității de cifrare GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "Verificare TLS X.509: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "negocierea GnuTLS a eșuat: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "Informații despre sesiunea TLS: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "Certificat TLS X.509 %u: %s\n" @@ -458,116 +465,121 @@ # în acest mesaj: peer = omolog # prin analogie, cine este omologul unui # calculator ? ==> un alt calculator -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "se verifică certificatul de la alt calculator: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "certificatul serverului nu este de încredere" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "certificatul serverului nu are un emitent cunoscut" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "certificatul serverului a fost revocat" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "nu s-a putut verifica certificatul serverului (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "nu s-a putut obține asocierea canalului %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "nu s-a putut obține asocierea canalului %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Nu s-a putut găsi mecanismul...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mecanism indisponibil: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Introduceți datele de autentificare base64 de la client (apăsați RET dacă nu " "există):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Introduceți datele de autentificare base64 de la server (apăsați RET dacă nu " "există):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "eroare a serverului" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "eroare a mecanismului: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Autentificarea clientului a fost terminată (client de încredere)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Autentificarea clientului a fost terminată (server de încredere)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Introduceți datele aplicației (EOF pentru a termina):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Datele aplicației codificate Base64 de trimis:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Înregistrarea SASL este prea mare: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "eroare de codificare: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Sesiune terminată...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "terminarea sesiunii GnuTLS a eșuat: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "avertisment: serverul nu a returnat un token\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/sk.po gsasl-2.2.0/po/sk.po --- gsasl-2.0.1/po/sk.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/sk.po 2022-09-03 09:56:04.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2012-07-03 01:00+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -234,297 +234,309 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Overenie zlyhalo, pretože nebol poskytnutý názov počítača." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Neznáma chyba Libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Vstupný zoznam mechanizmov SASL, ktoré server podporuje:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Vstupný zoznam mechanizmov SASL, ktoré server podporuje:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Používa sa mechanizmus:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Výstup zo servera:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Výstup od klienta:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Viac informácií získate pomocou „%s --help“.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "chýba argument" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "vyžadujú sa oba argumenty: --x509-cert-file aj --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "nemožno použiť súčasne --starttls a --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "nemožno použiť súčasne --smtp a --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "nemožno použiť súčasne --smtp a --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "chyba inicializácie: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "chyba pri výpise zoznamu mechanizmov: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Tento klient podporuje nasledovné mechanizmy:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Tento server podporuje nasledovné mechanizmy:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "globálna inicializácia GnuTLS zlyhala: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "inicializácia GnuTLS zlyhala: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "nastavenie predvolených hodnôt GnuTLS zlyhalo: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "nastavenie predvolených hodnôt GnuTLS zlyhalo: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "vyhradzujú sa anonymné overovacie údaje GnuTLS: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "nastavujú sa anonymné overovacie údaje GnuTLS: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "vyhradzujú sa X.509 overovacie údaje GnuTLS: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "načítavajú sa X.509 overovacie údaje GnuTLS: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "neboli nájdené žiadne X.509 certifikačné autority: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "neboli nájdené žiadne X.509 certifikačné autority" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "nastavenie predvolených hodnôt GnuTLS zlyhalo: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "nastavujú sa X.509 overovacie údaje GnuTLS: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "nastavuje sa priorita šifier GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "zlyhal GnuTLS handshake: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "overuje sa certifikát druhej strany: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "certifikát servera nie je dôveryhodný" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "certifikát servera nemá známeho vydavateľa" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "certifikát servera bol odvolaný" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "certifikát servera sa nepodarilo overiť (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "zlyhalo získavanie väzby kanála: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "zlyhalo získavanie väzby kanála: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Nepodarilo sa nájsť mechanizmus...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mechanizmus nie je dostupný: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Zadajte overovacie údaje v base64 od klienta (ak žiadne, stlačte Enter):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Zadajte overovacie údaje v base64 od servera (ak žiadne, stlačte Enter):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "chyba servera" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "chyba mechanizmu: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Overenie u servera dokončené (klient je dôveryhodný)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Overenie u klienta dokončené (server je dôveryhodný)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Zadajte dáta aplikácie (ukončite pomocou EOF):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Dáta aplikácie v base64, ktoré sa majú poslať:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Záznam SASL je príliš veľký: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "chyba kódovania: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Relácia dokončená...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "ukončenie relácie GnuTLS zlyhalo: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "chyba: server nevrátil token\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/sq.po gsasl-2.2.0/po/sq.po --- gsasl-2.0.1/po/sq.po 2022-07-15 10:52:10.000000000 -0500 +++ gsasl-2.2.0/po/sq.po 2022-09-03 09:56:04.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl 0.1.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2004-09-11 11:58+0200\n" "Last-Translator: Laurent Dhima \n" "Language-Team: Albanian \n" @@ -209,300 +209,311 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" + +#: lib/src/error.c:186 #, fuzzy msgid "Libgsasl unknown error" msgstr "Gabim i libgsasl (%d): %s" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Zgjidh mekanizmin SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, fuzzy, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Input mekanizmit SASL të suportuar nga serveri:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Duke përdorur mekanizmin:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Rezultati nga serveri:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Rezultati nga klienti:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, fuzzy, c-format msgid "error listing mechanisms: %s" msgstr "Duke përdorur mekanizmin:\n" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Ky klient suporton mekanizmat në vijim:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Ky server suporton mekanizmat në vijim:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, fuzzy, c-format msgid "server certificate is not trusted" msgstr "Autentifikimi nga serveri përfundoi (klient i besuar)...\n" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "E pamundur gjetja e mekanizmit...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Shto të dhënat me bazë64 të autentifikimit nga klienti (shtyp RET nëse nuk " "duhen):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Shto të dhënat me bazë64 të autentifikimit nga serveri (shtyp RET nëse nuk " "duhen):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Autentifikimi nga serveri përfundoi (klient i besuar)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Autentifikimi i klientit përfundoi (i besuar nga serveri)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Shkruaj të dhënat e programit (EOF për të mbaruar):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Të dhënat e kodifikuara me bazë64 të programit për t'u dërguar:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Seanca përfundoi...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/sr.po gsasl-2.2.0/po/sr.po --- gsasl-2.0.1/po/sr.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/sr.po 2022-09-03 09:56:04.000000000 -0500 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gsasl-1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-12-11 19:14+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" @@ -237,297 +237,309 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Повратни позив није успео да обезбеди ОПЕНИД20 адресу преусмерења." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Потврда идентитета није успела јер није дато тлс-јединствени ЦБ." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Непозната грешка Либгсасла" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Улазни списак САСЛ механизма:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Улазни списак САСЛ метода које подржава сервер:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Користим метод:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Излаз сервера:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Излаз клијента:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Пробајте „%s --help“ за више података.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "недостаје захтевано „--mechanism“" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "неподржано „--mechanism“ за „--mkpasswd“: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "број понављања мора бити позитиван: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Унесите лозинку: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "недостаје аргумент" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "потребни су и „--x509-cert-file“ и „--x509-key-file“" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "не могу да користим и „--starttls“ и „--no-starttls“" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "не могу да користим и „--smtp“ и „--imap“" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "не могу да погодим САСЛ профил (покушајте „--smtp“ или „--imap“)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "неуспех покретања: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "грешка исписивања метода: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Овај клијент подржава следеће методе:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Овај сервер подржава следеће методе:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "није успело глобално ГнуТЛС покретање: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "није успело ГнуТЛС покретање: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "није успело подешавање основних ГнуТЛС вредности: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "није успело подешавање ГнуТЛС сервера: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "добављам анонимно ГнуТЛС уверење: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "задајем анонимно ГнуТЛС уверење: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "добављам X.509 ГнуТЛС уверење: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "учитавам X.509 ГнуТЛС уверење: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "нисам пронашао X.509 издаваче уверења: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "нисам пронашао Х.509 издаваче уверења" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "подешавам поверење ГнуТЛС система: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "задајем X.509 ГнуТЛС уверење: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "задајем приоритет ГнуТЛС шифрера (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "ТЛС X.509 провера: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "није успело ГнуТЛС руковање: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "информације ТЛС сесије: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "ТЛС X.509 уверење %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "проверавам парњаково уверење: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "уверење сервера није од поверења" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "уверење сервера нема познатог издавача" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "уверење сервера је повучено" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "не могу да проверим уверење сервера (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "није успело добављање везова канала: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "није успело добављање везова канала: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Не могу да пронађем метод...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "метод није доступан: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Унесите податке за потврду клијента у основи64 (притисните за ништа):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Унесите податке за потврду сервера у основи64 (притисните за ништа):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "грешка сервера" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "грешка метода: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Потврђивање сервера је завршено (клијенту се верује)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Потврђивање клијента је завршено (серверу се верује)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Унесите податке за обраду ( за крај):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Кодирани подаци програма у основи64 за слање:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Снимак САСЛ-а је превелик: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "грешка кодирања: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Сесија је завршена...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "није успело завршавање ГнуТЛС сесије: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "упозорење: сервер није вратио симбол\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/sv.po gsasl-2.2.0/po/sv.po --- gsasl-2.0.1/po/sv.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/sv.po 2022-09-03 09:56:04.000000000 -0500 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2022-02-10 14:16+0100\n" "Last-Translator: Luna Jernberg \n" "Language-Team: Swedish \n" @@ -246,299 +246,311 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Återanrop misslyckades med att ange OPENID20-omdirigerings-URL." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Autentisering misslyckades på grund av att en tls-unik CB inte angavs." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Okänt fel i libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Inmatningslista över SASL-mekanismer:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Mata in lista på de SASL-mekanismer som stöds av servern:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Använder mekanism:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Utdata från server:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Utdata från klient:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Prova ”%s --help” för mer information.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "nödvändig --mechanism saknas" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "--mechanism stöds inte för --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "iterationsräknare måste vara positiv: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Ange lösenord: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "argument saknas" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "behöver både --x509-cert-file och --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "kan inte använda både --starttls och --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "kan inte använda både --smtp och --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "kan inte gissa SASL-profil (prova --smtp eller --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "initieringsfel: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "fel vid listning av mekanismer: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Den här klienten stöder följande mekanismer:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Den här servern stöder följande mekanismer:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS globalt initieringsfel: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS initieringsfel: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "inställning av GnuTLS förvalda värden misslyckades: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "inställning av GnuTLS servernamn misslyckades: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "allokerar anonym GnuTLS-behörighet: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "ställer in anonym GnuTLS-behörighet: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "allokerar X.509 GnuTLS-behörighet: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "läser in X.509 GnuTLS-behörighet: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "inga X.509 CA hittades: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "inga X.509 CA hittades" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "inställning av GnuTLS systemtillit: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "ställer in X.509 GnuTLS-behörighet: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "ställer in prioritet för GnuTLS-chiffer (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "TLS X.509-verifikation: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS handskakning misslyckades: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "TLS-sessionsinfo: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "TLS X.509-certifikat %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "validerar motpartscertifikat: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "servercertifikat är ej pålitligt" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "servercertifikat har inte en känd utgivare" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "servercertifikat har återkallats" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "kunde inte validera servercertifikat (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "hämtning av kanalbindning misslyckades: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "hämtning av kanalbindning misslyckades: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Kan inte hitta mekanism...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "mekanism ej tillgänglig: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Mata in base64-autentiseringsdata från klient (finns inget data, tryck " "RETUR):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Mata in base64 autentiseringsdata från server (finns inget data, tryck " "RETUR):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "serverfel" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "mekanismfel: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Serverautentisering avslutad (klient betrodd)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Klientautentisering avslutad (server betrodd)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Mata in applikationsdata (EOF för att avsluta):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Base64-kodad applikationsdata att skicka:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL-posten är för stor: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "kodningsfel: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Session avslutad...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "terminering av GnuTLS-session misslyckades: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "varning: server returnerade inte en symbol\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/uk.po gsasl-2.2.0/po/uk.po --- gsasl-2.0.1/po/uk.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/uk.po 2022-09-03 09:56:04.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl 1.11.2\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2021-10-27 15:03+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -243,299 +243,312 @@ msgstr "" "У відповідь на зворотний виклик не отримано адреси переспрямування OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" +"Помилка розпізнавання через ненадання унікальної для TLS прив’язки до каналу." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Невідома помилка libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Вхідний список механізмів SASL:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Вкажіть список механізмів SASL, які підтримуються сервером:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Використаний механізм:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Дані, виведені сервером:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Дані, виведені клієнтом:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Щоб дізнатися більше, віддайте команду «%s --help».\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "не вказано обов'язкового --mechanism" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "непідтримуване значення --mechanism для --mkpasswd: %s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "кількість ітерацій має бути додатною: %d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "Введіть пароль: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "не вистачає аргументу" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "слід вказати два параметри: --x509-cert-file і --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "не можна використовувати одночасно --starttls і --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "не можна використовувати одночасно --smtp і --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "не вдалося встановити профіль SASL (спробуйте --smtp або --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "помилка ініціалізації: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "помилка під час спроби побудови списку механізмів: %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Цим клієнтом підтримуються такі механізми:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Цим сервером підтримуються такі механізми:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Помилка ініціалізації GnuTLS на загальному рівні: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Помилка ініціалізації GnuTLS: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "помилка встановлення типових параметрів GnuTLS: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "не вдалося встановити назву сервера GnuTLS: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "розміщення анонімних реєстраційних даних GnuTLS: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "встановлення анонімних реєстраційних даних GnuTLS: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "розміщення реєстраційних даних GnuTLS для X.509: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "завантаження реєстраційних даних GnuTLS для X.509: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "не знайдено CA X.509: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "не знайдено CA X.509" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "встановлення довіри до системи GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "встановлення анонімних реєстраційних даних GnuTLS для X.509: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "встановлення пріоритету шифрування GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "Перевірка TLS X.509: %s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "Помилка під час спроби встановлення зв’язку з GnuTLS: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "Відомості щодо сеансу TLS: %s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "Сертифікат TLS X.509 %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "перевірка сертифіката вузла: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "сертифікат сервера не є надійним" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "сертифікат сервера не було створено відомим видавцем" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "сертифікат сервера було відкликано" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "не вдалося перевірити сертифікат сервера (rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "помилка під час спроби прив’язатися до каналу: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "помилка під час спроби прив’язатися до каналу: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Не вдалося знайти механізм...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "механізм недоступний: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Вкажіть дані розпізнавання у форматі base64 від клієнта (натисніть Enter, " "якщо таких даних немає):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Вкажіть дані розпізнавання у форматі base64 від сервера (натисніть Enter, " "якщо таких даних немає):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "помилка на сервері" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "помилка механізму: %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Розпізнавання на сервері завершено (клієнт визнано надійним)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Розпізнавання на клієнті завершено (сервер визнано надійним)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Вкажіть дані заяви (дані мають завершуватися символом EOF):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Закодовані у форматі Base64 дані, які буде надіслано:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Запис SASL є занадто великим: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "помилка кодування: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Сеанс завершено...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "спроба переривання сеансу GnuTLS зазнала невдачі: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "попередження: сервером не повернуто лексему\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/vi.po gsasl-2.2.0/po/vi.po --- gsasl-2.0.1/po/vi.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/vi.po 2022-09-03 09:56:04.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl-1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2012-05-18 14:35+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -239,304 +239,316 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "Hàm callback gặp lỗi khi cung cấp bộ chuyển hướng URL OPENID20." -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "Lỗi xác thực vì tls-unique CB không được cung cấp." + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Không rõ lỗi Libgsasl" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "Nh92p danh sách các cơ cấu SASL được máy phục vụ hỗ trợ :\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "Nh92p danh sách các cơ cấu SASL được máy phục vụ hỗ trợ :\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "Đang dùng cơ cấu: \n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "Kết xuất từ máy phục vụ :\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "Kết xuất từ ứng dụng khách:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Hãy chạy lệnh \"%s --help\" (trợ giúp) để xem thông tin thêm.\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "đối số còn thiếu" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "" "cần thiết cả \"--x509-cert-file\" (tập tin chứng nhận) lẫn \"--x509-key-file" "\" (tập tin khóa)" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "" "không thể dùng tùy chọn \"--starttls\" (có) với \"--no-starttls\" (không)" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "" "không thể dùng tùy chọn \"--smtp\" với \"--imap\" (hai giao thức khác nhau)" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "" "không thể dùng tùy chọn \"--smtp\" với \"--imap\" (hai giao thức khác nhau)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "lỗi sở khởi: %s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "gặp lỗi khi liệt kê cơ cấu : %s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "Ứng dụng khách này hỗ trợ các cơ cấu theo đây:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "Máy phục vụ này hỗ trợ các cơ cấu theo đây:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "Lỗi sở khởi toàn cục GnuTLS: %s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "Lỗi sở khởi GnuTLS: %s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "lỗi đặt các giá trị mặc định cho GnuTLS: %s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "lỗi đặt các giá trị mặc định cho GnuTLS: %s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "đang cấp phát thông tin xác thực GnuTLS kiểu vô danh: %s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "đang đặt thông tin xác thực GnuTLS kiểu vô danh: %s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "đang cấp phát thông tin xác thực GnuTLS kiểu X.509: %s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "đang tải thông tin xác thực GnuTLS kiểu X.509: %s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "không tìm thấy Nhà Cầm Quyền Chứng Nhận X.509 nào: %s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "không tìm thấy Nhà Cầm Quyền Chứng Nhận X.509 nào" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "lỗi đặt các giá trị mặc định cho GnuTLS: %s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "đang đặt thông tin xác thực GnuTLS kiểu X509: %s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "đang đặt ưu tiên mật mã GnuTLS (%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "lỗi thiết lập quan hệ GnuTLS: %s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "đang thẩm tra chứng nhận ngang hàng: %s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "chứng nhận của máy phục vụ không phải là tin cây" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "chứng nhận của máy phục vụ không có nhà phát hành đã biết" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "chứng nhận của máy phục vụ đã bị hủy bỏ" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "không thể thẩm tra chứng nhận của máy phục vụ (rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "Ràng buộc kênh chào hởi gặp lỗi: %s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "Ràng buộc kênh chào hởi gặp lỗi: %s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "Không tìm thấy cơ cấu...\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "cơ cấu không sẵn sàng: %s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "" "Nhập dữ liệu xác thực cơ số 64 từ ứng dụng khách (ấn phím RETURN nếu không " "có):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "" "Nhập dữ liệu xác thực cơ số 64 từ máy phục vụ (ấn phím RETURN nếu không " "có):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "lỗi máy phục vụ" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "gặp lỗi cơ cấu : %s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "Việc xác thực máy phục vụ đã xong (ứng dụng khách được tin)...\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "Việc xác thực ứng dụng khách đã xong (máy phục vụ được tin)...\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "Nhập dữ liệu ứng dụng (EOF [kết thức tập tin] để xong): \n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "Dữ liệu ứng dụng đã mã hóa cơ số 64 cần gởi:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "Bản ghi SASL quá lớn: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "gặp lỗi mã hóa: %s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "Phiên chạy đã xong...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "kết thúc phiên chạy GnuTLS bị lỗi: %s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "lỗi: máy chủ không trả về một thẻ bài\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/zh_CN.po gsasl-2.2.0/po/zh_CN.po --- gsasl-2.0.1/po/zh_CN.po 2022-07-15 10:53:48.000000000 -0500 +++ gsasl-2.2.0/po/zh_CN.po 2022-09-03 09:56:04.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl 2.0.0\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2022-06-29 15:53-0400\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" @@ -225,295 +225,307 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "回调失败,无法提供 OPENID20 重定向 URL。" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +#, fuzzy +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "验证失败,因为未提供 tls-unique CB。" + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "Libgsasl 未知错误" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, c-format msgid "Input list of SASL mechanisms:\n" msgstr "SASL 机制输入列表:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "服务器所支持的 SASL 机制输入列表:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "使用机制:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "服务器的输出:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "客户端的输出:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "尝试‘%s --help’以获得更多信息。\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "必需的 --mechanism 缺失" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "用于 --mkpassword 的不受支持的 --mechanism:%s" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "迭代计数必须为正:%d" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "输入密码: " -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "缺少参数" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "既需要 --x509-cert-file 也需要 --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "不能同时使用 --starttls 和 --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "不能同时使用 --smtp 和 --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "无法猜测 SASL 配置文件(尝试 --smtp 或 --imap)" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "初始化失败:%s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "列出机制时出错:%s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "这个客户端支持以下机制:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "这个服务器支持以下机制:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS 全局初始化失败:%s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS 初始化失败:%s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "设定 GnuTLS 默认值失败:%s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, c-format msgid "setting GnuTLS server name failed: %s" msgstr "设定 GnuTLS 服务器名称失败:%s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "分配匿名 GnuTLS 证书:%s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "设定匿名 GnuTLS 证书:%s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "分配 X.509 GnuTLS 证书:%s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "载入 X.509 GnuTLS 证书:%s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "找不到 X.509 CA 证书:%s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "找不到 X.509 CA 证书" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, c-format msgid "setting GnuTLS system trust: %s" msgstr "设定 GnuTLS 系统信任失败:%s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "设定 X.509 GnuTLS 证书:%s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "设定 GnuTLS 密钥优先级(%s): %s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "TLS X.509 验证:%s\n" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS 握手失败:%s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "TLS 会话信息:%s\n" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "TLS X.509 证书 %u: %s\n" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "验证节点证书:%s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "服务器证书不可信" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "服务器证书发行者未知" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "服务器证书已被吊销" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, c-format msgid "could not verify server certificate (rc=%u)" msgstr "无法验证服务器证书(rc=%u)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "绑定通道失败:%s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "绑定通道失败:%s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "找不到机制……\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "机制不可用:%s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "输入客户端发送的 base64 编码的应用程序数据(如果没有,请按回车):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "输入服务器发送的 base64 编码的应用程序数据(如果没有,请按回车):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "服务器错误" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "机制错误:%s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "服务器认证完成(客户端可信)……\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "客户端认证完成(服务器可信)……\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "输入应用程序数据(用 EOF 结束输入):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "要发送的 Base64 编码的应用程序数据:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL 记录太大: %zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "编码错误:%s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "会话结束...\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "终止 GnuTLS 会话失败:%s" -#: src/imap.c:186 +#: src/imap.c:197 #, c-format msgid "warning: server did not return a token\n" msgstr "警告:服务器未返回令牌\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/po/zh_TW.po gsasl-2.2.0/po/zh_TW.po --- gsasl-2.0.1/po/zh_TW.po 2022-07-15 10:52:10.000000000 -0500 +++ gsasl-2.2.0/po/zh_TW.po 2022-09-03 09:56:04.000000000 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gsasl 1.7.4\n" "Report-Msgid-Bugs-To: bug-gsasl@gnu.org\n" -"POT-Creation-Date: 2022-07-15 17:52+0200\n" +"POT-Creation-Date: 2022-09-03 16:56+0200\n" "PO-Revision-Date: 2013-02-12 23:45+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" @@ -211,295 +211,306 @@ msgid "Callback failed to provide OPENID20 redirect URL." msgstr "" -#: lib/src/error.c:184 +#: lib/src/error.c:164 +msgid "" +"Authentication failed because a tls-exporter channel binding was not " +"provided." +msgstr "" + +#: lib/src/error.c:186 msgid "Libgsasl unknown error" msgstr "" -#: src/gsasl.c:255 src/imap.c:76 src/smtp.c:79 +#: src/gsasl.c:256 src/imap.c:84 src/smtp.c:79 #, fuzzy, c-format msgid "Input list of SASL mechanisms:\n" msgstr "輸入伺服器所支援的 SASL 機制清單:\n" -#: src/gsasl.c:264 +#: src/gsasl.c:265 #, c-format msgid "Input list of SASL mechanisms supported by server:\n" msgstr "輸入伺服器所支援的 SASL 機制清單:\n" -#: src/gsasl.c:283 src/imap.c:106 src/smtp.c:113 +#: src/gsasl.c:284 src/imap.c:116 src/smtp.c:122 #, c-format msgid "Using mechanism:\n" msgstr "使用機制:\n" -#: src/gsasl.c:300 +#: src/gsasl.c:301 #, c-format msgid "Output from server:\n" msgstr "伺服器的輸出:\n" -#: src/gsasl.c:302 +#: src/gsasl.c:303 #, c-format msgid "Output from client:\n" msgstr "客戶端的輸出:\n" -#: src/gsasl.c:349 +#: src/gsasl.c:350 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "嘗試 %s --help 以獲得更多資訊。\n" -#: src/gsasl.c:381 +#: src/gsasl.c:382 #, c-format msgid "required --mechanism missing" msgstr "" -#: src/gsasl.c:394 +#: src/gsasl.c:395 #, c-format msgid "unsupported --mechanism for --mkpasswd: %s" msgstr "" -#: src/gsasl.c:398 +#: src/gsasl.c:399 #, c-format msgid "iteration count must be positive: %d" msgstr "" -#: src/gsasl.c:424 +#: src/gsasl.c:425 msgid "Enter password: " msgstr "" -#: src/gsasl.c:509 +#: src/gsasl.c:510 #, c-format msgid "missing argument" msgstr "缺少引數" -#: src/gsasl.c:516 +#: src/gsasl.c:517 #, c-format msgid "need both --x509-cert-file and --x509-key-file" msgstr "既需要 --x509-cert-file 也需要 --x509-key-file" -#: src/gsasl.c:520 +#: src/gsasl.c:521 #, c-format msgid "cannot use both --starttls and --no-starttls" msgstr "不能同時使用 --starttls 和 --no-starttls" -#: src/gsasl.c:523 +#: src/gsasl.c:524 #, c-format msgid "cannot use both --smtp and --imap" msgstr "不能同時使用 --smtp 和 --imap" -#: src/gsasl.c:576 +#: src/gsasl.c:577 #, fuzzy, c-format msgid "cannot guess SASL profile (try --smtp or --imap)" msgstr "不能同時使用 --smtp 和 --imap" -#: src/gsasl.c:596 +#: src/gsasl.c:597 #, c-format msgid "initialization failure: %s" msgstr "初始化失敗:%s" -#: src/gsasl.c:611 +#: src/gsasl.c:612 #, c-format msgid "error listing mechanisms: %s" msgstr "列出機制時發生錯誤:%s" -#: src/gsasl.c:618 +#: src/gsasl.c:619 #, c-format msgid "This client supports the following mechanisms:\n" msgstr "這個客戶端支援以下機制:\n" -#: src/gsasl.c:621 +#: src/gsasl.c:622 #, c-format msgid "This server supports the following mechanisms:\n" msgstr "這個伺服器支援以下機制:\n" -#: src/gsasl.c:689 +#: src/gsasl.c:690 #, c-format msgid "GnuTLS global initialization failed: %s" msgstr "GnuTLS 全域初始化失敗:%s" -#: src/gsasl.c:694 +#: src/gsasl.c:695 #, c-format msgid "GnuTLS initialization failed: %s" msgstr "GnuTLS 初始化失敗:%s" -#: src/gsasl.c:699 +#: src/gsasl.c:700 #, c-format msgid "setting GnuTLS defaults failed: %s" msgstr "設定 GnuTLS 預設值失敗:%s" -#: src/gsasl.c:706 +#: src/gsasl.c:707 #, fuzzy, c-format msgid "setting GnuTLS server name failed: %s" msgstr "設定 GnuTLS 預設值失敗:%s" -#: src/gsasl.c:712 +#: src/gsasl.c:713 #, c-format msgid "allocating anonymous GnuTLS credential: %s" msgstr "配置匿名 GnuTLS 憑據:%s" -#: src/gsasl.c:717 +#: src/gsasl.c:718 #, c-format msgid "setting anonymous GnuTLS credential: %s" msgstr "設定匿名 GnuTLS 憑據:%s" -#: src/gsasl.c:722 +#: src/gsasl.c:723 #, c-format msgid "allocating X.509 GnuTLS credential: %s" msgstr "配置 X.509 GnuTLS 憑據:%s" -#: src/gsasl.c:730 +#: src/gsasl.c:731 #, c-format msgid "loading X.509 GnuTLS credential: %s" msgstr "載入 X.509 GnuTLS 憑據:%s" -#: src/gsasl.c:738 +#: src/gsasl.c:739 #, c-format msgid "no X.509 CAs found: %s" msgstr "找不到 X.509 CA:%s" -#: src/gsasl.c:741 +#: src/gsasl.c:742 #, c-format msgid "no X.509 CAs found" msgstr "找不到 X.509 CA" -#: src/gsasl.c:747 +#: src/gsasl.c:748 #, fuzzy, c-format msgid "setting GnuTLS system trust: %s" msgstr "設定 GnuTLS 預設值失敗:%s" -#: src/gsasl.c:754 +#: src/gsasl.c:755 #, c-format msgid "setting X.509 GnuTLS credential: %s" msgstr "設定 X.509 GnuTLS 憑據:%s" -#: src/gsasl.c:768 +#: src/gsasl.c:769 #, c-format msgid "setting GnuTLS cipher priority (%s): %s\n" msgstr "設定 GnuTLS 密碼優先權 (%s):%s\n" -#: src/gsasl.c:794 +#: src/gsasl.c:795 #, c-format msgid "TLS X.509 Verification: %s\n" msgstr "" -#: src/gsasl.c:799 +#: src/gsasl.c:800 #, c-format msgid "GnuTLS handshake failed: %s" msgstr "GnuTLS 交握失敗:%s" -#: src/gsasl.c:810 +#: src/gsasl.c:811 #, c-format msgid "TLS session info: %s\n" msgstr "" -#: src/gsasl.c:831 +#: src/gsasl.c:832 #, c-format msgid "TLS X.509 Certificate %u: %s\n" msgstr "" -#: src/gsasl.c:846 +#: src/gsasl.c:847 #, c-format msgid "verifying peer certificate: %s" msgstr "驗證節點憑證:%s" -#: src/gsasl.c:850 +#: src/gsasl.c:851 #, c-format msgid "server certificate is not trusted" msgstr "伺服器憑證不可信" -#: src/gsasl.c:854 +#: src/gsasl.c:855 #, c-format msgid "server certificate hasn't got a known issuer" msgstr "伺服器憑證發行者不明" -#: src/gsasl.c:857 +#: src/gsasl.c:858 #, c-format msgid "server certificate has been revoked" msgstr "伺服器憑證已被吊銷" -#: src/gsasl.c:861 +#: src/gsasl.c:862 #, fuzzy, c-format msgid "could not verify server certificate (rc=%u)" msgstr "無法驗證伺服器憑證(rc=%d)" -#: src/gsasl.c:872 +#: src/gsasl.c:878 +#, fuzzy, c-format +msgid "getting tls-exporter channel binding failed: %s" +msgstr "提取頻道繫結失敗:%s" + +#: src/gsasl.c:893 #, c-format msgid "getting channel binding failed: %s" msgstr "提取頻道繫結失敗:%s" -#: src/gsasl.c:902 +#: src/gsasl.c:925 #, c-format msgid "Cannot find mechanism...\n" msgstr "找不到機制…\n" -#: src/gsasl.c:919 +#: src/gsasl.c:942 #, c-format msgid "mechanism unavailable: %s" msgstr "機制無法使用:%s" -#: src/gsasl.c:947 +#: src/gsasl.c:972 #, c-format msgid "Enter base64 authentication data from client (press RET if none):\n" msgstr "輸入客戶端傳送之 base64 編碼的應用程式資料(如果沒有,請按輸入鍵):\n" -#: src/gsasl.c:950 +#: src/gsasl.c:975 #, c-format msgid "Enter base64 authentication data from server (press RET if none):\n" msgstr "輸入伺服器傳送之 base64 編碼的應用程式資料(如果沒有,請按輸入鍵):\n" -#: src/gsasl.c:960 +#: src/gsasl.c:985 #, c-format msgid "server error" msgstr "伺服器錯誤" -#: src/gsasl.c:968 +#: src/gsasl.c:996 #, c-format msgid "mechanism error: %s" msgstr "機制錯誤:%s" -#: src/gsasl.c:974 +#: src/gsasl.c:1002 #, c-format msgid "Server authentication finished (client trusted)...\n" msgstr "伺服器認證完成(客戶端可信)…\n" -#: src/gsasl.c:977 +#: src/gsasl.c:1005 #, c-format msgid "Client authentication finished (server trusted)...\n" msgstr "客戶端認證完成(伺服器可信)…\n" -#: src/gsasl.c:1002 +#: src/gsasl.c:1030 #, c-format msgid "Enter application data (EOF to finish):\n" msgstr "輸入應用程式資料(用 EOF 結束輸入):\n" -#: src/gsasl.c:1068 +#: src/gsasl.c:1096 #, c-format msgid "Base64 encoded application data to send:\n" msgstr "要傳送之 Base64 編碼的應用程式資料:\n" -#: src/gsasl.c:1107 +#: src/gsasl.c:1135 #, c-format msgid "SASL record too large: %zu\n" msgstr "SASL 記錄太大:%zu\n" -#: src/gsasl.c:1131 +#: src/gsasl.c:1159 #, c-format msgid "encoding error: %s" msgstr "編碼錯誤:%s" -#: src/gsasl.c:1136 +#: src/gsasl.c:1164 #, c-format msgid "Session finished...\n" msgstr "作業階段結束…\n" -#: src/gsasl.c:1152 +#: src/gsasl.c:1180 #, c-format msgid "terminating GnuTLS session failed: %s" msgstr "終止 GnuTLS 作業階段失敗:%s" -#: src/imap.c:186 +#: src/imap.c:197 #, fuzzy, c-format msgid "warning: server did not return a token\n" msgstr "錯誤:伺服器並未回傳字組\n" -#: src/smtp.c:192 +#: src/smtp.c:201 #, c-format msgid "" "error: could not parse server data:\n" diff -Nru gsasl-2.0.1/src/callbacks.c gsasl-2.2.0/src/callbacks.c --- gsasl-2.0.1/src/callbacks.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/src/callbacks.c 2022-08-20 08:53:21.000000000 -0500 @@ -91,6 +91,17 @@ rc = gsasl_property_set (sctx, prop, b64cbtlsunique); break; + case GSASL_CB_TLS_EXPORTER: + if (!args_info.no_cb_flag && b64cbtlsexporter == NULL + && args_info.hostname_arg == NULL) + b64cbtlsexporter = + readutf8line + ("Enter base64 encoded tls-exporter channel binding: "); + rc = GSASL_OK; + if (!args_info.no_cb_flag && b64cbtlsexporter && *b64cbtlsexporter) + rc = gsasl_property_set (sctx, prop, b64cbtlsexporter); + break; + case GSASL_PASSWORD: if (args_info.password_arg == NULL) args_info.password_arg = readutf8pass ("Enter password: "); diff -Nru gsasl-2.0.1/src/gsasl.c gsasl-2.2.0/src/gsasl.c --- gsasl-2.0.1/src/gsasl.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/src/gsasl.c 2022-09-02 17:40:24.000000000 -0500 @@ -33,6 +33,7 @@ #endif char *b64cbtlsunique = NULL; +char *b64cbtlsexporter = NULL; struct gengetopt_args_info args_info; int sockfd = 0; @@ -248,7 +249,7 @@ return smtp_select_mechanism (mechlist); if (args_info.mechanism_arg) - *mechlist = args_info.mechanism_arg; + *mechlist = xstrdup (args_info.mechanism_arg); else if (args_info.server_flag) { if (!args_info.quiet_given) @@ -469,8 +470,8 @@ char *connect_hostname = NULL; char *connect_service = NULL; #ifdef HAVE_LIBGNUTLS - gnutls_anon_client_credentials_t anoncred; - gnutls_certificate_credentials_t x509cred; + gnutls_anon_client_credentials_t anoncred = NULL; + gnutls_certificate_credentials_t x509cred = NULL; #endif set_program_name (argv[0]); @@ -866,22 +867,43 @@ { gnutls_datum_t cb; - res = gnutls_session_channel_binding (session, - GNUTLS_CB_TLS_UNIQUE, &cb); - if (res != GNUTLS_E_SUCCESS) - error (EXIT_FAILURE, 0, _("getting channel binding failed: %s"), - gnutls_strerror (res)); - - res = gsasl_base64_to ((char *) cb.data, cb.size, - &b64cbtlsunique, NULL); - if (res != GSASL_OK) - error (EXIT_FAILURE, 0, "%s", gsasl_strerror (res)); +# if HAVE_DECL_GNUTLS_CB_TLS_EXPORTER + if (gnutls_protocol_get_version (session) >= GNUTLS_TLS1_3) + { + res = gnutls_session_channel_binding (session, + GNUTLS_CB_TLS_EXPORTER, + &cb); + if (res != GNUTLS_E_SUCCESS) + error (EXIT_FAILURE, 0, + _("getting tls-exporter channel binding failed: %s"), + gnutls_strerror (res)); + res = gsasl_base64_to ((char *) cb.data, cb.size, + &b64cbtlsexporter, NULL); + if (res != GSASL_OK) + error (EXIT_FAILURE, 0, "%s", gsasl_strerror (res)); + } + else +# endif + { + res = gnutls_session_channel_binding (session, + GNUTLS_CB_TLS_UNIQUE, + &cb); + if (res != GNUTLS_E_SUCCESS) + error (EXIT_FAILURE, 0, + _("getting channel binding failed: %s"), + gnutls_strerror (res)); + + res = gsasl_base64_to ((char *) cb.data, cb.size, + &b64cbtlsunique, NULL); + if (res != GSASL_OK) + error (EXIT_FAILURE, 0, "%s", gsasl_strerror (res)); + } } # endif using_tls = true; } -#endif +#endif /* HAVE_LIBGNUTLS */ if (args_info.client_flag || args_info.client_given || args_info.server_given) @@ -897,6 +919,7 @@ return 1; mech = gsasl_client_suggest_mechanism (ctx, in); + free (in); if (mech == NULL) { fprintf (stderr, _("Cannot find mechanism...\n")); @@ -933,11 +956,13 @@ int res2; res = gsasl_step64 (xctx, in, &out); + free (in); if (res != GSASL_NEEDS_MORE && res != GSASL_OK) break; if (!step_send (out)) return 1; + free (out); no_client_first: if (!args_info.quiet_given && @@ -959,7 +984,10 @@ if (res2 == 3) error (EXIT_FAILURE, 0, _("server error")); if (res2 == 2) - break; + { + free (in); + break; + } } while (args_info.imap_flag || args_info.smtp_flag || res == GSASL_NEEDS_MORE); diff -Nru gsasl-2.0.1/src/imap.c gsasl-2.2.0/src/imap.c --- gsasl-2.0.1/src/imap.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/src/imap.c 2022-09-02 10:36:57.000000000 -0500 @@ -28,6 +28,8 @@ if (!readln (&in)) return 0; + free (in); + return 1; } @@ -45,9 +47,13 @@ has_tls = strstr (in, "STARTTLS") != NULL; + free (in); + if (!readln (&in)) return 0; + free (in); + return has_tls; } @@ -62,6 +68,8 @@ if (!readln (&in)) return 0; + free (in); + return 1; } @@ -92,6 +100,8 @@ if (!readln (&in)) return 0; + + free (in); } return 1; @@ -164,6 +174,7 @@ before the final '. OK'). */ while (*p == '*') { + free (p); if (!readln (data)) return 0; p = *data; diff -Nru gsasl-2.0.1/src/internal.h gsasl-2.2.0/src/internal.h --- gsasl-2.0.1/src/internal.h 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/src/internal.h 2022-08-20 08:53:21.000000000 -0500 @@ -67,6 +67,7 @@ # include "gsasl_cmd.h" extern struct gengetopt_args_info args_info; extern char *b64cbtlsunique; +extern char *b64cbtlsexporter; /* This feature is available in gcc versions 2.5 and later. */ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) diff -Nru gsasl-2.0.1/src/Makefile.in gsasl-2.2.0/src/Makefile.in --- gsasl-2.0.1/src/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/src/Makefile.in 2022-09-03 09:53:00.000000000 -0500 @@ -377,6 +377,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -737,6 +738,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1535,6 +1537,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -1732,6 +1735,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ diff -Nru gsasl-2.0.1/src/smtp.c gsasl-2.2.0/src/smtp.c --- gsasl-2.0.1/src/smtp.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/src/smtp.c 2022-08-20 08:53:21.000000000 -0500 @@ -71,7 +71,7 @@ int smtp_select_mechanism (char **mechlist) { - char *in; + char *in = NULL; if (args_info.server_flag) { @@ -86,19 +86,28 @@ if (!writeln ("EHLO [127.0.0.1]")) return 0; + *mechlist = NULL; do { + free (in); if (!readln (&in)) return 0; -#define GREETING1 "250-AUTH " -#define GREETING2 "250 AUTH " - if (strncmp (in, GREETING1, strlen (GREETING1)) == 0) - *mechlist = in + strlen (GREETING1); - else if (strncmp (in, GREETING2, strlen (GREETING2)) == 0) - *mechlist = in + strlen (GREETING2); + /* Greeting can be '250-AUTH ' or '250 AUTH ', we use the + first occurance in case there is more than one. */ + if (*mechlist == NULL && + (strlen (in) > 9 + && in[0] == '2' + && in[1] == '5' + && in[2] == '0' + && (in[3] == '-' || in[3] == ' ') + && in[4] == 'A' + && in[5] == 'U' && in[6] == 'T' && in[7] == 'H' + && in[8] == ' ')) + *mechlist = xstrdup (in + 9); } while (strncmp (in, "250 ", 4) != 0); + free (in); } return 1; diff -Nru gsasl-2.0.1/.tarball-version gsasl-2.2.0/.tarball-version --- gsasl-2.0.1/.tarball-version 2022-07-15 10:56:31.000000000 -0500 +++ gsasl-2.2.0/.tarball-version 2022-09-03 10:02:46.000000000 -0500 @@ -1 +1 @@ -2.0.1 +2.2.0 diff -Nru gsasl-2.0.1/tests/errors.c gsasl-2.2.0/tests/errors.c --- gsasl-2.0.1/tests/errors.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/errors.c 2022-08-20 08:53:21.000000000 -0500 @@ -52,7 +52,20 @@ i++; } - while (this != last && this != NULL); + while (i < GSASL_NO_CB_TLS_EXPORTER || (this != last && this != NULL)); + + { + const char *p = gsasl_strerror_name (GSASL_NO_CB_TLS_EXPORTER + 1); + if (p) + fail ("added new error code? %s\n", p); + } + + { + const char *p = gsasl_strerror (GSASL_NO_CB_TLS_EXPORTER + 1); + const char *q = gsasl_strerror (4711); + if (strcmp (p, q) != 0) + fail ("added new error code? p %s q %s\n", p, q); + } if (strcmp (gsasl_strerror_name (GSASL_OK), ERRSTR (GSASL_OK)) != 0) fail ("names differ GSASL_OK != %s\n", gsasl_strerror_name (GSASL_OK)); diff -Nru gsasl-2.0.1/tests/external.c gsasl-2.2.0/tests/external.c --- gsasl-2.0.1/tests/external.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/external.c 2022-09-02 13:58:52.000000000 -0500 @@ -38,7 +38,7 @@ int serverrc; } tv[] = { /* *INDENT-OFF* */ - { NULL, "", GSASL_OK, GSASL_OK, GSASL_OK }, + { NULL, NULL, GSASL_OK, GSASL_OK, GSASL_OK }, { "", "", GSASL_OK, GSASL_OK, GSASL_OK }, { "foo", "foo", GSASL_OK, GSASL_OK, GSASL_OK }, { "foo", "foo", GSASL_OK, GSASL_NO_CALLBACK, GSASL_NO_CALLBACK }, @@ -48,26 +48,27 @@ /* *INDENT-ON* */ }; +int i; + static int callback (Gsasl * ctx, Gsasl_session * sctx, Gsasl_property prop) { - static unsigned c = 0; - static unsigned s = 0; + unsigned j = 0; int rc = GSASL_NO_CALLBACK; - c = c % sizeof (tv) / sizeof (tv[0]); - s = s % sizeof (tv) / sizeof (tv[0]); + j = i % (sizeof (tv) / sizeof (tv[0])); /* Get user info from user. */ switch (prop) { case GSASL_AUTHZID: - rc = gsasl_property_set (sctx, prop, tv[c++].sendauthzid); + if (tv[j].sendauthzid) + rc = gsasl_property_set (sctx, prop, tv[j].sendauthzid); break; case GSASL_VALIDATE_EXTERNAL: - rc = tv[s++].callbackrc; + rc = tv[j].callbackrc; break; default: @@ -85,7 +86,6 @@ Gsasl_session *server = NULL, *client = NULL; char *s1, *s2; size_t s1len, s2len; - int i; int res; res = gsasl_init (&ctx); @@ -107,7 +107,7 @@ for (i = 0; i < 2 * (sizeof (tv) / sizeof (tv[0])); i++) { - size_t n = i % sizeof (tv) / sizeof (tv[0]); + size_t n = i % (sizeof (tv) / sizeof (tv[0])); res = gsasl_server_start (ctx, "EXTERNAL", &server); if (res != GSASL_OK) @@ -132,7 +132,7 @@ if (debug) { if (s1) - printf ("S[%d]: `%.*s' (%lu)\n", i, (int) s1len, s1, + printf ("S[%d] `%.*s' (%lu)\n", i, (int) s1len, s1, (unsigned long) s1len); else printf ("S[%d] NULL\n", i); @@ -150,7 +150,7 @@ if (debug) { if (s2) - printf ("C[%d]: `%.*s' (%lu)\n", i, (int) s2len, s2, + printf ("C[%d] `%.*s' (%lu)\n", i, (int) s2len, s2, (unsigned long) s2len); else printf ("C[%d] NULL\n", i); @@ -161,7 +161,8 @@ gsasl_free (s2); if (res != tv[n].serverrc) { - fail ("gsasl_step server2 (%d):\n%s\n", res, gsasl_strerror (res)); + fail ("gsasl_step server2 (%d!=%d):\n%s\n", + tv[n].serverrc, res, gsasl_strerror (res)); return; } @@ -172,18 +173,34 @@ return; } - if (memcmp (s1, tv[n].recvauthzid, s1len) != 0) - { - fail ("gsasl_step() failed, recv authzid mismatch: `%s' != `%s'\n", - s1, tv[n].recvauthzid); - return; - } - if (s1) gsasl_free (s1); + if (res == GSASL_OK) + { + const char *authzid = gsasl_property_get (server, GSASL_AUTHZID); + + if (debug) + { + if (authzid) + printf ("Z[%d] %s\n", i, authzid); + else + printf ("Z[%d] NULL\n", i); + } + + if (authzid == NULL && tv[n].recvauthzid != NULL) + { + fail ("got NULL authzid but expected: %s\n", tv[n].recvauthzid); + return; + } + } + else if (debug) + printf ("R[%d] %d\n", i, res); + gsasl_finish (client); gsasl_finish (server); + + puts (""); } gsasl_done (ctx); diff -Nru gsasl-2.0.1/tests/gsasl-dovecot-gssapi.sh gsasl-2.2.0/tests/gsasl-dovecot-gssapi.sh --- gsasl-2.0.1/tests/gsasl-dovecot-gssapi.sh 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/gsasl-dovecot-gssapi.sh 2022-09-02 16:27:07.000000000 -0500 @@ -0,0 +1,194 @@ +#!/bin/sh + +# Copyright (C) 2022 Simon Josefsson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e +set -u +set -x + +# Set up a local MIT Kerberos KDC, configure Dovecot, and then +# authenticate with GSS-API to the server using 'gsasl' as the client. + +# No root privileges required, but listens on hard-coded ports 17643 +# (KDC) and 17436 (dovecot). + +# Environment variables GSASL specify tool to use, which may include +# valgrind/libtool or other profiling commands. + +: ${GSASL=gsasl} + +if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then + echo FAIL: $0: GNU SASL gsasl missing... + exit 1 +fi + +if ! $GSASL --client-mechanisms 2>&1 | grep ' GSSAPI '; then + echo SKIP: $0: No GSSAPI support detected... + exit 77 +fi + +if test "${GNUGSS:-no}" = yes; then + echo SKIP: $0: Not ported to Shishi/GSS ccache yet... + exit 77 +fi + +export PATH=$PATH:/sbin:/usr/sbin + +if ! command -v ss && ! command -v netstat; then + echo SKIP: $0: Required tools 'ss' or 'netstat' missing... + exit 77 +fi + +if ! command -v id || ! command -v hostname || ! command -v dovecot || ! command -v kinit || ! command -v kdb5_util || ! command -v kadmin.local || ! command -v krb5kdc; then + echo SKIP: $0: Required tools missing... + exit 77 +fi + +WORKDIR=$(mktemp -d) + +trap 'set +e; test -f $WORKDIR/k/pid && kill `cat $WORKDIR/k/pid`; dovecot -c $WORKDIR/d/dovecot.conf stop; tail -v -n +0 $WORKDIR/out-* $WORKDIR/dovecot.log $WORKDIR/kdc.log; rm -r $WORKDIR/d $WORKDIR/b $WORKDIR/k $WORKDIR/*.log $WORKDIR/cc $WORKDIR/out-*; rmdir $WORKDIR' 0 INT QUIT ABRT PIPE TERM + +: ${USER=`id -un`} +: ${GROUP=`id -gn`} + +mkdir $WORKDIR/k $WORKDIR/d + +cat< $WORKDIR/k/kdc.conf +[realms] + GSASL.EXAMPLE = { + database_name = $WORKDIR/k/principal + key_stash_file = $WORKDIR/k/stash + kdc_ports = 17643 + kdc_tcp_ports = 17643 + default_principal_flags = +preauth + } +[logging] + kdc = FILE:$WORKDIR/kdc.log +EOF + +cat< $WORKDIR/k/krb5.conf +[libdefaults] + default_realm = GSASL.EXAMPLE + +[domain_realm] + .`hostname -d` = GSASL.EXAMPLE + +[realms] + GSASL.EXAMPLE = { + kdc = `hostname -f`:17643 + } +EOF + +cat < $WORKDIR/d/dovecot.conf +protocols = imap + +auth_gssapi_hostname = `hostname -f` + +auth_krb5_keytab = $WORKDIR/d/dovecot.keytab + +auth_verbose=yes +auth_debug=yes + +disable_plaintext_auth=no +auth_mechanisms = gssapi +base_dir = $WORKDIR/b + +passdb { + driver = static + args = password=pencil +} + +log_path = $WORKDIR/dovecot.log + +# https://wiki.dovecot.org/HowTo/Rootless + +default_internal_user = $USER +default_internal_group = $GROUP + +service anvil { + chroot = +} +service imap-login { + chroot = +} +service imap-login { + inet_listener imap { + port = 17436 + } + inet_listener imaps { + port = 0 + } +} +EOF + +if test "$USER" = "root"; then + cat <> $WORKDIR/d/dovecot.conf +default_login_user = nobody +userdb { + driver = static + args = uid=4711 gid=4711 home=$WORKDIR mail=mbox:foo +} +EOF +else + cat <> $WORKDIR/d/dovecot.conf +default_login_user = $USER +userdb { + driver = static + args = uid=$USER gid=$GROUP home=$WORKDIR mail=mbox:foo +} +EOF +fi + +export KRB5CCNAME=$WORKDIR/cc +export KRB5_CONFIG=$WORKDIR/k/krb5.conf +export KRB5_KDC_PROFILE=$WORKDIR/k + +kdb5_util -P foo create -s +kadmin.local addprinc -randkey imap/`hostname -f` +kadmin.local addprinc -pw bar $USER +kadmin.local ktadd -k $WORKDIR/d/dovecot.keytab imap/`hostname -f` + +krb5kdc -n -P $WORKDIR/k/pid & + +i=0 +while ! (ss -na || netstat -na) | grep 0.0.0.0:17643 | grep LISTEN; do + i=`expr $i + 1` + test "$i" = "10" && exit 1 + sleep 1 +done + +dovecot -c $WORKDIR/d/dovecot.conf || \ + { + if grep -q 'Fatal: service(imap) access' $WORKDIR/dovecot.log; then + echo "Dovecot installed without imap support..." + echo "Try 'apt-get install dovecot-imapd dovecot-gssapi'" + exit 77 + fi + exit 1 + } + +! $GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 17436 > $WORKDIR/out-err 2>&1 + +grep -q 'gss_init_sec_context' $WORKDIR/out-err + +echo bar | kinit $USER + +$GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 17436 > $WORKDIR/out-ok 2>&1 + +grep -q 'OK Logged in' $WORKDIR/out-ok + +echo PASS: $0 +exit 0 diff -Nru gsasl-2.0.1/tests/gsasl-mailutils-cram.sh gsasl-2.2.0/tests/gsasl-mailutils-cram.sh --- gsasl-2.0.1/tests/gsasl-mailutils-cram.sh 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/gsasl-mailutils-cram.sh 2022-09-02 10:36:57.000000000 -0500 @@ -0,0 +1,105 @@ +#!/bin/sh + +# Copyright (C) 2022 Simon Josefsson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e +set -u +set -x + +# Configure MailUtils imap4d (which uses libgsasl), then authenticate +# to it using gsasl, for a couple of different CRAM-like mechanisms. + +# No root privileges required, but listens on hard-coded port 19835. + +# Environment variables GSASL and IMAP4D specify tools to use, which +# may include valgrind/libtool or other profiling commands. + +: ${GSASL=gsasl} +: ${IMAP4D=imap4d} + +if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then + echo FAIL: $0: GNU SASL gsasl missing... + exit 1 +fi + +export PATH=$PATH:/sbin:/usr/sbin + +if ! $IMAP4D --version 2> /dev/null | grep '^imap4d (GNU Mailutils)'; then + echo SKIP: $0: GNU Mailutils imap4d missing... + exit 77 +fi + +if ! $IMAP4D --show-config-options 2> /dev/null | grep '^WITH_GSASL'; then + echo SKIP: $0: No GNU SASL support in GNU Mailutils imap4d... + exit 77 +fi + +if ! command -v ss && ! command -v netstat; then + echo SKIP: $0: Required tools 'ss' or 'netstat' missing... + exit 77 +fi + +WORKDIR=$(mktemp -d) + +trap 'set +e; tail -v -n +0 $WORKDIR/out-*; test -f $WORKDIR/imap4d.pid && kill `cat $WORKDIR/imap4d.pid`; rm $WORKDIR/imap4d.pid $WORKDIR/mailutils.conf $WORKDIR/cram.txt $WORKDIR/out-*; rmdir $WORKDIR' 0 INT QUIT ABRT PIPE TERM + +: ${USER=`whoami || id -un`} + +cat < $WORKDIR/cram.txt +$USER foo +EOF + +cat < $WORKDIR/mailutils.conf +logging { syslog false;}; +pidfile $WORKDIR/imap4d.pid; +gsasl { + cram-passwd $WORKDIR/cram.txt; +}; +server 127.0.0.1:19835 { +}; +EOF + +$IMAP4D --config-file=$WORKDIR/mailutils.conf --debug-level=4711 --daemon --foreground > $WORKDIR/out-imapd 2>&1 & + +i=0 +while ! (ss -na || netstat -na) | grep 127.0.0.1:19835 | grep LISTEN; do + i=`expr $i + 1` + test "$i" = "10" && exit 1 + sleep 1 +done + +! $GSASL -pbar -d -m CRAM-MD5 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-cram-md5-fail 2>&1 + +grep -q '^. NO AUTHENTICATE' $WORKDIR/out-cram-md5-fail + +$GSASL -pfoo -d -m CRAM-MD5 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-cram-md5 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-cram-md5 + +$GSASL -pfoo -d -m DIGEST-MD5 --quality-of-protection=qop-auth --realm="" --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-digest-md5 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-digest-md5 + +$GSASL -pfoo -d -m SCRAM-SHA-1 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-scram-sha-1 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-scram-sha-1 + +($GSASL -pfoo -d -m SCRAM-SHA-256 --verbose --imap 127.0.0.1 19835 > $WORKDIR/out-scram-sha-256 2>&1 \ + && grep -q '^. OK AUTHENTICATE' $WORKDIR/out-scram-sha-256) \ + || grep '^. NO AUTHENTICATE Authentication mechanism not supported' $WORKDIR/out-scram-sha-256 + +echo PASS: $0 +exit 0 diff -Nru gsasl-2.0.1/tests/gsasl-mailutils-gs2krb5-gssapi.sh gsasl-2.2.0/tests/gsasl-mailutils-gs2krb5-gssapi.sh --- gsasl-2.0.1/tests/gsasl-mailutils-gs2krb5-gssapi.sh 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/gsasl-mailutils-gs2krb5-gssapi.sh 2022-08-16 11:38:12.000000000 -0500 @@ -0,0 +1,152 @@ +#!/bin/sh + +# Copyright (C) 2022 Simon Josefsson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e +set -u +set -x + +# Set up a local MIT Kerberos KDC, configure MailUtils imap4d (which +# uses libgsasl), and then authenticate with GS2-KRB5 and GSSAPI to +# the server using 'gsasl' as the client. + +# No root privileges required, but listens on hard-coded ports 17643 +# (KDC) and 19835 (imap4d). + +# Environment variables GSASL and IMAP4D specify tools to use, which +# may include valgrind/libtool or other profiling commands. + +: ${GSASL=gsasl} +: ${IMAP4D=imap4d} + +if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then + echo FAIL: $0: GNU SASL gsasl missing... + exit 1 +fi + +if ! $GSASL --client-mechanisms 2>&1 | grep ' GSSAPI '; then + echo SKIP: $0: No GSSAPI support detected... + exit 77 +fi + +if test "${GNUGSS:-no}" = yes; then + echo SKIP: $0: Not ported to Shishi/GSS ccache yet... + exit 77 +fi + +export PATH=$PATH:/sbin:/usr/sbin + +if ! command -v ss && ! command -v netstat; then + echo SKIP: $0: Required tools 'ss' or 'netstat' missing... + exit 77 +fi + +if ! $IMAP4D --version 2> /dev/null | grep '^imap4d (GNU Mailutils)'; then + echo SKIP: $0: GNU Mailutils imap4d missing... + exit 77 +fi + +if ! command -v id || ! command -v hostname || ! command -v kinit || ! command -v kdb5_util || ! command -v kadmin.local || ! command -v krb5kdc; then + echo SKIP: $0: Required tools missing... + exit 77 +fi + +WORKDIR=$(mktemp -d) + +trap 'set +e; test -f $WORKDIR/k/pid && kill `cat $WORKDIR/k/pid`; test -f $WORKDIR/imap4d.pid && kill `cat $WORKDIR/imap4d.pid`; tail -v -n +0 $WORKDIR/out-* $WORKDIR/kdc.log; rm -r $WORKDIR/imap4d.pid $WORKDIR/mailutils.conf $WORKDIR/k $WORKDIR/*.log $WORKDIR/cc $WORKDIR/kt $WORKDIR/out-*; rmdir $WORKDIR' 0 INT QUIT ABRT PIPE TERM + +: ${USER=`id -un`} +: ${GROUP=`id -gn`} + +mkdir $WORKDIR/k $WORKDIR/k/etc + +cat< $WORKDIR/k/kdc.conf +[realms] + GSASL.EXAMPLE = { + database_name = $WORKDIR/k/principal + key_stash_file = $WORKDIR/k/stash + kdc_ports = 17643 + kdc_tcp_ports = 17643 + default_principal_flags = +preauth + } +[logging] + kdc = FILE:$WORKDIR/kdc.log +EOF + +cat< $WORKDIR/k/krb5.conf +[libdefaults] + default_realm = GSASL.EXAMPLE + +[domain_realm] + .`hostname -d` = GSASL.EXAMPLE + +[realms] + GSASL.EXAMPLE = { + kdc = `hostname -f`:17643 + } +EOF + +export KRB5CCNAME=$WORKDIR/cc +export KRB5_CONFIG=$WORKDIR/k/krb5.conf +export KRB5_KDC_PROFILE=$WORKDIR/k +export KRB5_KTNAME=$WORKDIR/kt + +kdb5_util -P foo create -s +kadmin.local addprinc -randkey imap/`hostname -f` +kadmin.local addprinc -pw bar $USER +kadmin.local ktadd -k $KRB5_KTNAME imap/`hostname -f` + +krb5kdc -n -P $WORKDIR/k/pid & + +i=0 +while ! (ss -na || netstat -na) | grep 0.0.0.0:17643 | grep LISTEN; do + i=`expr $i + 1` + test "$i" = "10" && exit 1 + sleep 1 +done + +cat < $WORKDIR/mailutils.conf +logging { syslog false;}; +pidfile $WORKDIR/imap4d.pid; +server 0.0.0.0:19835 { +}; +EOF + +$IMAP4D --config-file=$WORKDIR/mailutils.conf --debug-level=4711 --daemon --foreground > $WORKDIR/out-imapd 2>&1 & + +i=0 +while ! (ss -na || netstat -na) | grep 0.0.0.0:19835 | grep LISTEN; do + i=`expr $i + 1` + test "$i" = "10" && exit 1 + sleep 1 +done + +! $GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 19835 > $WORKDIR/out-err 2>&1 + +grep -q 'gss_init_sec_context' $WORKDIR/out-err + +echo bar | kinit $USER + +$GSASL -m GS2-KRB5 -d --no-starttls --imap `hostname -f` 19835 -z $USER > $WORKDIR/out-gs2krb5 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-gs2krb5 + +$GSASL -m GSSAPI -d --no-starttls --imap `hostname -f` 19835 -z $USER > $WORKDIR/out-gssapi 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-gssapi + +echo PASS: $0 +exit 0 diff -Nru gsasl-2.0.1/tests/gsasl-mailutils-tls.sh gsasl-2.2.0/tests/gsasl-mailutils-tls.sh --- gsasl-2.0.1/tests/gsasl-mailutils-tls.sh 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/gsasl-mailutils-tls.sh 2022-09-02 10:36:57.000000000 -0500 @@ -0,0 +1,146 @@ +#!/bin/sh + +# Copyright (C) 2022 Simon Josefsson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e +set -u +set -x + +# Configure MailUtils imap4d (which uses libgsasl), then authenticate +# to it using gsasl, all with TLS, for a couple of different CRAM-like +# mechanisms. + +# No root privileges required, but listens on hard-coded port 19385. + +# Environment variables GSASL and IMAP4D specify tools to use, which +# may include valgrind/libtool or other profiling commands. + +: ${GSASL=gsasl} +: ${IMAP4D=imap4d} + +if ! $GSASL --version 2> /dev/null | grep '^gsasl (GNU SASL'; then + echo FAIL: $0: GNU SASL gsasl missing... + exit 1 +fi + +export PATH=$PATH:/sbin:/usr/sbin + +if ! command -v certtool; then + echo SKIP: $0: Required GnuTLS 'certtool' missing... + exit 77 +fi + +if ! $IMAP4D --version 2> /dev/null | grep '^imap4d (GNU Mailutils)'; then + echo SKIP: $0: GNU Mailutils imap4d missing... + exit 77 +fi + +if ! $IMAP4D --show-config-options 2> /dev/null | grep '^WITH_GSASL'; then + echo SKIP: $0: No GNU SASL support in GNU Mailutils imap4d... + exit 77 +fi + +if ! $IMAP4D --show-config-options 2> /dev/null | grep '^WITH_GNUTLS'; then + echo SKIP: $0: No GnuTLS support in GNU Mailutils imap4d... + exit 77 +fi + +if ! command -v ss && ! command -v netstat; then + echo SKIP: $0: Required tools 'ss' or 'netstat' missing... + exit 77 +fi + +WORKDIR=$(mktemp -d) + +trap 'set +e; test -f $WORKDIR/imap4d.pid && kill `cat $WORKDIR/imap4d.pid`; tail -v -n +0 $WORKDIR/out-*; rm -rf $WORKDIR' 0 INT QUIT ABRT PIPE TERM + +: ${USER=`whoami || id -un`} + +# certtool --generate-privkey --key-type=ed25519 --outfile cakey.pem +cat< $WORKDIR/cakey.pem +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEIMcU2CujO/ylNxQMgaNEjAj3lD1awpu9ZKe9RjH5/j7P +-----END PRIVATE KEY----- +EOF + +printf "ca\ncn=GSASL test CA\n" > $WORKDIR/cacert.cfg +certtool --generate-self-signed --load-privkey $WORKDIR/cakey.pem --template $WORKDIR/cacert.cfg --outfile $WORKDIR/cacert.pem + +# certtool --generate-privkey --key-type=ed25519 --outfile key.pem +cat< $WORKDIR/key.pem +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEIEJLYKgd6mPtXZEScvpX3Nwe70W+VWG3VRilAEhWblJe +-----END PRIVATE KEY----- +EOF + +printf "cn=GSASL test client\nip_address=127.0.0.1\n" > $WORKDIR/cert.cfg +certtool --generate-certificate --load-ca-privkey $WORKDIR/cakey.pem --load-ca-certificate $WORKDIR/cacert.pem --load-privkey $WORKDIR/key.pem --template $WORKDIR/cert.cfg --outfile $WORKDIR/cert.pem + +cat < $WORKDIR/cram.txt +$USER foo +EOF + +cat < $WORKDIR/mailutils.conf +logging { syslog false;}; +pidfile $WORKDIR/imap4d.pid; +gsasl { + cram-passwd $WORKDIR/cram.txt; +}; +tls-file-checks { + key-file none; + cert-file none; + ca-file none; +}; +server 127.0.0.1:19385 { + tls { + ssl-certificate-file $WORKDIR/cert.pem; + ssl-key-file $WORKDIR/key.pem; + ssl-ca-file $WORKDIR/cacert.pem; + }; +}; +EOF + +$IMAP4D --config-file=$WORKDIR/mailutils.conf --debug-level=4711 --daemon --foreground > $WORKDIR/out-00-imapd 2>&1 & + +i=0 +while ! (ss -na || netstat -na) | grep 127.0.0.1:19385 | grep LISTEN; do + i=`expr $i + 1` + test "$i" = "10" && exit 1 + sleep 1 +done + +! $GSASL -pbar -d -m CRAM-MD5 --no-cb --x509-ca-file=$WORKDIR/cacert.pem --verbose --imap 127.0.0.1 19385 > $WORKDIR/out-cram-md5-fail 2>&1 + +grep -q '^. NO AUTHENTICATE' $WORKDIR/out-cram-md5-fail + +$GSASL -pfoo -d -m CRAM-MD5 --no-cb --x509-ca-file=$WORKDIR/cacert.pem --verbose --imap 127.0.0.1 19385 > $WORKDIR/out-cram-md5 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-cram-md5 + +$GSASL -pfoo -d -m DIGEST-MD5 --quality-of-protection=qop-auth --realm="" --no-cb --x509-ca-file=$WORKDIR/cacert.pem --verbose --imap 127.0.0.1 19385 > $WORKDIR/out-digest-md5 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-digest-md5 + +$GSASL -pfoo -d -m SCRAM-SHA-1 --no-cb --x509-ca-file=$WORKDIR/cacert.pem --verbose --imap 127.0.0.1 19385 > $WORKDIR/out-scram-sha-1 2>&1 + +grep -q '^. OK AUTHENTICATE' $WORKDIR/out-scram-sha-1 + +($GSASL -pfoo -d -m SCRAM-SHA-256 --no-cb --x509-ca-file=$WORKDIR/cacert.pem --verbose --imap 127.0.0.1 19385 > $WORKDIR/out-scram-sha-256 2>&1 \ + && grep -q '^. OK AUTHENTICATE' $WORKDIR/out-scram-sha-256) \ + || grep '^. NO AUTHENTICATE Authentication mechanism not supported' $WORKDIR/out-scram-sha-256 + +echo PASS: $0 +exit 0 diff -Nru gsasl-2.0.1/tests/gsasl-scram-pbkdf2.sh gsasl-2.2.0/tests/gsasl-scram-pbkdf2.sh --- gsasl-2.0.1/tests/gsasl-scram-pbkdf2.sh 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/gsasl-scram-pbkdf2.sh 2022-08-06 12:32:40.000000000 -0500 @@ -16,21 +16,17 @@ # along with this program. If not, see . set -e +set -u set -x -: ${GSASL=../src/gsasl${EXEEXT}} +: ${GSASL=gsasl} -if test ! -x "${GSASL}"; then - exit 77 -fi - -if test ! -z "${VALGRIND}"; then - VALGRIND="${LIBTOOL:-../libtool} --mode=execute ${VALGRIND} --leak-check=full --error-exitcode=1" -fi +F=`mktemp || echo /tmp/gsasl-scram-pbkdf2-$$.log` +trap 'test -f $F && cat $F && rm $F' 0 INT QUIT ABRT PIPE TERM # Sanity checks -${VALGRIND} "${GSASL}" --mkpasswd --password password --mechanism SCRAM-SHA-1 -${VALGRIND} "${GSASL}" --mkpasswd --password password --mechanism SCRAM-SHA-256 +$GSASL --mkpasswd --password password --mechanism SCRAM-SHA-1 +$GSASL --mkpasswd --password password --mechanism SCRAM-SHA-256 # RFC 6070 @@ -45,12 +41,8 @@ # f3 a9 b5 24 af 60 12 06 # 2f e0 37 a6 (20 octets) -OUT=`${VALGRIND} "${GSASL}" --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 1 --salt c2FsdA== --verbose` -EXP="{SCRAM-SHA-1}1,c2FsdA==,vVnp0FhQZmQRSMvw9oq1LFMCh8E=,gEBmhcREcU59nXxkDhCePwlgRbY=,0c60c80f961f0e71f3a9b524af6012062fe037a6" -if test "$OUT" != "$EXP"; then - echo expected $EXP got $OUT - exit 1 -fi +$GSASL --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 1 --salt c2FsdA== --verbose > $F +grep -q "{SCRAM-SHA-1}1,c2FsdA==,vVnp0FhQZmQRSMvw9oq1LFMCh8E=,gEBmhcREcU59nXxkDhCePwlgRbY=,0c60c80f961f0e71f3a9b524af6012062fe037a6" $F # Input: # P = "password" (8 octets) @@ -63,12 +55,8 @@ # cd 1e d9 2a ce 1d 41 f0 # d8 de 89 57 (20 octets) -OUT=`${VALGRIND} "${GSASL}" --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 2 --salt c2FsdA== --verbose` -EXP="{SCRAM-SHA-1}2,c2FsdA==,J4+ucUpxxJUZf/2dj0CKWg+lhvs=,5Alx1KUCWBgKd9mxAgTkpDBis54=,ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957" -if test "$OUT" != "$EXP"; then - echo expected $EXP got $OUT - exit 1 -fi +$GSASL --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 2 --salt c2FsdA== --verbose > $F +grep -q "{SCRAM-SHA-1}2,c2FsdA==,J4+ucUpxxJUZf/2dj0CKWg+lhvs=,5Alx1KUCWBgKd9mxAgTkpDBis54=,ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957" $F # Input: # P = "password" (8 octets) @@ -81,20 +69,15 @@ # be ad 49 d9 26 f7 21 d0 # 65 a4 29 c1 (20 octets) -OUT=`${VALGRIND} "${GSASL}" --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 4096 --salt c2FsdA== --verbose` -EXP="{SCRAM-SHA-1}4096,c2FsdA==,0qUypmwka5AUb9oe/OrTaR5uwR8=,BZ90E2UltiQTre5pA3UZCJJGU3w=,4b007901b765489abead49d926f721d065a429c1" -if test "$OUT" != "$EXP"; then - echo expected $EXP got $OUT - exit 1 -fi +$GSASL --mkpasswd --password password --mechanism SCRAM-SHA-1 --iteration-count 4096 --salt c2FsdA== --verbose > $F +grep -q "{SCRAM-SHA-1}4096,c2FsdA==,0qUypmwka5AUb9oe/OrTaR5uwR8=,BZ90E2UltiQTre5pA3UZCJJGU3w=,4b007901b765489abead49d926f721d065a429c1" $F # RFC 7677 -OUT=`${VALGRIND} "${GSASL}" --mkpasswd --password pencil --mechanism SCRAM-SHA-256 --iteration-count 4096 --salt W22ZaJ0SNY7soEsUEjb6gQ== --verbose` -EXP="{SCRAM-SHA-256}4096,W22ZaJ0SNY7soEsUEjb6gQ==,WG5d8oPm3OtcPnkdi4Uo7BkeZkBFzpcXkuLmtbsT4qY=,wfPLwcE6nTWhTAmQ7tl2KeoiWGPlZqQxSrmfPwDl2dU=,c4a49510323ab4f952cac1fa99441939e78ea74d6be81ddf7096e87513dc615d" -if test "$OUT" != "$EXP"; then - echo expected $EXP got $OUT - exit 1 -fi +$GSASL --mkpasswd --password pencil --mechanism SCRAM-SHA-256 --iteration-count 4096 --salt W22ZaJ0SNY7soEsUEjb6gQ== --verbose > $F +grep -q "{SCRAM-SHA-256}4096,W22ZaJ0SNY7soEsUEjb6gQ==,WG5d8oPm3OtcPnkdi4Uo7BkeZkBFzpcXkuLmtbsT4qY=,wfPLwcE6nTWhTAmQ7tl2KeoiWGPlZqQxSrmfPwDl2dU=,c4a49510323ab4f952cac1fa99441939e78ea74d6be81ddf7096e87513dc615d" $F +rm -f $F + +echo PASS: $0 exit 0 diff -Nru gsasl-2.0.1/tests/Makefile.am gsasl-2.2.0/tests/Makefile.am --- gsasl-2.0.1/tests/Makefile.am 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/Makefile.am 2022-09-02 10:36:57.000000000 -0500 @@ -31,6 +31,7 @@ libutils_la_SOURCES = utils.h utils.c AM_TESTS_ENVIRONMENT = \ + GSASL="$(LIBTOOL) --mode=execute $(LOG_VALGRIND) ../src/gsasl$(EXEEXT)" \ SHISHI_KEYS=$(srcdir)/gssapi.key \ SHISHI_TICKETS=$(srcdir)/gssapi.tkt \ SHISHI_CONFIG=$(srcdir)/shishi.conf \ @@ -39,17 +40,19 @@ THREADSAFETY_FILES=`ls $(top_srcdir)/lib/*/*.c | $(GREP) -v -e lib/gl/vasnprintf.c -e lib/gl/getdelim.c -e lib/gltests/` \ MD5FILE=$(srcdir)/cram-md5.pwd \ EGREP="$(EGREP)" \ - GNUGSS="$(HAVE_LIBGSS)" \ - VALGRIND="$(VALGRIND)" \ - export SHISHI_KEYS SHISHI_TICKETS SHISHI_CONFIG SHISHI_HOME SHISHI_USER THREADSAFETY_FILES MD5FILE EGREP GNUGSS VALGRIND; + GNUGSS="$(HAVE_LIBGSS)"; \ + export GSASL SHISHI_KEYS SHISHI_TICKETS SHISHI_CONFIG SHISHI_HOME SHISHI_USER THREADSAFETY_FILES MD5FILE EGREP GNUGSS; LOG_COMPILER=$(VALGRIND) -ctests = external cram-md5 digest-md5 md5file name errors suggest \ - simple crypto scram scramplus symbols readnz gssapi gs2-krb5 \ - saml20 openid20 scram-sha256 scram-simple scram-nopasswd startcb +ctests = version external cram-md5 digest-md5 md5file name errors \ + suggest simple crypto scram scramplus symbols readnz gssapi \ + gs2-krb5 saml20 openid20 scram-sha256 scram-simple \ + scram-nopasswd startcb scram-incremental scram-exporter check_PROGRAMS = $(ctests) -dist_check_SCRIPTS = threadsafety.sh gsasl-scram-pbkdf2.sh +dist_check_SCRIPTS = threadsafety.sh gsasl-scram-pbkdf2.sh \ + gsasl-mailutils-cram.sh gsasl-mailutils-gs2krb5-gssapi.sh \ + gsasl-mailutils-tls.sh gsasl-dovecot-gssapi.sh TEST_EXTENSIONS = .sh TESTS = $(dist_check_SCRIPTS) $(ctests) diff -Nru gsasl-2.0.1/tests/Makefile.in gsasl-2.2.0/tests/Makefile.in --- gsasl-2.0.1/tests/Makefile.in 2022-07-15 10:51:22.000000000 -0500 +++ gsasl-2.2.0/tests/Makefile.in 2022-09-03 09:53:00.000000000 -0500 @@ -221,13 +221,15 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -am__EXEEXT_1 = external$(EXEEXT) cram-md5$(EXEEXT) digest-md5$(EXEEXT) \ - md5file$(EXEEXT) name$(EXEEXT) errors$(EXEEXT) \ - suggest$(EXEEXT) simple$(EXEEXT) crypto$(EXEEXT) \ - scram$(EXEEXT) scramplus$(EXEEXT) symbols$(EXEEXT) \ - readnz$(EXEEXT) gssapi$(EXEEXT) gs2-krb5$(EXEEXT) \ - saml20$(EXEEXT) openid20$(EXEEXT) scram-sha256$(EXEEXT) \ - scram-simple$(EXEEXT) scram-nopasswd$(EXEEXT) startcb$(EXEEXT) +am__EXEEXT_1 = version$(EXEEXT) external$(EXEEXT) cram-md5$(EXEEXT) \ + digest-md5$(EXEEXT) md5file$(EXEEXT) name$(EXEEXT) \ + errors$(EXEEXT) suggest$(EXEEXT) simple$(EXEEXT) \ + crypto$(EXEEXT) scram$(EXEEXT) scramplus$(EXEEXT) \ + symbols$(EXEEXT) readnz$(EXEEXT) gssapi$(EXEEXT) \ + gs2-krb5$(EXEEXT) saml20$(EXEEXT) openid20$(EXEEXT) \ + scram-sha256$(EXEEXT) scram-simple$(EXEEXT) \ + scram-nopasswd$(EXEEXT) startcb$(EXEEXT) \ + scram-incremental$(EXEEXT) scram-exporter$(EXEEXT) LTLIBRARIES = $(noinst_LTLIBRARIES) libutils_la_LIBADD = am_libutils_la_OBJECTS = utils.lo @@ -301,6 +303,16 @@ scram_LDADD = $(LDADD) scram_DEPENDENCIES = ../lib/src/libgsasl.la libutils.la \ ../lib/gl/liblgl.la ../gl/libgl.la +scram_exporter_SOURCES = scram-exporter.c +scram_exporter_OBJECTS = scram-exporter.$(OBJEXT) +scram_exporter_LDADD = $(LDADD) +scram_exporter_DEPENDENCIES = ../lib/src/libgsasl.la libutils.la \ + ../lib/gl/liblgl.la ../gl/libgl.la +scram_incremental_SOURCES = scram-incremental.c +scram_incremental_OBJECTS = scram-incremental.$(OBJEXT) +scram_incremental_LDADD = $(LDADD) +scram_incremental_DEPENDENCIES = ../lib/src/libgsasl.la libutils.la \ + ../lib/gl/liblgl.la ../gl/libgl.la scram_nopasswd_SOURCES = scram-nopasswd.c scram_nopasswd_OBJECTS = scram-nopasswd.$(OBJEXT) scram_nopasswd_LDADD = $(LDADD) @@ -341,6 +353,11 @@ symbols_LDADD = $(LDADD) symbols_DEPENDENCIES = ../lib/src/libgsasl.la libutils.la \ ../lib/gl/liblgl.la ../gl/libgl.la +version_SOURCES = version.c +version_OBJECTS = version.$(OBJEXT) +version_LDADD = $(LDADD) +version_DEPENDENCIES = ../lib/src/libgsasl.la libutils.la \ + ../lib/gl/liblgl.la ../gl/libgl.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -362,11 +379,13 @@ ./$(DEPDIR)/gssapi.Po ./$(DEPDIR)/md5file.Po \ ./$(DEPDIR)/name.Po ./$(DEPDIR)/openid20.Po \ ./$(DEPDIR)/readnz.Po ./$(DEPDIR)/saml20.Po \ + ./$(DEPDIR)/scram-exporter.Po ./$(DEPDIR)/scram-incremental.Po \ ./$(DEPDIR)/scram-nopasswd.Po ./$(DEPDIR)/scram-sha256.Po \ ./$(DEPDIR)/scram-simple.Po ./$(DEPDIR)/scram.Po \ ./$(DEPDIR)/scramplus.Po ./$(DEPDIR)/simple.Po \ ./$(DEPDIR)/startcb.Po ./$(DEPDIR)/suggest.Po \ - ./$(DEPDIR)/symbols.Po ./$(DEPDIR)/utils.Plo + ./$(DEPDIR)/symbols.Po ./$(DEPDIR)/utils.Plo \ + ./$(DEPDIR)/version.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -388,14 +407,16 @@ am__v_CCLD_1 = SOURCES = $(libutils_la_SOURCES) cram-md5.c crypto.c digest-md5.c \ errors.c external.c gs2-krb5.c gssapi.c md5file.c name.c \ - openid20.c readnz.c saml20.c scram.c scram-nopasswd.c \ - scram-sha256.c scram-simple.c scramplus.c simple.c startcb.c \ - suggest.c symbols.c + openid20.c readnz.c saml20.c scram.c scram-exporter.c \ + scram-incremental.c scram-nopasswd.c scram-sha256.c \ + scram-simple.c scramplus.c simple.c startcb.c suggest.c \ + symbols.c version.c DIST_SOURCES = $(libutils_la_SOURCES) cram-md5.c crypto.c digest-md5.c \ errors.c external.c gs2-krb5.c gssapi.c md5file.c name.c \ - openid20.c readnz.c saml20.c scram.c scram-nopasswd.c \ - scram-sha256.c scram-simple.c scramplus.c simple.c startcb.c \ - suggest.c symbols.c + openid20.c readnz.c saml20.c scram.c scram-exporter.c \ + scram-incremental.c scram-nopasswd.c scram-sha256.c \ + scram-simple.c scramplus.c simple.c startcb.c suggest.c \ + symbols.c version.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -698,6 +719,7 @@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ @@ -1058,6 +1080,7 @@ GL_LGL_GNULIB_CALLOC_POSIX = @GL_LGL_GNULIB_CALLOC_POSIX@ GL_LGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_LGL_GNULIB_CANONICALIZE_FILE_NAME@ GL_LGL_GNULIB_CHDIR = @GL_LGL_GNULIB_CHDIR@ +GL_LGL_GNULIB_CHMOD = @GL_LGL_GNULIB_CHMOD@ GL_LGL_GNULIB_CHOWN = @GL_LGL_GNULIB_CHOWN@ GL_LGL_GNULIB_CLOSE = @GL_LGL_GNULIB_CLOSE@ GL_LGL_GNULIB_CONNECT = @GL_LGL_GNULIB_CONNECT@ @@ -1856,6 +1879,7 @@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ @@ -2053,6 +2077,7 @@ STDALIGN_H = @STDALIGN_H@ STDARG_H = @STDARG_H@ STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ @@ -2164,6 +2189,7 @@ noinst_LTLIBRARIES = libutils.la libutils_la_SOURCES = utils.h utils.c AM_TESTS_ENVIRONMENT = \ + GSASL="$(LIBTOOL) --mode=execute $(LOG_VALGRIND) ../src/gsasl$(EXEEXT)" \ SHISHI_KEYS=$(srcdir)/gssapi.key \ SHISHI_TICKETS=$(srcdir)/gssapi.tkt \ SHISHI_CONFIG=$(srcdir)/shishi.conf \ @@ -2172,16 +2198,19 @@ THREADSAFETY_FILES=`ls $(top_srcdir)/lib/*/*.c | $(GREP) -v -e lib/gl/vasnprintf.c -e lib/gl/getdelim.c -e lib/gltests/` \ MD5FILE=$(srcdir)/cram-md5.pwd \ EGREP="$(EGREP)" \ - GNUGSS="$(HAVE_LIBGSS)" \ - VALGRIND="$(VALGRIND)" \ - export SHISHI_KEYS SHISHI_TICKETS SHISHI_CONFIG SHISHI_HOME SHISHI_USER THREADSAFETY_FILES MD5FILE EGREP GNUGSS VALGRIND; + GNUGSS="$(HAVE_LIBGSS)"; \ + export GSASL SHISHI_KEYS SHISHI_TICKETS SHISHI_CONFIG SHISHI_HOME SHISHI_USER THREADSAFETY_FILES MD5FILE EGREP GNUGSS; LOG_COMPILER = $(VALGRIND) -ctests = external cram-md5 digest-md5 md5file name errors suggest \ - simple crypto scram scramplus symbols readnz gssapi gs2-krb5 \ - saml20 openid20 scram-sha256 scram-simple scram-nopasswd startcb +ctests = version external cram-md5 digest-md5 md5file name errors \ + suggest simple crypto scram scramplus symbols readnz gssapi \ + gs2-krb5 saml20 openid20 scram-sha256 scram-simple \ + scram-nopasswd startcb scram-incremental scram-exporter + +dist_check_SCRIPTS = threadsafety.sh gsasl-scram-pbkdf2.sh \ + gsasl-mailutils-cram.sh gsasl-mailutils-gs2krb5-gssapi.sh \ + gsasl-mailutils-tls.sh gsasl-dovecot-gssapi.sh -dist_check_SCRIPTS = threadsafety.sh gsasl-scram-pbkdf2.sh TEST_EXTENSIONS = .sh all: all-am @@ -2292,6 +2321,14 @@ @rm -f scram$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scram_OBJECTS) $(scram_LDADD) $(LIBS) +scram-exporter$(EXEEXT): $(scram_exporter_OBJECTS) $(scram_exporter_DEPENDENCIES) $(EXTRA_scram_exporter_DEPENDENCIES) + @rm -f scram-exporter$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scram_exporter_OBJECTS) $(scram_exporter_LDADD) $(LIBS) + +scram-incremental$(EXEEXT): $(scram_incremental_OBJECTS) $(scram_incremental_DEPENDENCIES) $(EXTRA_scram_incremental_DEPENDENCIES) + @rm -f scram-incremental$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scram_incremental_OBJECTS) $(scram_incremental_LDADD) $(LIBS) + scram-nopasswd$(EXEEXT): $(scram_nopasswd_OBJECTS) $(scram_nopasswd_DEPENDENCIES) $(EXTRA_scram_nopasswd_DEPENDENCIES) @rm -f scram-nopasswd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scram_nopasswd_OBJECTS) $(scram_nopasswd_LDADD) $(LIBS) @@ -2324,6 +2361,10 @@ @rm -f symbols$(EXEEXT) $(AM_V_CCLD)$(LINK) $(symbols_OBJECTS) $(symbols_LDADD) $(LIBS) +version$(EXEEXT): $(version_OBJECTS) $(version_DEPENDENCIES) $(EXTRA_version_DEPENDENCIES) + @rm -f version$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(version_OBJECTS) $(version_LDADD) $(LIBS) + mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -2342,6 +2383,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openid20.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readnz.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saml20.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram-exporter.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram-incremental.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram-nopasswd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram-sha256.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram-simple.Po@am__quote@ # am--include-marker @@ -2352,6 +2395,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/suggest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbols.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -2579,6 +2623,13 @@ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? +version.log: version$(EXEEXT) + @p='version$(EXEEXT)'; \ + b='version'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) external.log: external$(EXEEXT) @p='external$(EXEEXT)'; \ b='external'; \ @@ -2726,6 +2777,20 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +scram-incremental.log: scram-incremental$(EXEEXT) + @p='scram-incremental$(EXEEXT)'; \ + b='scram-incremental'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scram-exporter.log: scram-exporter$(EXEEXT) + @p='scram-exporter$(EXEEXT)'; \ + b='scram-exporter'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) .sh.log: @p='$<'; \ $(am__set_b); \ @@ -2831,6 +2896,8 @@ -rm -f ./$(DEPDIR)/openid20.Po -rm -f ./$(DEPDIR)/readnz.Po -rm -f ./$(DEPDIR)/saml20.Po + -rm -f ./$(DEPDIR)/scram-exporter.Po + -rm -f ./$(DEPDIR)/scram-incremental.Po -rm -f ./$(DEPDIR)/scram-nopasswd.Po -rm -f ./$(DEPDIR)/scram-sha256.Po -rm -f ./$(DEPDIR)/scram-simple.Po @@ -2841,6 +2908,7 @@ -rm -f ./$(DEPDIR)/suggest.Po -rm -f ./$(DEPDIR)/symbols.Po -rm -f ./$(DEPDIR)/utils.Plo + -rm -f ./$(DEPDIR)/version.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -2898,6 +2966,8 @@ -rm -f ./$(DEPDIR)/openid20.Po -rm -f ./$(DEPDIR)/readnz.Po -rm -f ./$(DEPDIR)/saml20.Po + -rm -f ./$(DEPDIR)/scram-exporter.Po + -rm -f ./$(DEPDIR)/scram-incremental.Po -rm -f ./$(DEPDIR)/scram-nopasswd.Po -rm -f ./$(DEPDIR)/scram-sha256.Po -rm -f ./$(DEPDIR)/scram-simple.Po @@ -2908,6 +2978,7 @@ -rm -f ./$(DEPDIR)/suggest.Po -rm -f ./$(DEPDIR)/symbols.Po -rm -f ./$(DEPDIR)/utils.Plo + -rm -f ./$(DEPDIR)/version.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff -Nru gsasl-2.0.1/tests/scram.c gsasl-2.2.0/tests/scram.c --- gsasl-2.0.1/tests/scram.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/scram.c 2022-08-20 08:53:21.000000000 -0500 @@ -100,6 +100,7 @@ break; case GSASL_CB_TLS_UNIQUE: + case GSASL_CB_TLS_EXPORTER: break; default: diff -Nru gsasl-2.0.1/tests/scram-exporter.c gsasl-2.2.0/tests/scram-exporter.c --- gsasl-2.0.1/tests/scram-exporter.c 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/scram-exporter.c 2022-08-20 08:53:21.000000000 -0500 @@ -0,0 +1,295 @@ +/* scram-exporter.c --- Test SCRAM-SHA-256-PLUS with tls-exporter CB. + * Copyright (C) 2009-2022 Simon Josefsson + * + * This file is part of GNU SASL. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* This self-test is based on scram-incremental.c but uses + tls-exporter channel binding. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "utils.h" + +#define USERNAME "user" +#define PASSWORD "pencil" + +#define CBDATA "Zm5vcmQ=" + +void +doit (void) +{ + Gsasl *ctx = NULL; + Gsasl_session *server = NULL, *client = NULL; + char *s1, *s2; + size_t s1len, s2len; + int res; + + res = gsasl_init (&ctx); + if (res != GSASL_OK) + { + fail ("gsasl_init() failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (!gsasl_client_support_p (ctx, "SCRAM-SHA-256-PLUS") + || !gsasl_server_support_p (ctx, "SCRAM-SHA-256-PLUS")) + { + gsasl_done (ctx); + fail ("No support for SCRAM-SHA-256-PLUS.\n"); + exit (77); + } + + res = gsasl_server_start (ctx, "SCRAM-SHA-256-PLUS", &server); + if (res != GSASL_OK) + { + fail ("gsasl_server_start() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + res = gsasl_client_start (ctx, "SCRAM-SHA-256-PLUS", &client); + if (res != GSASL_OK) + { + fail ("gsasl_client_start() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + s1 = NULL; + s1len = 0; + + /* Client first... */ + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NO_AUTHID) + { + fail ("gsasl_step-cfauthid failed (%d):\n%s\n", res, + gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_AUTHID, USERNAME); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NO_CB_TLS_EXPORTER) + { + fail ("gsasl_step-cfcb failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_CB_TLS_EXPORTER, CBDATA); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-cf failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("C: %.*s [%c]\n", (int) s1len, s1, res == GSASL_OK ? 'O' : 'N'); + + /* Server first... */ + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + if (res != GSASL_NO_CB_TLS_EXPORTER) + { + fail ("gsasl_step-sfcb failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (server, GSASL_CB_TLS_EXPORTER, "Zm5vcmQ="); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + gsasl_free (s1); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-sf failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("S: %.*s [%c]\n", (int) s2len, s2, res == GSASL_OK ? 'O' : 'N'); + + /* Client last... */ + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + if (res != GSASL_NO_PASSWORD) + { + fail ("gsasl_step-clpasswd failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_PASSWORD, PASSWORD); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + gsasl_free (s2); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-cl failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("C: %.*s [%c]\n", (int) s1len, s1, res == GSASL_OK ? 'O' : 'N'); + + /* Server last... */ + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + if (res != GSASL_NO_PASSWORD) + { + fail ("gsasl_step-slpasswd failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (server, GSASL_PASSWORD, PASSWORD); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + gsasl_free (s1); + if (res != GSASL_OK) + { + fail ("gsasl_step-sl failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("S: %.*s [%c]\n\n", (int) s2len, s2, res == GSASL_OK ? 'O' : 'N'); + + /* Let client parse server final... */ + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + gsasl_free (s2); + if (res != GSASL_OK) + { + fail ("gsasl_step-c failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (s1len != 0) + fail ("dummy final client step produced output?!\n"); + + { + const char *p = gsasl_property_fast (server, GSASL_AUTHID); + if (p && strcmp (p, USERNAME) != 0) + fail ("Bad authid? %s != %s\n", p, USERNAME); + if (debug) + printf ("GSASL_AUTHID: %s\n", p); + } + + { + const char *ci = gsasl_property_fast (client, GSASL_SCRAM_ITER); + const char *si = gsasl_property_fast (server, GSASL_SCRAM_ITER); + if (debug) + { + printf ("GSASL_SCRAM_ITER (client): %s\n", ci); + printf ("GSASL_SCRAM_ITER (server): %s\n", si); + } + if (!ci || !si || strcmp (ci, si) != 0) + fail ("scram iter mismatch\n"); + } + + { + const char *cs = gsasl_property_fast (client, GSASL_SCRAM_SALT); + const char *ss = gsasl_property_fast (server, GSASL_SCRAM_SALT); + if (debug) + { + printf ("GSASL_SCRAM_SALT (client): %s\n", cs); + printf ("GSASL_SCRAM_SALT (server): %s\n", ss); + } + if (!cs || !ss || strcmp (cs, ss) != 0) + fail ("scram salt mismatch\n"); + } + + { + const char *csp = + gsasl_property_fast (client, GSASL_SCRAM_SALTED_PASSWORD); + const char *ssp = + gsasl_property_fast (server, GSASL_SCRAM_SALTED_PASSWORD); + + if (debug) + { + printf ("GSASL_SCRAM_SALTED_PASSWORD (client): %s\n", csp); + printf ("GSASL_SCRAM_SALTED_PASSWORD (server): %s\n", ssp); + } + if (!csp || !ssp || strcmp (csp, ssp) != 0) + fail ("scram salted password mismatch\n"); + } + + { + const char *sek = gsasl_property_fast (server, GSASL_SCRAM_SERVERKEY); + const char *stk = gsasl_property_fast (server, GSASL_SCRAM_STOREDKEY); + + if (debug) + { + printf ("GSASL_SCRAM_SERVERKEY: %s\n", sek); + printf ("GSASL_SCRAM_STOREDKEY: %s\n", stk); + } + + if (!sek) + fail ("missing ServerKey\n"); + if (!stk) + fail ("missing StoredKey\n"); + } + + if (debug) + printf ("\n"); + + gsasl_finish (client); + gsasl_finish (server); + + gsasl_done (ctx); +} diff -Nru gsasl-2.0.1/tests/scram-incremental.c gsasl-2.2.0/tests/scram-incremental.c --- gsasl-2.0.1/tests/scram-incremental.c 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/scram-incremental.c 2022-08-20 08:53:21.000000000 -0500 @@ -0,0 +1,297 @@ +/* scram-incremental.c --- Test SCRAM-SHA-1-PLUS incremental without callback. + * Copyright (C) 2009-2022 Simon Josefsson + * + * This file is part of GNU SASL. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* Based on scram-simple.c. Test that SCRAM returns proper error + codes for missing properties, and handle resuming operation + incrementally after each failure. This triggered a number of + memory leaks in earlier versions of the library. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "utils.h" + +#define USERNAME "user" +#define PASSWORD "pencil" + +#define CBDATA "Zm5vcmQ=" + +void +doit (void) +{ + Gsasl *ctx = NULL; + Gsasl_session *server = NULL, *client = NULL; + char *s1, *s2; + size_t s1len, s2len; + int res; + + res = gsasl_init (&ctx); + if (res != GSASL_OK) + { + fail ("gsasl_init() failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (!gsasl_client_support_p (ctx, "SCRAM-SHA-1-PLUS") + || !gsasl_server_support_p (ctx, "SCRAM-SHA-1-PLUS")) + { + gsasl_done (ctx); + fail ("No support for SCRAM-SHA-1-PLUS.\n"); + exit (77); + } + + res = gsasl_server_start (ctx, "SCRAM-SHA-1-PLUS", &server); + if (res != GSASL_OK) + { + fail ("gsasl_server_start() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + res = gsasl_client_start (ctx, "SCRAM-SHA-1-PLUS", &client); + if (res != GSASL_OK) + { + fail ("gsasl_client_start() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + s1 = NULL; + s1len = 0; + + /* Client first... */ + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NO_AUTHID) + { + fail ("gsasl_step-cfauthid failed (%d):\n%s\n", res, + gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_AUTHID, USERNAME); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NO_CB_TLS_EXPORTER) + { + fail ("gsasl_step-cfcb failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_CB_TLS_UNIQUE, CBDATA); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s1, s1len, &s1, &s1len); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-cf failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("C: %.*s [%c]\n", (int) s1len, s1, res == GSASL_OK ? 'O' : 'N'); + + /* Server first... */ + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + if (res != GSASL_NO_CB_TLS_UNIQUE) + { + fail ("gsasl_step-sfcb failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (server, GSASL_CB_TLS_UNIQUE, "Zm5vcmQ="); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + gsasl_free (s1); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-sf failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("S: %.*s [%c]\n", (int) s2len, s2, res == GSASL_OK ? 'O' : 'N'); + + /* Client last... */ + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + if (res != GSASL_NO_PASSWORD) + { + fail ("gsasl_step-clpasswd failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (client, GSASL_PASSWORD, PASSWORD); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + gsasl_free (s2); + if (res != GSASL_NEEDS_MORE) + { + fail ("gsasl_step-cl failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("C: %.*s [%c]\n", (int) s1len, s1, res == GSASL_OK ? 'O' : 'N'); + + /* Server last... */ + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + if (res != GSASL_NO_PASSWORD) + { + fail ("gsasl_step-slpasswd failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_property_set (server, GSASL_PASSWORD, PASSWORD); + if (res != GSASL_OK) + { + fail ("gsasl_property_set() failed (%d):\n%s\n", + res, gsasl_strerror (res)); + return; + } + + res = gsasl_step (server, s1, s1len, &s2, &s2len); + gsasl_free (s1); + if (res != GSASL_OK) + { + fail ("gsasl_step-sl failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (debug) + printf ("S: %.*s [%c]\n\n", (int) s2len, s2, res == GSASL_OK ? 'O' : 'N'); + + /* Let client parse server final... */ + + res = gsasl_step (client, s2, s2len, &s1, &s1len); + gsasl_free (s2); + if (res != GSASL_OK) + { + fail ("gsasl_step-c failed (%d):\n%s\n", res, gsasl_strerror (res)); + return; + } + + if (s1len != 0) + fail ("dummy final client step produced output?!\n"); + + { + const char *p = gsasl_property_fast (server, GSASL_AUTHID); + if (p && strcmp (p, USERNAME) != 0) + fail ("Bad authid? %s != %s\n", p, USERNAME); + if (debug) + printf ("GSASL_AUTHID: %s\n", p); + } + + { + const char *ci = gsasl_property_fast (client, GSASL_SCRAM_ITER); + const char *si = gsasl_property_fast (server, GSASL_SCRAM_ITER); + if (debug) + { + printf ("GSASL_SCRAM_ITER (client): %s\n", ci); + printf ("GSASL_SCRAM_ITER (server): %s\n", si); + } + if (!ci || !si || strcmp (ci, si) != 0) + fail ("scram iter mismatch\n"); + } + + { + const char *cs = gsasl_property_fast (client, GSASL_SCRAM_SALT); + const char *ss = gsasl_property_fast (server, GSASL_SCRAM_SALT); + if (debug) + { + printf ("GSASL_SCRAM_SALT (client): %s\n", cs); + printf ("GSASL_SCRAM_SALT (server): %s\n", ss); + } + if (!cs || !ss || strcmp (cs, ss) != 0) + fail ("scram salt mismatch\n"); + } + + { + const char *csp = + gsasl_property_fast (client, GSASL_SCRAM_SALTED_PASSWORD); + const char *ssp = + gsasl_property_fast (server, GSASL_SCRAM_SALTED_PASSWORD); + + if (debug) + { + printf ("GSASL_SCRAM_SALTED_PASSWORD (client): %s\n", csp); + printf ("GSASL_SCRAM_SALTED_PASSWORD (server): %s\n", ssp); + } + if (!csp || !ssp || strcmp (csp, ssp) != 0) + fail ("scram salted password mismatch\n"); + } + + { + const char *sek = gsasl_property_fast (server, GSASL_SCRAM_SERVERKEY); + const char *stk = gsasl_property_fast (server, GSASL_SCRAM_STOREDKEY); + + if (debug) + { + printf ("GSASL_SCRAM_SERVERKEY: %s\n", sek); + printf ("GSASL_SCRAM_STOREDKEY: %s\n", stk); + } + + if (!sek) + fail ("missing ServerKey\n"); + if (!stk) + fail ("missing StoredKey\n"); + } + + if (debug) + printf ("\n"); + + gsasl_finish (client); + gsasl_finish (server); + + gsasl_done (ctx); +} diff -Nru gsasl-2.0.1/tests/scram-nopasswd.c gsasl-2.2.0/tests/scram-nopasswd.c --- gsasl-2.0.1/tests/scram-nopasswd.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/scram-nopasswd.c 2022-08-20 08:53:21.000000000 -0500 @@ -82,6 +82,7 @@ case GSASL_PASSWORD: case GSASL_CB_TLS_UNIQUE: + case GSASL_CB_TLS_EXPORTER: case GSASL_AUTHZID: break; diff -Nru gsasl-2.0.1/tests/scramplus.c gsasl-2.2.0/tests/scramplus.c --- gsasl-2.0.1/tests/scramplus.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/scramplus.c 2022-08-20 08:53:21.000000000 -0500 @@ -100,7 +100,13 @@ break; case GSASL_CB_TLS_UNIQUE: - rc = gsasl_property_set (sctx, prop, "Zm5vcmQ="); + if (i & 0x01) + rc = gsasl_property_set (sctx, prop, "Zm5vcmQ="); + break; + + case GSASL_CB_TLS_EXPORTER: + if (!(i & 0x01)) + rc = gsasl_property_set (sctx, prop, "Zm5vcmQ="); break; default: diff -Nru gsasl-2.0.1/tests/scram-sha256.c gsasl-2.2.0/tests/scram-sha256.c --- gsasl-2.0.1/tests/scram-sha256.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/scram-sha256.c 2022-08-20 08:53:21.000000000 -0500 @@ -66,6 +66,7 @@ break; case GSASL_CB_TLS_UNIQUE: + case GSASL_CB_TLS_EXPORTER: case GSASL_AUTHZID: case GSASL_SCRAM_SALTED_PASSWORD: case GSASL_SCRAM_SERVERKEY: diff -Nru gsasl-2.0.1/tests/simple.c gsasl-2.2.0/tests/simple.c --- gsasl-2.0.1/tests/simple.c 2022-07-15 07:21:14.000000000 -0500 +++ gsasl-2.2.0/tests/simple.c 2022-08-20 08:53:21.000000000 -0500 @@ -271,40 +271,6 @@ int i, j; int res; - success ("Header version %s library version %s\n", - GSASL_VERSION, gsasl_check_version (NULL)); - - if (!gsasl_check_version (GSASL_VERSION)) - fail ("gsasl_check_version failure"); - - if (!gsasl_check_version ("1.11.2")) - fail ("gsasl_check_version(1.11.2) failure"); - - if (strcmp (GSASL_VERSION, gsasl_check_version (NULL)) != 0) - fail ("header version mismatch library version\n"); - - i = GSASL_VERSION_MAJOR * 256 * 256 + - GSASL_VERSION_MINOR * 256 + GSASL_VERSION_PATCH; - - j = asprintf (&out, "%d.%d.%d", GSASL_VERSION_MAJOR, - GSASL_VERSION_MINOR, GSASL_VERSION_PATCH); - if (j <= 0) - fail ("asprintf failure: %d", j); - - success ("Header version %s number %x derived %x\n", out, - (unsigned) GSASL_VERSION_NUMBER, (unsigned) i); - - if (GSASL_VERSION_NUMBER != i) - fail ("header version number mismatch\n"); - - if (!gsasl_check_version (out)) - fail ("gsasl_check_version(%s) failure\n", out); - - if (strncmp (GSASL_VERSION, out, strlen (out)) != 0) - fail ("header version numbers mismatch library version\n"); - - free (out); - { char *tmp; size_t tmplen; diff -Nru gsasl-2.0.1/tests/version.c gsasl-2.2.0/tests/version.c --- gsasl-2.0.1/tests/version.c 1969-12-31 18:00:00.000000000 -0600 +++ gsasl-2.2.0/tests/version.c 2022-08-20 08:53:21.000000000 -0500 @@ -0,0 +1,121 @@ +/* version.c --- Version handling self tests. + * Copyright (C) 2003-2022 Simon Josefsson + * + * This file is part of GNU SASL. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "config.h" + +#include /* printf */ +#include /* EXIT_SUCCESS */ +#include /* strcmp */ + +/* Get GSASL prototypes. */ +#include + +int +main (int argc, char *argv[]) +{ + int exit_code = EXIT_SUCCESS; + char *out = NULL; + int j; + unsigned gvn = GSASL_VERSION_NUMBER; + unsigned gvmmp = (GSASL_VERSION_MAJOR << 16) + + (GSASL_VERSION_MINOR << 8) + GSASL_VERSION_PATCH; + + printf ("GSASL_VERSION: %s\n", GSASL_VERSION); + printf ("GSASL_VERSION_MAJOR: %d\n", GSASL_VERSION_MAJOR); + printf ("GSASL_VERSION_MINOR: %d\n", GSASL_VERSION_MINOR); + printf ("GSASL_VERSION_PATCH: %d\n", GSASL_VERSION_PATCH); + printf ("GSASL_VERSION_NUMBER: %x\n", gvn); + printf ("(GSASL_VERSION_MAJOR << 16) + (GSASL_VERSION_MINOR << 8)" + " + GSASL_VERSION_PATCH: %x\n", gvmmp); + + j = asprintf (&out, "%d.%d.%d", GSASL_VERSION_MAJOR, + GSASL_VERSION_MINOR, GSASL_VERSION_PATCH); + if (j < 0) + { + printf ("asprintf failure: %d", j); + exit_code = EXIT_FAILURE; + out = NULL; + } + + if (out) + printf + ("GSASL_VERSION_MAJOR.GSASL_VERSION_MINOR.GSASL_VERSION_PATCH: %s\n", + out); + + printf ("gsasl_check_version (NULL): %s\n", gsasl_check_version (NULL)); + + if (!gsasl_check_version (GSASL_VERSION)) + { + printf ("FAIL: gsasl_check_version (GSASL_VERSION)\n"); + exit_code = EXIT_FAILURE; + } + + if (!gsasl_check_version ("1.0.1")) + { + printf ("FAIL: gsasl_check_version (1.0.1)\n"); + exit_code = EXIT_FAILURE; + } + + if (strcmp (GSASL_VERSION, gsasl_check_version (NULL)) != 0) + { + printf ("FAIL: strcmp (GSASL_VERSION, gsasl_check_version (NULL))\n"); + exit_code = EXIT_FAILURE; + } + + if (GSASL_VERSION_NUMBER != gvn) + { + printf ("FAIL: GSASL_VERSION_NUMBER != gvn\n"); + exit_code = EXIT_FAILURE; + } + + if (out) + { + if (!gsasl_check_version (out)) + { + printf ("FAIL: gsasl_check_version(%s)\n", out); + exit_code = EXIT_FAILURE; + } + + /* GSASL_VERSION may look like "1.0.4.10-b872" but the derived string + should be "1.0.4" anyway. */ + if (strncmp (GSASL_VERSION, out, strlen (out)) != 0) + { + printf ("FAIL: strncmp (GSASL_VERSION, %s, strlen (%s))\n", out, + out); + exit_code = EXIT_FAILURE; + } + + free (out); + } + + if (gsasl_check_version ("4711.42.23")) + { + printf ("FAIL: gsasl_check_version(4711.42.23)\n"); + exit_code = EXIT_FAILURE; + } + + if (gsasl_check_version ("UNKNOWN")) + { + printf ("FAIL: gsasl_check_version (UNKNOWN)\n"); + exit_code = EXIT_FAILURE; + } + + return exit_code; +} diff -Nru gsasl-2.0.1/.version gsasl-2.2.0/.version --- gsasl-2.0.1/.version 2022-07-15 10:53:44.000000000 -0500 +++ gsasl-2.2.0/.version 2022-09-03 09:59:23.000000000 -0500 @@ -1 +1 @@ -2.0.1 +2.2.0