[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Sat May 20 00:27:02 UTC 2017


The branch, master has been updated
       via  1116ee1 selftest: Actually run python3 tests during the selftest
       via  e99c0e6 python3:tests: Fix Python 3 test issues
       via  40e409b python3: Use "y#" instead of "s#" for binary data in PyArg_ParseTuple
      from  b691f6d s3: smbd: Fix open_files.idl to correctly ignore share_mode_lease *lease in share_mode_entry.

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 1116ee1c5c47b405666a0d52f646d05613a803ab
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 2 12:55:45 2017 +0200

    selftest: Actually run python3 tests during the selftest
    
    These previously only ran if the develper was using EXTRA_PYTHON in their
    OS environment
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Sat May 20 02:26:33 CEST 2017 on sn-devel-144

commit e99c0e6503d5cfa048c62b0a6d954d3e7504ff62
Author: Petr Viktorin <pviktori at redhat.com>
Date:   Wed May 3 19:11:03 2017 +0200

    python3:tests: Fix Python 3 test issues
    
    - Forgotten text strings that should be binary
    - Inverted PY3 condition
    
    Signed-off-by: Petr Viktorin <pviktori at redhat.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 40e409bf9e89a163c771b2a58493d2c1b496fae7
Author: Petr Viktorin <pviktori at redhat.com>
Date:   Wed May 3 16:57:07 2017 +0200

    python3: Use "y#" instead of "s#" for binary data in PyArg_ParseTuple
    
    The "s#" format code for PyArg_ParseTupleAndKeywords and Py_BuildValue
    converts a char* and size to/from Python str (with utf-8 encoding under
    Python 3).
    In some cases, we want bytes (str on Python 2, bytes on 3) instead. The
    code for this is "y#" in Python 3, but that is not available in 2.
    
    Introduce a PYARG_BYTES_LEN macro that expands to "s#" or "y#", and use
    that in:
    - credentials.get_ntlm_response (for input and output)
    - ndr_unpack argument in PIDL generated code
    
    Signed-off-by: Petr Viktorin <pviktori at redhat.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 auth/credentials/pycredentials.c     | 6 ++++--
 pidl/lib/Parse/Pidl/Samba4/Python.pm | 6 +++---
 python/py3compat.h                   | 8 ++++++++
 python/samba/tests/core.py           | 4 ++--
 python/samba/tests/dcerpc/misc.py    | 2 +-
 selftest/selftesthelpers.py          | 2 +-
 selftest/wscript                     | 4 ++++
 7 files changed, 23 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
index 7f03f1f..283a73f 100644
--- a/auth/credentials/pycredentials.c
+++ b/auth/credentials/pycredentials.c
@@ -96,7 +96,8 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
 	tv_now = timeval_current();
 	server_timestamp = timeval_to_nttime(&tv_now);
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "is#|s#K",
+	if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+					 "i" PYARG_BYTES_LEN "|" PYARG_BYTES_LEN "K",
 					 discard_const_p(char *, kwnames),
 					 &flags, &challenge, &target_info.data, &target_info.length)) {
 		return NULL;
@@ -116,7 +117,8 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
 		return NULL;
 	}
 
-	ret = Py_BuildValue("{siss#ss#ss#ss#}",
+	ret = Py_BuildValue("{sis" PYARG_BYTES_LEN "s" PYARG_BYTES_LEN
+			            "s" PYARG_BYTES_LEN "s" PYARG_BYTES_LEN "}",
 			    "flags", flags,
 			    "lm_reponse",
 			    (const char *)lm_response.data, lm_response.length,
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index e40f4f1..79beb2e 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -320,7 +320,7 @@ sub PythonStruct($$$$$$)
 		$self->pidl("PyObject *allow_remaining_obj = NULL;");
 		$self->pidl("bool allow_remaining = false;");
 		$self->pidl("");
-		$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|O:__ndr_unpack__\",");
+		$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|O:__ndr_unpack__\",");
 		$self->indent;
 		$self->pidl("discard_const_p(char *, kwnames),");
 		$self->pidl("&blob.data, &blob_length,");
@@ -705,7 +705,7 @@ sub PythonFunctionStruct($$$$)
 	$self->pidl("PyObject *allow_remaining_obj = NULL;");
 	$self->pidl("bool allow_remaining = false;");
 	$self->pidl("");
-	$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|OOO:__ndr_unpack_in__\",");
+	$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|OOO:__ndr_unpack_in__\",");
 	$self->indent;
 	$self->pidl("discard_const_p(char *, kwnames),");
 	$self->pidl("&blob.data, &blob_length,");
@@ -753,7 +753,7 @@ sub PythonFunctionStruct($$$$)
 	$self->pidl("PyObject *allow_remaining_obj = NULL;");
 	$self->pidl("bool allow_remaining = false;");
 	$self->pidl("");
-	$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|OOO:__ndr_unpack_out__\",");
+	$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|OOO:__ndr_unpack_out__\",");
 	$self->indent;
 	$self->pidl("discard_const_p(char *, kwnames),");
 	$self->pidl("&blob.data, &blob_length,");
diff --git a/python/py3compat.h b/python/py3compat.h
index c7724c9..f54b391 100644
--- a/python/py3compat.h
+++ b/python/py3compat.h
@@ -98,6 +98,10 @@
     PyMODINIT_FUNC PyInit_ ## name(void); \
     PyMODINIT_FUNC PyInit_ ## name(void)
 
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "y#"
+
 #else
 
 /***** Python 2 *****/
@@ -140,6 +144,10 @@
 #define PyBytes_ConcatAndDel PyString_ConcatAndDel
 #define _PyBytes_Resize _PyString_Resize
 
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "s#"
+
 /* Module init */
 
 #define PyModuleDef_HEAD_INIT 0
diff --git a/python/samba/tests/core.py b/python/samba/tests/core.py
index 7fb3698..504d458 100644
--- a/python/samba/tests/core.py
+++ b/python/samba/tests/core.py
@@ -52,8 +52,8 @@ class SubstituteVarTestCase(TestCase):
 class ArcfourTestCase(TestCase):
 
     def test_arcfour_direct(self):
-        key = '12345678'
-        plain = 'abcdefghi'
+        key = b'12345678'
+        plain = b'abcdefghi'
         crypt_expected = b'\xda\x91Z\xb0l\xd7\xb9\xcf\x99'
         crypt_calculated = arcfour_encrypt(key, plain)
         self.assertEquals(crypt_expected, crypt_calculated)
diff --git a/python/samba/tests/dcerpc/misc.py b/python/samba/tests/dcerpc/misc.py
index 68654a7..2ec0950 100644
--- a/python/samba/tests/dcerpc/misc.py
+++ b/python/samba/tests/dcerpc/misc.py
@@ -25,7 +25,7 @@ text1 = "76f53846-a7c2-476a-ae2c-20e2b80d7b34"
 text2 = "344edffa-330a-4b39-b96e-2c34da52e8b1"
 
 
-if not PY3:
+if PY3:
     # cmp() exists only in Python 2
     def cmp(a, b):
         return (a > b) - (a < b)
diff --git a/selftest/selftesthelpers.py b/selftest/selftesthelpers.py
index 6b22a16..8b885b5 100644
--- a/selftest/selftesthelpers.py
+++ b/selftest/selftesthelpers.py
@@ -140,7 +140,7 @@ def planpythontestsuite(env, module, name=None, extra_path=[], py3_compatible=Fa
     if py3_compatible and extra_python is not None:
         # Plan one more test for Python 3 compatible module
         args[0] = extra_python
-        plantestsuite_loadlist(name, env, args)
+        plantestsuite_loadlist(name + ".python3", env, args)
 
 
 def get_env_torture_options():
diff --git a/selftest/wscript b/selftest/wscript
index 2299195..d8094af 100644
--- a/selftest/wscript
+++ b/selftest/wscript
@@ -209,6 +209,10 @@ def cmd_testonly(opt):
         env.TESTLISTS = '--testlist=%r' % Options.options.TEST_LIST
     elif Options.options.PERF_TEST:
         env.TESTLISTS = '--testlist="${PYTHON} ${srcdir}/selftest/perf_tests.py|" '
+    elif CONFIG_SET(opt, 'EXTRA_PYTHON'):
+        env.TESTLISTS = ('--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/selftest/tests.py|" ' +
+                         '--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/source3/selftest/tests.py|" ' +
+                         '--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/source4/selftest/tests.py|"')
     else:
         env.TESTLISTS = ('--testlist="${PYTHON} ${srcdir}/selftest/tests.py|" ' +
                          '--testlist="${PYTHON} ${srcdir}/source3/selftest/tests.py|" ' +


-- 
Samba Shared Repository



More information about the samba-cvs mailing list