Checkout Tools
  • last updated 19 mins ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 874306 is being indexed.

Fix out-of-bounds-read issue.

Suggested by: philip

* subversion/libsvn_subr/dirent_uri.c

(canonicalize): check bounds before reading from target


Follow-up to r34222:

Use apr_pool_cleanup_register() to register kwallet_terminate() to be called

when the pool is destroyed.

* subversion/libsvn_auth_kwallet/kwallet.cpp

(kwallet_terminate): Update.

(kwallet_password_get, kwallet_password_set): Call


(kwallet_simple_provider, kwallet_ssl_client_cert_pw_provider): Update.

Suggested by: rhuijben

* subversion/include/svn_dirent_uri.h

(svn_dirent_is_absolute, svn_dirent_is_root): Use examples in canonical

format for function documentation. (Remove \\?\ examples as these are not

generic supported)

* subversion/libsvn_subr/dirent_uri.c

(svn_dirent_is_root): Minor comment update

Revert r34223 and r34221.

Suggested by: rhuijben

French translation update for r34227.

* subversion/po/fr.po: po-update, new and fuzzy fixed.

Store configuration in 'parameters' of authentication baton when using

svn:// protocol.

* subversion/libsvn_ra_svn/client.c

(ra_svn_open): Store configuration in 'parameters' of authentication baton.

Don't try to open wallet if opening of wallet previously failed.

* subversion/libsvn_auth_kwallet/kwallet.cpp

(get_wallet): Don't try to open wallet if 'parameters' of authentication

baton contain "kwallet-opening-failed". Store "kwallet-opening-failed" in

'parameters' of authentication baton if opening of wallet failed.

Extended svn:ignore properties.

* subversion/bindings/swig/python/libsvn_swig_py/


(svn:ignore): Added *.lo, *.la (obvious fix)

* www/tools_contrib.html: Add Chinese translation links.

* www/tools_contrib.zh.html: Chinese translation based on English r33959

Follow-up to r34221:

* subversion/svnsync/main.c

(main): Add 2 missing calls to svn_cmdline_terminate_auth_baton().

Properly terminate KWallet authentication providers.

* subversion/libsvn_auth_kwallet/kwallet.cpp

(kwallet_password_get, kwallet_password_set): Set "kwallet-initialized" in

'parameters' of authentication baton after opening wallet.

Delete some comments.

(kwallet_terminate): New function which disconnects Subversion from KWallet

and deletes pointer to wallet.

(kwallet_simple_provider, kwallet_ssl_client_cert_pw_provider): Initialize

terminate_provider() field with kwallet_terminate().

Implement termination of authentication providers.

* subversion/include/svn_auth.h

(svn_auth_provider_t.terminate_provider): New function which terminates

authentication provider.

* subversion/include/svn_cmdline.h

(svn_cmdline_terminate_auth_baton): New function which terminates all

authentication providers in authentication baton, which have non-NULL

terminate_provider() function.

* subversion/libsvn_subr/cmdline.c

(provider_set_t): New structure.

(svn_cmdline_terminate_auth_baton): New function which terminates all

authentication providers in authentication baton, which have non-NULL

terminate_provider() function.

* subversion/libsvn_subr/auth.c

(svn_auth_baton_t): Move from here ...

* subversion/include/private/svn_auth_private.h

(svn_auth_baton_t): ... to here.

* subversion/svn/main.c

(main): Call svn_cmdline_terminate_auth_baton().

* subversion/svnsync/main.c

(main): Call svn_cmdline_terminate_auth_baton().

To complete issue #2489, implement secure client certificate passphrase

caching for Windows CryptoAPI.

* subversion/include/private/svn_auth_private.h

(svn_auth__ssl_client_cert_pw_file_save_creds_helper): Update documentation

to note that it is used by the windows cryptoapi store.

(svn_auth__ssl_client_cert_pw_get): Add passphrase getter for use by the

Windows crypto provider.

(svn_auth__ssl_client_cert_pw_set): Add passphrase setter for use by the

Windows crypto provider.

* subversion/include/svn_auth.h

(svn_auth_get_windows_ssl_client_cert_pw_provider): Add Windows Crypto api

ssl client certificate passphrase provider.

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Handle requests for windows


* subversion/libsvn_subr/cmdline.c

(svn_cmdline_create_auth_baton): Register Windows Crypto api ssl client

certificate passphrase provider in the auth batton.

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

(simple_passphrase_get): Renamed to ...

(svn_auth__ssl_client_cert_pw_get): .... and remove static to allow reuse

by the Windows Crypto api implementation.

(simple_passphrase_set): Renamed to ...

svn_auth__ssl_client_cert_pw_set): ... and remove static to allow reuse

by the Windows Crypto api implementation.

(svn_auth__ssl_client_cert_pw_file_save_creds_helper): Mark that passphrases

saved by the Windows Crypto api are encrypted to remove the confirmation



ssl_client_cert_pw_file_save_credentials): Update references to


* subversion/libsvn_subr/win32_crypto.c





windows_ssl_client_cert_pw_provider): Add ssl client certificate passphrase

provider, forwarding caching and save requests to the file provider like

the simple provider.

(svn_auth_get_windows_ssl_client_cert_pw_provider): Add registration function

for the Windows Crypto api ssl client certificate passphrase provider.

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

(test_platform_specific_auth_providers): Test registration of the CryptoApi

provider via svn_auth_get_platform_specific_provider.

Follow-up to r34130:

Store pointer to wallet in parameters of authentication baton instead of using

global variable.

* subversion/libsvn_auth_kwallet/kwallet.cpp

(wallet): Delete.

(get_wallet): New.

(kwallet_password_get, kwallet_password_set): Use get_wallet().

Found by: gstein

Follow-up to r34085:

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Rename local constant.

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_create_auth_baton): Consistently use SVN_ERR() and improve


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

(SVNClient::getContext): Consistently use SVN_JNI_ERR() and improve


* subversion/tests/libsvn_subr/auth-test.c: Fix copyright year.

* www/index.html: Add Chinese FAQ translation links.

* www/faq.html: Add Chinese translation links.

* www/faq.zh.html: Chinese translation based on English r33959

Add missing NULL checks.

* subversion/libsvn_fs_fs/tree.c

(fs_file_checksum, apply_textdelta): Add missing NULL check.

Reviewed by: markphip



[Reverted in r34252.]

Follow up on r34178, getting rid of compiler warnings.

* subversion/include/svn_string.h,

* subversion/libsvn_subr/svn_string.c

(svn_cstring_join): Make first parameter STRINGS const.

* subversion/libsvn_fs_fs/tree.c


Fix excessive memory usage during commit in repositories with high

commit rates where the transactions modify nodes that have 20,000

siblings nodes.

* subversion/libsvn_wc/update_editor.c

(check_wc_root): Add a minimal doc string. Separate it from the large

documentation comment above it.

* subversion/include/svn_wc.h

(svn_wc_is_wc_root): Clarify the doc string: "WC root" might not mean what

you would think.

The new composition is cool... but let's have the stream closure take

precedence over the file removal error. It was the closure, after all,

that caused us to attempt the file removal.

* subversion/libsvn_subr/subst.c:

(svn_subst_copy_and_translate3): swap order of error precedence

If update or switch skips a conflicted tree, don't set the new

revision, URL, etc. on anything in the conflicted tree.

On updating or switching a prop-conflicted directory, skip the

directory and its descendants as we do for tree conflicts.

This is a follow-up to the skip-conflicts improvements in r34158.

* subversion/libsvn_wc/adm_ops.c

(tweak_entries): When finishing an update or switch, skip all

descendants of an excluded path.

* subversion/libsvn_wc/update_editor.c

(edit_baton): Note in comments the new (recursive) meaning of the

skipped_paths field. Rename current_tree_conflict to

current_conflict to reflect that it may contain the path of a

prop-conflicted dir.







make_editor): Track field renames.

(open_directory): Track field renames. Ensure that an existing

property conflict causes the dir tree to be skipped.

* subversion/tests/cmdline/


tree_conflicts_on_switch_3): Expected status shows old revision

numbers. Now consistent with the other tests.

* subversion/tests/cmdline/


update_conflicted): Expected output and status show improved

skipping and old revision numbers.



tree_conflicts_on_update_3): Expected status shows old revision

numbers. Now consistent with the other tests.

* subversion/tests/cmdline/svntest/

(deep_trees_skipping_on_update): Check status before the skipping,

too. Comment out a print statement (whoops).

Followup to r34205.

* subversion/libsvn_subr/error.c

(svn_error_compose_create): Simplify, simplify...

Suggested by: gstein

Followup to r34206.

* subversion/libsvn_subr/subst.c

(svn_subst_copy_and_translate3): Just return the composed error

chain as soon as you know it's non-NULL, rather than testing it

again later.

Suggested by: gstein

Simplify some cleanup logic.

* subversion/libsvn_subr/subst.c

(svn_subst_copy_and_translate3): Use new svn_error_compose_create()

to simply some logic.

Add a version of svn_error_compose that is SVN_NO_ERROR-tolerant.

* subversion/include/svn_error.h,

* subversion/libsvn_subr/error.c

(svn_error_compose_create): New function.

* subversion/libsvn_client/resolved.c

(svn_client_resolved): Move below svn_client_resolve() which it calls,

because that's the natural order in C.

Add some error-scenario cleanup logic, some of it needed since r34187

stopped using delete-on-close semantics for the tempfile, some of it

needed probably since the inception of this code.

* subversion/libsvn_subr/subst.c

(svn_subst_copy_and_translate3): Clean up streams and temporary

files in the error case. The lack of this code was causing

translate-tests 14 to leave two tempfile turds.