]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libcli:security:sddl_decode_access allows spaces between flags
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sun, 23 Apr 2023 00:36:35 +0000 (12:36 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 28 Apr 2023 02:15:36 +0000 (02:15 +0000)
because Windows does.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
libcli/security/sddl.c
selftest/knownfail.d/sddl

index 7692be8a0e18996de5ac63ea288ba96241b86d48..8e67f90bf865188a7965b74b612d93673b12aeaf 100644 (file)
@@ -381,11 +381,23 @@ static bool sddl_decode_access(const char *str, uint32_t *pmask)
        }
        /* It's not a positive number, so we'll look for flags */
 
-       while ((str[0] != '\0') && isupper(str[0])) {
+       while ((str[0] != '\0') &&
+              (isupper((unsigned char)str[0]) || str[0] == ' ')) {
                uint32_t flags = 0;
                size_t len = 0;
                bool found;
-
+               while (str[0] == ' ') {
+                       /*
+                        * Following Windows we accept spaces between flags
+                        * but not after flags. Not tabs, though, never tabs.
+                        */
+                       str++;
+                       if (str[0] == '\0') {
+                               DBG_WARNING("trailing whitespace in flags "
+                                           "- '%s'\n", str0);
+                               return false;
+                       }
+               }
                found = sddl_map_flag(
                        ace_access_mask, str, &len, &flags);
                found |= sddl_map_flag(
index 5b09c474a7e01479e6ca139a44c18b49fff63364..cf38e28bb4a5e3dcd180d542626d0463de4b32dd 100644 (file)
@@ -1,6 +1,3 @@
-^samba.tests.sddl.+.SddlNonCanonical.test_sddl_D:.A;;.GA;;;LG..none
-^samba.tests.sddl.+.SddlNonCanonical.test_sddl_D:AI.A;CI;RP.LCLO..RC;;;AU..none
-^samba.tests.sddl.+.SddlNonCanonical.test_sddl_D:AI.A;CI;RP.LCLORC;;;AU..none
 ^samba.tests.sddl.+.SddlWindowsFlagsAreDifferent.test_sddl_D:.A;;0x001f01ff;;;WD..A;;0x001f01ff;;;S-1.+S
 ^samba.tests.sddl.+.SddlWindowsFlagsAreDifferent.test_sddl_D:.A;;FA;;;WD..none
 ^samba.tests.sddl.+.SddlWindowsFlagsAreDifferent.test_sddl_O:S-1-5-21-2212615479-2695158682-210137546.+: