You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by sv...@apache.org on 2019/03/06 04:00:12 UTC
svn commit: r1854883 - in /subversion/branches/1.10.x: ./ STATUS
subversion/libsvn_repos/authz_parse.c
subversion/tests/cmdline/svnauthz_tests.py
Author: svn-role
Date: Wed Mar 6 04:00:12 2019
New Revision: 1854883
URL: http://svn.apache.org/viewvc?rev=1854883&view=rev
Log:
Merge the r1851676 group from trunk:
* r1851676, r1851687, r1851791
Allow the use of empty groups in authz rules.
Justification:
Fixes regression from 1.9.x. Does not affect authz file semantics.
Notes:
- r1851676 adds a regression test.
- r1851687 fixes the bug and extends the test.
- r1851791 refers to issue #4802.
Votes:
+1: brane, julianfoad, stsp
Modified:
subversion/branches/1.10.x/ (props changed)
subversion/branches/1.10.x/STATUS
subversion/branches/1.10.x/subversion/libsvn_repos/authz_parse.c
subversion/branches/1.10.x/subversion/tests/cmdline/svnauthz_tests.py
Propchange: subversion/branches/1.10.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 6 04:00:12 2019
@@ -103,4 +103,4 @@
/subversion/branches/verify-at-commit:1462039-1462408
/subversion/branches/verify-keep-going:1439280-1546110
/subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1817837,1817856,1818577-1818578,1818584,1818651,1818662,1818727,1818801,1818803,1818807,1818868,1818871,1819036-1819037,1819043,1819049,1819052,1819093,1819146,1819162,1819444,1819556-1819557,1819603,1819804,1819911,1820044,1820046-1820047,1820518,1820627,1820718,1820778,1821183,1821224,1821621,1821678,1822401,1822587,1822591,1822996,1823202-1823203,1823211,1823327,1823791,1823966,1823989,1824033,1825024,1825045,1825215,1825266,1825306,1825709,1825711,1825721,1825736,1825778,1825783,1825787-1825788,1825979,1826720-1826721,1826747,1826811,1826814,1826877,1826907,1826971,1827105,1827114,1827191,1827562,1827574,1827670,1828613,1829012,1829015,1829241,1829260,1829344,1830083,1830882-1830883,1830885,1830900-1830901,1831110,1831112,1831540,1833465,1833621,1833836,1833842,1833864,1833866,1833895,1833897,1833899,1833901,1835760,1836306,1836762,1836802,1836960,1836963,1836968,1836976,1837037,1837790,1838813,1839662,1839703,1839734,1839739,1840991,1842260,1842262,1842264,184
3888,1844882,1844987,1845204,1845261,1845408,1845555,1845577,1846299,1846403,1846406,1846704,1847181-1847182,1847188,1847264,1847572,1847596,1847598,1847697,1847922,1847924,1847946,1850348,1850621
+/subversion/trunk:1817837,1817856,1818577-1818578,1818584,1818651,1818662,1818727,1818801,1818803,1818807,1818868,1818871,1819036-1819037,1819043,1819049,1819052,1819093,1819146,1819162,1819444,1819556-1819557,1819603,1819804,1819911,1820044,1820046-1820047,1820518,1820627,1820718,1820778,1821183,1821224,1821621,1821678,1822401,1822587,1822591,1822996,1823202-1823203,1823211,1823327,1823791,1823966,1823989,1824033,1825024,1825045,1825215,1825266,1825306,1825709,1825711,1825721,1825736,1825778,1825783,1825787-1825788,1825979,1826720-1826721,1826747,1826811,1826814,1826877,1826907,1826971,1827105,1827114,1827191,1827562,1827574,1827670,1828613,1829012,1829015,1829241,1829260,1829344,1830083,1830882-1830883,1830885,1830900-1830901,1831110,1831112,1831540,1833465,1833621,1833836,1833842,1833864,1833866,1833895,1833897,1833899,1833901,1835760,1836306,1836762,1836802,1836960,1836963,1836968,1836976,1837037,1837790,1838813,1839662,1839703,1839734,1839739,1840991,1842260,1842262,1842264,184
3888,1844882,1844987,1845204,1845261,1845408,1845555,1845577,1846299,1846403,1846406,1846704,1847181-1847182,1847188,1847264,1847572,1847596,1847598,1847697,1847922,1847924,1847946,1850348,1850621,1851676,1851687,1851791
Modified: subversion/branches/1.10.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.10.x/STATUS?rev=1854883&r1=1854882&r2=1854883&view=diff
==============================================================================
--- subversion/branches/1.10.x/STATUS (original)
+++ subversion/branches/1.10.x/STATUS Wed Mar 6 04:00:12 2019
@@ -87,17 +87,6 @@ Veto-blocked changes:
Approved changes:
=================
- * r1851676, r1851687, r1851791
- Allow the use of empty groups in authz rules.
- Justification:
- Fixes regression from 1.9.x. Does not affect authz file semantics.
- Notes:
- - r1851676 adds a regression test.
- - r1851687 fixes the bug and extends the test.
- - r1851791 refers to issue #4802.
- Votes:
- +1: brane, julianfoad, stsp
-
* r1853761
Fix an "unused static function" warning in non-maintainer mode builds.
Justification:
Modified: subversion/branches/1.10.x/subversion/libsvn_repos/authz_parse.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.10.x/subversion/libsvn_repos/authz_parse.c?rev=1854883&r1=1854882&r2=1854883&view=diff
==============================================================================
--- subversion/branches/1.10.x/subversion/libsvn_repos/authz_parse.c (original)
+++ subversion/branches/1.10.x/subversion/libsvn_repos/authz_parse.c Wed Mar 6 04:00:12 2019
@@ -1011,7 +1011,8 @@ close_section(void *baton, svn_stringbuf
/* Add a user to GROUP.
- GROUP is never internalized, but USER always is. */
+ GROUP is never internalized, but USER always is.
+ Adding a NULL user will create an empty group, if it doesn't exist. */
static void
add_to_group(ctor_baton_t *cb, const char *group, const char *user)
{
@@ -1022,7 +1023,8 @@ add_to_group(ctor_baton_t *cb, const cha
members = svn_hash__make(cb->authz->pool);
svn_hash_sets(cb->expanded_groups, group, members);
}
- svn_hash_sets(members, user, interned_empty_string);
+ if (user)
+ svn_hash_sets(members, user, interned_empty_string);
}
@@ -1038,8 +1040,15 @@ expand_group_callback(void *baton,
ctor_baton_t *const cb = baton;
const char *const group = key;
apr_array_header_t *members = value;
-
int i;
+
+ if (0 == members->nelts)
+ {
+ /* Create the group with no members. */
+ add_to_group(cb, group, NULL);
+ return SVN_NO_ERROR;
+ }
+
for (i = 0; i < members->nelts; ++i)
{
const char *member = APR_ARRAY_IDX(members, i, const char*);
@@ -1169,10 +1178,18 @@ array_insert_ace(void *baton,
SVN_ERR_ASSERT(ace->members == NULL);
ace->members = svn_hash_gets(iab->cb->expanded_groups, ace->name);
if (!ace->members)
- return svn_error_createf(
- SVN_ERR_AUTHZ_INVALID_CONFIG, NULL,
- _("Access entry refers to undefined group '%s'"),
- ace->name);
+ {
+ return svn_error_createf(
+ SVN_ERR_AUTHZ_INVALID_CONFIG, NULL,
+ _("Access entry refers to undefined group '%s'"),
+ ace->name);
+ }
+ else if (0 == apr_hash_count(ace->members))
+ {
+ /* TODO: Somehow emit a warning about the use of an empty group. */
+ /* An ACE for an empty group has no effect, so ignore it. */
+ return SVN_NO_ERROR;
+ }
}
APR_ARRAY_PUSH(iab->ace_array, authz_ace_t) = *ace;
Modified: subversion/branches/1.10.x/subversion/tests/cmdline/svnauthz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.10.x/subversion/tests/cmdline/svnauthz_tests.py?rev=1854883&r1=1854882&r2=1854883&view=diff
==============================================================================
--- subversion/branches/1.10.x/subversion/tests/cmdline/svnauthz_tests.py (original)
+++ subversion/branches/1.10.x/subversion/tests/cmdline/svnauthz_tests.py Wed Mar 6 04:00:12 2019
@@ -967,6 +967,33 @@ def svnauthz_inverted_selector_test(sbox
os.remove(authz_path)
+@Issue(4802)
+def svnauthz_empty_group_test(sbox):
+ "test empty group definition"
+
+ # build an authz file
+ authz_content = ("[groups]\n"
+ "group1 =\n"
+ "group2 = @group1\n"
+ "group3 = @group2, user\n"
+
+
+ "[A:/]\n"
+ "@group1 = rw\n"
+ "@group2 = rw\n"
+ "@group3 = r\n")
+
+ (authz_fd, authz_path) = tempfile.mkstemp()
+ svntest.main.file_write(authz_path, authz_content)
+
+ svntest.actions.run_and_verify_svnauthz(
+ [], None, 0, False, 'validate', authz_path)
+
+ svntest.actions.run_and_verify_svnauthz(
+ 'r', None, 0, False, 'accessof',
+ '--repository', 'A', '--username', 'user', authz_path)
+
+
########################################################################
# Run the tests
@@ -986,6 +1013,7 @@ test_list = [ None,
svnauthz_compat_mode_file_test,
svnauthz_compat_mode_repo_test,
svnauthz_inverted_selector_test,
+ svnauthz_empty_group_test,
]
if __name__ == '__main__':