Checkout Tools
  • last updated 5 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1464123 is being indexed.

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

(filename_with_control_chars): Use a repository named

"test-repo-..." rather than "test-repos-...", as that's our

convention, and that's what's matched in svn:ignores.

Remove the ability of svn_repos_authz_read2() to handle repos-relative URLs.

This cleans up a case where it was impossible to canonicalize the paths

being passed into it and also ends up removing the need to pass repos_root

into it. If callers want to support repos-relative URLs then they should

resolve them into absolute file URLs and canonicalize them prior to calling


* subversion/include/svn_repos.h

(svn_repos_authz_read2): Remove repos_root argument and adjust documentation

to account for no longer accepting repos-root URLs. Also change "a file"

in the documented formats for path to a dirent to be more precise.

* subversion/libsvn_repos/authz.c

(authz_retrieve_config_repo, svn_repos__authz_read, svn_repos_authz_read2):

Remove repos_root parameter and support for repos-relative URLs in path.

* subversion/libsvn_repos/deprecated.c

(svn_repos_authz_read): Adjust call of svn_repos__authz_read().

* subversion/libsvn_repos/repos.h

(svn_repos_authz_read): Adjust declaration and documentation to match the

removal of repos_root and support for repos-relative URLs.

* subversion/mod_authz_svn/mod_authz_svn.c

(canonicalize_access_file): Adjust comment about why we are not canonicalizing


(get_access_conf): When access_file is a repos-relative URL resolve and

canonicalize it before calling svn_repos_authz_read2().

* subversion/svnserve/serve.c

(canonicalize_access_file): Change access_file to an arginout and return

an svn_error_t so that we can resolve and canonicalize repos-relative


(load_authz_config): Adjust calls to canonicalize_access_file() due to

above changes.

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

(in_repo_authz, in_repo_groups_authz): Remove repos-relative URL tests

and convert still needed tests that were using repos-relative URls to

absolute URLs.

* tools/server-side/svnauthz.c

(get_authz): Fix call to svn_repos_authz_read2() to match above changes.

  1. … 7 more files in changeset.
Reject paths containing control characters at the repos layer.

Newly added paths are checked by the repos commit editor, and rejected

if they contain control characters.

Related to issue #4340.

* subversion/libsvn_repos/commit.c

(illegal_path_escape): New, copied from libsvn_subr/path.c.

Going forward, we could make this function public in libsvn_subr.

But a static copy in this file will make backports easier for now.

(check_cntrl): New, based on svn_path_check_valid().

(add_file_or_directory): Reject paths which contain control characters.

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

(filename_with_control_chars): New test.

(test_funcs): Add new test.

  1. … 1 more file in changeset.
Remove the test for issue #4340, "fs layer should reject filenames with

trailing \n", which changed its focus from the repos layer to the FS layer.

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

(filename_trailing_newline): Remove.

(test_funcs): Remove filename_trailing_newline test from this list.

Follow-up to r1461535:

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

(filename_trailing_newline): Tweak this test to verify behaviour of

the repos layer, not the FS layer. Current consensus seems to be that

the FS API should allow such names, and the repos layer should reject

them. So expect a commit of the transaction via the repos API to fail,

rather than expecting the FS layer to reject the creation of filenames

with trailing newlines in transactions.

Add an XFAIL test for issue 4340, "repos layer should reject filenames with

trailing \n".

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

(filename_trailing_newline, test_funcs): New test.

The new (1.8) zero_copy_limit parameter in svn_repos_begin_report3

can only be used under certain circumstances. Document those.

Since we use that interface at our RA layers only, the preconditions

are fulfilled. However, our tests do create some things with this

API and this patch disables the zero copy optimization for those.

* subversion/include/svn_repos.h

(svn_repos_begin_report3): mention limitation on zero_copy_limit

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

(reporter_depth_exclude): make our tests comply to that limitation

  1. … 1 more file in changeset.
Allow svn_ra_get_file_revs2() and svn_repos_get_file_revs2() to report file

revisions backwards. This to allow optimizing 'svn blame' in a future

Subversion release without having to wait for yet another server upgrade

to support this new feature.

* subversion/include/svn_ra.h

(svn_ra_get_file_revs2): Update documentation.

* subversion/include/svn_repos.h

(svn_repos_get_file_revs2): Update documentation.

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_get_file_revs2): Update comment. Detect reversed arguments,

which would originally just return an error or no revisions..

and in that case reverse the revision array before walking it.

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

(test_get_file_revs): Extend test to also walk the revisions backwards.

  1. … 3 more files in changeset.
Fix test failures after r1440023.

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

(in_repo_authz, in_repo_groups_authz): Expect SVN_ERR_ILLEGAL_TARGET

for non-existant paths in the repo.

Introduce AuthzSVNGroupsFile option to allow Subversion configurations with

groups stored in a separate file.

* subversion/include/svn_config.h


* subversion/include/svn_repos.h


(svn_repos_authz_read2): New optional 'groups_path' parameter.

(svn_repos_authz_parse): New optional 'groups_stream' parameter.

* subversion/libsvn_repos/authz.c

(authz_copy_group): Introduce a callback for groups copying.

(authz_copy_groups): Introduce a helper routine to copy groups from a

specified config to the authz structure. Report error if the

destination authz already contains group definitions.

(svn_repos__authz_read): Support the 'groups_path' parameter. If it is set,

parse the corresponding groups config and copy the groups to the

resulting authz structure using authz_copy_groups.

(svn_repos_authz_read2): New optional 'groups_path' parameter.

(svn_repos_authz_read): Support the 'groups_stream' parameter. If it is

set, parse the corresponding groups config stream and copy the groups

to the resulting authz structure.

* subversion/libsvn_repos/deprecated.c

(svn_repos_authz_read): Pass NULL as the 'groups_path' parameter when

calling svn_repos__authz_read.

* subversion/libsvn_repos/repos.h

(svn_repos__authz_read): New optional 'groups_path' parameter.

* subversion/libsvn_repos/repos.с

(create_conf): Explain the purpose of the new groups-db option.

* subversion/mod_authz_svn/mod_authz_svn.c

(authz_svn_config_rec): Add the 'groups_file' config member.

(AuthzSVNGroupsFile_cmd): Introduce a function to canonicalize the groups

file config value.

(authz_svn_cmds): Add the AuthzSVNGroupsFile option.

(get_access_conf): Log the path to the groups file if it is set. Pass the

groups file path to svn_repos_authz_read2.

* subversion/svnserve/serve.c

(canonicalize_access_file): New function. Factored out from

load_authz_config to be reused for the groups file.

(load_authz_config): Retrieve the SVN_CONFIG_OPTION_GROUPS_DB from the

svnserve config. Canonicalize this value if it is present and pass

it to svn_repos_authz_read2 when loading the authz configuration.

* tools/server-side/svnauthz.c

(svnauthz_opt_state): Add the 'groups_file' member.

(svnauthz__cmdline_options_t): Add the svnauthz__groups_file enum member.

(options_table): Add the --groups-file option and short description for it.

(cmd_table): Update the documentation to reflect the added

svnauthz__groups_file option.

(read_file_contents): New function. Factored out from get_authz_from_txn to

be reused for the groups file contents.

(get_authz_from_txn): Use read_file_contents for both authz and groups

files. Pass the resulting contents to svn_repos_authz_parse.

(get_authz): Pass the groups file from options to get_authz_from_txn

or svn_repos_authz_read2 depending on whether transaction option is set.

(canonicalize_access_file): New function. Factored out from

sub_main to be reused for the groups file.

(sub_main): Grab the groups file option from the command line, canonicalize

it if it present and pass it further as a part of the opt_state.

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

(authz-get-handle, in_repo_authz): Pass NULL as the 'groups_path' parameter

when calling svn_repos_authz_read2. Pass NULL as the 'groups_stream'

parameter when calling svn_repos_authz_parse.

(authz_groups_get_handle): Introduce the helper routine for tests similiar

to authz_get_handle but supporting a separate groups file.

(groups_authz, in_repo_groups_authz): Add.

* subversion/tests/cmdline/

(authz_svnserve_groups): Add the access test for svnserve configured with

a separate groups file.

(test_list): Add a reference to the new test.

* subversion/tests/cmdline/svntest/

(write_restrictive_svnserve_conf_with_groups): New method. Creates a

default restrictive svnserve configuration with a separate groups file.

(write_groups_file): Introduce a helper method to write the groups file

in tests.

* subversion/tests/cmdline/svntest/

(_set_name): Store the default path to the groups file in the

'Sandbox.groups_file' variable.

* subversion/mod_authz_svn/INSTALL

(II.1): Describe usage of AuthzSVNGroupsFile directive.

Patch by: Evgeny Kotkov <evgeny.kotkov{_AT_}>

  1. … 13 more files in changeset.
Fix compilation warning.

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

(prop_validation): Use '\xff' instead of '(char) 0xff'.

Follow-up to r1437354: Add test for svn_repos_delete().

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

(test_delete_repos): New test for svn_repos_delete().

(test_funcs): Add new test to list.

Suggested by: philip

Add a svn_repos_authz_parse() function which parses an authz config from

a stream.

This also switches most testing of the authz code to using streams, which

should result in a tiny bit faster testing since we're not needing to

do disk I/O.

* subversion/libsvn_repos/authz.c

(svn_repos__authz_read): Factor out walking the config for authz errors

into ...

(authz_validate): New function.

(svn_repos_authz_parse): New function.

* subversion/include/svn_repos.h

(svn_repos_authz_parse): New function.

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

(authz_get_handle): Adjust to allow authz conf to be optionally written

to a in memory stream rather than always going to a temp file.

(authz): Change most of the tests to use in memory streams and duplicate

one test so that the code that is unique to the file path is excercised.

(commit_editor_authz,issue_4060): Use in memory streams.

  1. … 2 more files in changeset.
* subversion/tests/libsvn_repos/repos-test.c (authz): Remove unused variable.

Merge the in-repo-authz branch back to trunk.


  1. … 23 more files in changeset.
Refactor some test code to make it easier to extend.

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

(nls_receiver_baton, format_segment, nls_receiver, check_location_segments):

Add doc strings and constify the expected result pointers.

(location_segment_test_t): New struct.

(node_location_segments): Move the test data into an array and iterate

over it.

Make the unit test for svn_repos_node_location_segments() stronger.

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

(strcmp_null): New function.

(nls_receiver): Check 'range_end' and 'path' as well as 'range_start'.

(node_location_segments): Fix two typos in the expected paths.

Merge the remainder of the 10Gb branch into /trunk.

This patch revs APIs and touches the UI. For a detailed

description of each merged revision see the respective

log entry.

* Implement zero-copy code path

r1388102: extend the FS vtable. Add a function that allows for

processing file content in-situ.

r1388195: Rev reporter API and attempt zero-copy reporting for

files contents below a given threshold

r1388202: Add --zero-copy-limit parameter to svnserve and pass it

down to the reporter

r1388205: update remaining callers to use svn_repos_begin_report3.

r1388211: rename *_try_process_file_content *_try_process_file_contents.

r1388362: Bugfix: try_process_file_contents code plus a handful of bugs

masked by the first.

r1388640: Bugfix: off-by-one in contents size.

* Implement delayed checking for client-side abortion

r1388375: Extend aready rev'ed APIs and add --error-check-internal

option to svnserve.

* Tune ra_svn TX buffer handling

r1388643: tune ra_svn TX buffer usage by reducing the number of copy

operations etc.

r1388807: page-aligned I/O buffers.

* Finalize APIs and UI

r1390409: replace --zero-copy-limit and --error-check-internal with a

single option (--client-speed) at UI level but keep internal

APIs as they are

r1390414: replace help string for the --client-speed parameter.

r1390419: UI typo

r1390955: Schedule API changes for 1.8 instead of 1.9.

  1. … 25 more files in changeset.
Silence GCC warnings when assigning to chars (-Wconversion).

In all these cases, the value may never exceed the [-128,127]

range for char.

* subversion/libsvn_delta/svndiff.c

(window_handler): explicitly cast to char

* subversion/libsvn_fs_fs/key-gen.c

(svn_fs_fs__next_key): prevent conversion to int

* subversion/libsvn_fs_fs/temp_serializer.c

(encode_number): explicitly cast to char

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_write_string, svn_ra_svn_write_cstring): ditto

* subversion/libsvn_subr/base64.c

(decode_group): ditto

* subversion/libsvn_subr/checksum.c

(svn_checksum_parse_hex): same here

* subversion/libsvn_subr/dirent_uri.c

(canonicalize_to_lower, canonicalize_to_upper): here

* subversion/mod_dav_svn/repos.c

(get_entry): and here

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

(prop_validation): char

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

(generate_test_bytes): explicitly cast to char

  1. … 9 more files in changeset.
Merge all changes (-r1298521-1326293) from branches/revprop-cache to trunk

and resolve minor conflicts.

  1. … 25 more files in changeset.
Add a regression test for issue 4060, spurious authz denied when

svnserve root is a repository.

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

(issue_4060): New test.

(test_funcs): Add new test.

One more attempt to fix the Windows build in followup to r1197217.

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

(action_t): Change enum values, to avoid a possible previously defined symbol


(test_path_authz, commit_editor_authz): Update references.

Make the windows compiler happy.

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

(action_t): New, broken out of...

(authz_path_action_t): ...this.

Rewrite repos test 8 to adhere to the proper editor semantics, namely not

reusing a delta editor once it has emitted an error, and accounting for the

possibilities of delayed errors.

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

(authz_path_action_t): New.

(get_dir_baton, get_file_baton): New.

(test_path_authz): New.

(commit_editor_authz): Largely gut, and replace with a table of actions

and outcomes, and then iterate over that table.

Path-based authz: error out on non-canonical fspaths in the input. (We

already canonicalize fspaths passed to the API for access testing.)

This is an incompatible change: some previously-accepted authz files

will now cause visible errors. However, before this change the semantics

of such authz files might have been different from what a casual gloss

over them would have suggested.

Found by: Malte Schirmacher

(thana on IRC)

* subversion/libsvn_repos/authz.c

(authz_validate_section): Validate the fspath part of the section name.

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

(authz): Add a basic regression test for this.

  1. … 1 more file in changeset.
Adjust references to pre-ASF-migration revisions by the +840074 offset.

Did *.h, *.c, and *.py files this go-round. Was thinking of doing everything

in five minutes, until I saw CHANGES (which needs a conversion script unless

you enjoy grunt work).

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_delta/compose_delta.c

* subversion/libsvn_subr/error.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_wc/diff.c

* subversion/svnserve/serve.c

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

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

* tools/buildbot/master/

* tools/dev/

  1. … 16 more files in changeset.
Remove deprecation warnings in various tests. We explicitly allow tests

to use deprecated APIs as a way of spot-testing the backward compat wrappers.

* subversion/tests/libsvn_subr/target-test.c,





Define SVN_DEPRECATED before including any Subversion headers.

  1. … 4 more files in changeset.
Once and for all, name all our anonymous struct/enum typedefs.

Follows up on r1040058, and with thanks to Danny Trebbien.

* everywhere:

Change 'typedef struct {} foo_t;' to 'typedef struct foo_t {} foo_t;'.

* subversion/libsvn_ra_serf/fake_sspi.h

(PSecurityFunctionTable, SecurityFunctionTable):

Manually effect the same change in the single pointer-to-struct typedef.

  1. … 95 more files in changeset.
Follow up to r1053174, replace all SVN_ERR_ASSERT() with SVN_TEST_ASSERT()

so assertions do not cause core dumps.

Suggested by: danielsh

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

* subversion/tests/libsvn_fs/locks-test.c,

* subversion/tests/libsvn_fs_base/changes-test.c,

* subversion/tests/libsvn_fs_base/fs-base-test.c,

* subversion/tests/libsvn_fs_fs/fs-pack-test.c,

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


  1. … 5 more files in changeset.
Add assertions in all tests that all the commits done with

svn_fs_commit_txn() and svn_repos_fs_commit_txn() return a valid

revision number, per their contract that this is the true indicator of

a commits success.

The only code not touched is test_commit_txn() in fs-test.c, which is

handled in the next commit.

* subversion/tests/libsvn_client/client-test.c,

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

* subversion/tests/libsvn_fs/locks-test.c,

* subversion/tests/libsvn_fs_base/changes-test.c,

* subversion/tests/libsvn_fs_base/fs-base-test.c,

* subversion/tests/libsvn_fs_fs/fs-pack-test.c,

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

* subversion/tests/svn_test_fs.c:

Follow any call to svn_fs_commit_txn() and svn_repos_fs_commit_txn()

that is expected to succeed with an assertion that the returned

revision number is valid, likewise, assert the reverse, that a

failed commit returns an invalid revision number.

  1. … 7 more files in changeset.