libsvn_auth_gnome_keyring

Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix segfault when subversion is built with gnome keyring support and keyring

password lookup fails.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(password_get_gnome_keyring, password_set_gnome_keyring):

[in the SVN_HAVE_LIBSECRET version of these two functions]

Always initialize the output parameter, as required by the

svn_auth__password_get_t contract.

Found by: Jan Palus

Patch by: Jan Palus

me

Use libsecret to implement the GNOME Keyring provider by default

instead of libgnome-keyring. The GNOME project have deprecated

libgnome-keyring and libsecret is the preferred replacement. The old

implementation using libgnome-keyring can still be chosen at configure

time. Both implementations read and write passwords that can be used

by the other implementation.

The configure option '--with-gnome-keyring' now controls the new

implementation while the option '--with-old-gnome-keyring' controls

the previous implementation.

* build/ac-macros/libsecret.m4: New, provides --with-gnome-keyring.

* configure.ac: Change --with-gnome-keyring to --with-old-gnome-keyring

and disable by default.

* aclocal.m4: Include libsecret.m4.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c: Add new

libsecret implementation conditional on SVN_HAVE_LIBSECRET, make old

code conditional on SVN_HAVE_GNOME_KEYRING,

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Make already conditional

code depend on SVN_HAVE_LIBSECRET.

* subversion/include/svn_auth.h

(SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC,

SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_BATON): Deprecate.

* subversion/include/private/svn_cmdline_private.h

(svn_cmdline__auth_gnome_keyring_unlock_prompt): Deprecate.

* subversion/libsvn_subr/prompt.c

(svn_cmdline__auth_gnome_keyring_unlock_prompt): Make conditional.

* subversion/tests/libsvn_subr/auth-test.c

(test_platform_specific_auth_providers): Make already conditional

code depend on SVN_HAVE_LIBSECRET.

  1. … 8 more files in changeset.
Reverted r1658123 and r1658123.

See http://markmail.org/thread/ty6l7afzdxgfvvef

  1. … 3 more files in changeset.
[Reverted in r1658150]

Expose the Gnome keyring unlock prompt to the JavaHL C++ code.

(Exposing it to JavaHL itself is a different step where brane might

have better ideas)

* subversion/bindings/javahl/native/OperationContext.cpp

(OperationContext::getAuthBaton):

Hook gnome prompt if we have a prompter implementation.

* subversion/bindings/javahl/native/Prompter.cpp

(Prompter::get_gnome_keyring_unlock,

Prompter::gnome_keyring_unlock_prompt): New function.

* subversion/bindings/javahl/native/Prompter.h

(Prompter::get_gnome_keyring_unlock,

Prompter::gnome_keyring_unlock_prompt): New function.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(ensure_gnome_keyring_is_unlocked): Allow prompt func to not provide a

password, similar to our other credential callbacks. This makes it easier

for bindings to conditionally handle the prompt.

  1. … 3 more files in changeset.
Use synchronous Gnome kering API as it results in much shorter

code and pushes the event loop handling into the Gnome library.

This may resolve the threading issues in issue 3498.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(struct gnome_keyring_baton): Remove.

(callback_destroy_data_keyring, callback_done,

callback_get_info_keyring, callback_default_keyring): Remove.

(get_default_keyring_name, check_keyring_is_locked,

unlock_gnome_keyring): Use synchronous API.

Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

* subversion/tests/libsvn_fs/fs-test.c

* subversion/tests/libsvn_repos/repos-test.c

* subversion/tests/libsvn_subr/hashdump-test.c

* subversion/tests/libsvn_subr/mergeinfo-test.c

* subversion/tests/libsvn_subr/subst_translate-test.c

* subversion/tests/libsvn_wc/conflict-data-test.c

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/libsvn_wc/wc-test.c

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Kick off work on pkg-config support (issue #738, and also #4435).

pkg-config support allows API consumers on UNIX-like systems to link

to Subversion libraries without having to manually specify the correct

set of linker flags, including the particular flags for dependencies

required by a particular build of Subversion (bdb, serf, etc.).

pkg-config uses libsvn_foo.pc files which describe the set of flags

required to link to libsvn_foo.

See http://www.freedesktop.org/wiki/Software/pkg-config/ for more information.

Make gen-make.py produce .pc.in files for all Subversion libraries,

and make the configure script produce .pc files from these .pc.in files.

Dependency declarations and linker flags are based on information

parsed from build.conf.

Dependencies of Subversion which support pkg-config can be marked

as such in build.conf, allowing pkg-config to resolve them. The

name of the dependency's pkg-config script has to be specified

without the .pc extension, e.g.:

[gnome-keyring]

type = lib

external-lib = $(SVN_GNOME_KEYRING_LIBS)

pkg-config = gnome-keyring-1

Dependencies not aware of pkg-config are added to linker flags directly.

To illustrate, the generated libsvn_client.pc file on my system contains:

[[[

prefix=/home/stsp/svn/prefix/svn-trunk

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Name: libsvn_client

Description: Subversion Client Library

Version: 1.9.0

Required: apr-1

Required.private:

Libs: -L${libdir} -lsvn_wc -lsvn_ra -lsvn_delta -lsvn_diff -lsvn_subr

Cflags: -I${includedir}

]]]

There is no support for optional dependencies between Subversion libraries

yet, however. For instance, libsvn_client might or might not be linked to

libsvn_ra_serf. Such dependencies are currently omitted. Also, I'm not

sure yet what to do in cases where a dependency might be statically or

dynamically linked, e.g. sqlite.

The .pc files are not being installed yet. I don't want to expose these

files to systems using pkg-config until all outstanding issues are resolved.

* build/generator/gen_make.py

(Generator.write): Generate .pc.in files.

(Generator.write_pkg_config_dot_in_files): New helper function.

* build/generator/templates/pkg-config.in.ezt: New file, the .pc.in template.

* build.conf: apr, apr-util, serf, gnome-keyring, and sqlite support pkg-config.

There may be others (kwallet?) but I haven't investiged more yet.

I also haven't checked yet if all versions of these dependencies support

pkg-config. The most recent versions do support it.

* configure.ac

(SVN_APR_MAJOR_VERSION): Declare. APR's major version number is needed

to select the correct pkg-config script name (e.g. apr-1 or apr-2).

Generate .pc files from pc.in files.

* subversion/libsvn_auth_gnome_keyring, subversion/libsvn_auth_kwallet,

subversion/libsvn_client, subversion/libsvn_delta, subversion/libsvn_diff,

subversion/libsvn_fs, subversion/libsvn_fs_base, subversion/libsvn_fs_fs,

subversion/libsvn_fs_util, subversion/libsvn_fs_x, subversion/libsvn_ra,

subversion/libsvn_ra_local, subversion/libsvn_ra_serf,

subversion/libsvn_ra_svn, subversion/libsvn_repos, subversion/libsvn_subr,

subversion/libsvn_wc: Ignore generated .pc and .pc.in files.

  1. … 20 more files in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

subversion/tests/libsvn_fs/fs-test.c,

subversion/tests/libsvn_repos/repos-test.c,

subversion/tests/libsvn_subr/hashdump-test.c,

subversion/tests/libsvn_subr/mergeinfo-test.c,

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 more files in changeset.
* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_auth_kwallet/kwallet.cpp: Include headers from system-wide

directories before includig headers from the Subversion source tree.

Patch by: Raphael Kubo da Costa <rakuco@FreeBSD.org>

  1. … 1 more file in changeset.
Use svn_hash_gets and svn_hash_sets.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/editor.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_util/fs-util.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/mod_dav_svn/activity.c

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/merge.c

* subversion/mod_dav_svn/reports/update.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/help-cmd.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svndumpfilter/svndumpfilter.c

* subversion/svnlook/svnlook.c

* subversion/svnmucc/svnmucc.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/load_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

  1. … 70 more files in changeset.
Follow-up to r1386594:

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(): Include apr_strings.h for apr_pstrdup() declaration.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(get_default_keyring_name): The (currently single) caller of this function

forgot to free the result string allocated with strdup(). Make use of the

the existing (but previously unused!) pool argument to fix this.

Rename POOL to RESULT_POOL and allocate the result in it.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(password_set_gnome_keyring, password_set_gnome_keyring): Don't bother

figuring out the name of the default keyring and then not using it for

anything.

Followup to r1242759 which removed the explicit D-Bus calls from the

GNOME keyring code. D-Bus is still used but it's all in the external

libgnome-keyring.

* configure.ac: (gnome_keyring) Don't require D-Bus.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (): Remove include.

  1. … 1 more file in changeset.
Older versions of glib don't have g_log_set_default_handler and

the undefined symbol doesn't stop the build but does cause the

keyring library to silently fail to load at runtime.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(log_noop): Make conditional.

(init_gnome_keyring): Make g_log_set_default_handler conditional.

Rename and redocument some private functions whose utility has grown

beyond the scope of their original refactored usage.

* subversion/include/private/svn_auth_private.h

(svn_auth__simple_creds_cache_get): Renamed (and redocumented) from

svn_auth__simple_first_creds_helper(). Callers updated.

(svn_auth__simple_creds_cache_set: Renamed (and redocumented) from

svn_auth__simple_save_creds_helper(). Callers updated.

(svn_auth__ssl_client_cert_pw_cache_get): Renamed (and redocumented) from

svn_auth__ssl_client_cert_pw_file_first_creds_helper(). Callers updated.

(svn_auth__ssl_client_cert_pw_cache_set): Renamed (and redocumented) from

svn_auth__ssl_client_cert_pw_file_save_creds_helper(). Callers updated.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

* subversion/libsvn_subr/macos_keychain.c,

* subversion/libsvn_subr/gpg_agent.c,

* subversion/libsvn_subr/win32_crypto.c,

* subversion/libsvn_subr/simple_providers.c,

* subversion/libsvn_auth_kwallet/kwallet.cpp

Track function renames.

  1. … 7 more files in changeset.
Fix issues 4112, GNOME keyring --non-interactive prevents passwords on

disk, and 4110, open KDE wallet not used when --non-interactive. This

also delays any GNOME unlock prompt until the keyring is accessed so

matching the KDE behvaiour.

* subversion/include/private/svn_auth_private.h

(svn_auth__password_get_t, svn_auth__simple_password_get): Add boolean

parameter, return svn_error_t.

(svn_auth__simple_password_get, svn_auth__simple_password_set,

svn_auth__ssl_client_cert_pw_get,

svn_auth__ssl_client_cert_pw_set): Adjust to match new prototype.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(ensure_gnome_keyring_is_unlocked): New, code factored from

functions such as simple_gnome_keyring_first_creds.

(password_get_gnome_keyring, password_set_gnome_keyring): New

prototype, do unlocked check here.

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds,

ssl_client_cert_pw_gnome_keyring_first_creds,

ssl_client_cert_pw_gnome_keyring_save_creds): Don't do unlocked check.

* subversion/libsvn_auth_kwallet/kwallet.cpp

(kwallet_password_get, kwallet_password_set): Adjust to match new

prototype, allow non-interactive access if wallet is unlocked.

* subversion/libsvn_subr/simple_providers.c

(svn_auth__simple_password_get, svn_auth__simple_password_set,

svn_auth__simple_first_creds_helper,

svn_auth__simple_save_creds_helper): Adjust to match new prototype.

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

(svn_auth__ssl_client_cert_pw_get, svn_auth__ssl_client_cert_pw_set,

svn_auth__ssl_client_cert_pw_file_first_creds_helper,

svn_auth__ssl_client_cert_pw_file_save_creds_helper): Adjust to match

new prototype.

* subversion/libsvn_subr/win32_crypto.c

(windows_password_encrypter, windows_password_decrypter,

windows_ssl_client_cert_pw_encrypter,

windows_ssl_client_cert_pw_decrypter): Adjust to match new prototype.

* subversion/libsvn_subr/macos_keychain.c

(keychain_password_set, keychain_password_get): Adjust to match new

prototype.

* subversion/libsvn_subr/gpg_agent.c

(password_get_gpg_agent, password_set_gpg_agent): Adjust to match new

prototype.

  1. … 7 more files in changeset.
My reading of K&R indicates that free'ing a NULL pointer is a no-op, so

let's stop manually checking for that case.

Found by: Philipp Kloke <philipp.kloke@web.de>

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(callback_destroy_data_keyring, callback_default_keyring,

password_get_gnome_keyring, password_set_gnome_keyring):

Don't check for NULL before calling free().

Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.

* NOTICE:

Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 890 more files in changeset.
Scrub trailing whitespace throughout (see r35894).

  1. … 146 more files in changeset.
Correct an error code returned by the Gnome keyring authn module.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(ssl_client_cert_pw_gnome_keyring_save_creds): As this function is for saving

creds, use the *_NOT_SAVED error code rather than *_UNAVAILABLE.

Remove redundant type casts. Move declarations before code, for C'89

compliance.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(callback_destroy_data_keyring, callback_done, callback_get_info_keyring,

callback_default_keyring, password_get_gnome_keyring): Remove explicit

casts from (void *), which are unnecessary in C.

(get_default_keyring_name, check_keyring_is_locked, unlock_gnome_keyring):

Remove explicit casts from function pointers to their typedefs.

(password_get_gnome_keyring, password_set_gnome_keyring): Move declarations

before code, for C'89 compliance.

Fix issue #3498 - Subversion password stores freeze Eclipse

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds,

ssl_client_cert_pw_gnome_keyring_first_creds,

ssl_client_cert_pw_gnome_keyring_save_creds): If the keyring is locked

and we are in interactive mode but have no unlock prompt function, don't

throw a "GNOME Keyring is locked and we are non-interactive" error;

instead, continue without unlocking it, so that the unlocking may be

handled by the default GNOME Keyring unlock dialog box.

Stop spamming the console with gnome-keyring / dbus errors. 99% of the

time, when you get them, it's because you aren't using gnome-keyring at

all, so the plugin should just return silently. See for example

http://bugs.debian.org/542403 .

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(log_noop): New empty glib callback function.

(init_gnome_keyring): Register default log callback with glib.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds,

ssl_client_cert_pw_gnome_keyring_first_creds,

ssl_client_cert_pw_gnome_keyring_save_creds):

Fix some messages ("s/\([[:alnum:]]\) \([[:alnum:]]\)/\1 \2/g").

Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.

* LICENSE: New.

* COPYING,

subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 881 more files in changeset.
Follow up r38223.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds):

Remove wrapping error inside SVN_ERR which accidently crept in the

commit.

(ssl_client_cert_pw_gnome_keyring_save_creds,

ssl_client_cert_pw_gnome_keyring_first_creds): Formatting tweak

only, no functional change.

Follow up r38222.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds

ssl_client_cert_pw_gnome_keyring_first_creds

ssl_client_cert_pw_gnome_keyring_save_creds): Throw an error if the

default GNOME Keyring is locked and we are non-interactive.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(password_get_gnome_keyring, password_set_gnome_keyring): Remove

check for non interactivity, since we do it elsewhere.

Follow up r37322.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

(simple_gnome_keyring_first_creds, simple_gnome_keyring_save_creds,

ssl_client_cert_pw_gnome_keyring_first_creds,

ssl_client_cert_pw_gnome_keyring_save_creds): Remove unnecessary variable

'unlocked', instead check directly based on the function return value.

Suggested by: rhuijben