diff options
| author | David Mulder <dmulder@suse.com> | 2020-07-07 11:10:10 -0600 |
|---|---|---|
| committer | David Mulder <dmulder@samba.org> | 2020-08-06 16:38:36 +0000 |
| commit | 70a38eb5485bf82bf068aa3fbcb3cf799ff9ddff (patch) | |
| tree | ce6a40bc658da419babce94f80b1a53e66c3f0d6 /python | |
| parent | 88b6266168ace52f66ded9cedaea1a02eea6e441 (diff) | |
| download | samba-70a38eb5485bf82bf068aa3fbcb3cf799ff9ddff.tar.gz samba-70a38eb5485bf82bf068aa3fbcb3cf799ff9ddff.tar.bz2 samba-70a38eb5485bf82bf068aa3fbcb3cf799ff9ddff.zip | |
gpo: Test proper decoding of utf-16 inf files
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'python')
| -rw-r--r-- | python/samba/tests/gpo.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/python/samba/tests/gpo.py b/python/samba/tests/gpo.py index 41b499d5e0e..11ca65ab618 100644 --- a/python/samba/tests/gpo.py +++ b/python/samba/tests/gpo.py @@ -27,11 +27,13 @@ from tempfile import NamedTemporaryFile, TemporaryDirectory from samba.gp_sec_ext import gp_sec_ext from samba.gp_scripts_ext import gp_scripts_ext from samba.gp_sudoers_ext import gp_sudoers_ext +from samba.gpclass import gp_inf_ext import logging from samba.credentials import Credentials from samba.compat import get_bytes from samba.dcerpc import preg from samba.ndr import ndr_pack +import codecs realm = os.environ.get('REALM') policies = realm + '/POLICIES' @@ -415,3 +417,36 @@ class GPOTests(tests.TestCase): # Unstage the Registry.pol file unstage_file(reg_pol) + + def test_gp_inf_ext_utf(self): + logger = logging.getLogger('gpo_tests') + cache_dir = self.lp.get('cache directory') + store = GPOStorage(os.path.join(cache_dir, 'gpo.tdb')) + + machine_creds = Credentials() + machine_creds.guess(self.lp) + machine_creds.set_machine_account() + + ext = gp_inf_ext(logger, self.lp, machine_creds, store) + test_data = '[Kerberos Policy]\nMaxTicketAge = 99\n' + + with NamedTemporaryFile() as f: + with codecs.open(f.name, 'w', 'utf-16') as w: + w.write(test_data) + try: + inf_conf = ext.read(f.name) + except UnicodeDecodeError: + self.fail('Failed to parse utf-16') + self.assertIn('Kerberos Policy', inf_conf.keys(), + 'Kerberos Policy was not read from the file') + self.assertEquals(inf_conf.get('Kerberos Policy', 'MaxTicketAge'), + '99', 'MaxTicketAge was not read from the file') + + with NamedTemporaryFile() as f: + with codecs.open(f.name, 'w', 'utf-8') as w: + w.write(test_data) + inf_conf = ext.read(f.name) + self.assertIn('Kerberos Policy', inf_conf.keys(), + 'Kerberos Policy was not read from the file') + self.assertEquals(inf_conf.get('Kerberos Policy', 'MaxTicketAge'), + '99', 'MaxTicketAge was not read from the file') |
