The branch, master has been updated
       via  5e8f998efa5 pylibsmb: do not use obsolete PyEval_InitThreads() for 
Python > 3.6
       via  90c04dd62c1 pylibsmb: fix cast warnings in Python method definitions
       via  e64e533c770 librpc/wsp: use unsigned char for high byte comparison
       via  495ca09cb76 s4/ldap server: avoid NULL deref if search control has 
no data
      from  b85f056e731 s3/lib: fix matching interfaces with multiple assigned 
IPs

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


- Log -----------------------------------------------------------------
commit 5e8f998efa54d276d02b90664125a7b577e091b9
Author: Dmitry Antipov <danti...@cloudlinux.com>
Date:   Wed Feb 8 11:59:59 2023 +0300

    pylibsmb: do not use obsolete PyEval_InitThreads() for Python > 3.6
    
    Do not use obsolete PyEval_InitThreads() for Python > 3.6:
    
    ../../source3/libsmb/pylibsmb.c: In function ‘py_cli_state_setup_mt_ev’:
    ../../source3/libsmb/pylibsmb.c:271:9: warning: ‘PyEval_InitThreads’ is
    deprecated [-Wdeprecated-declarations]
      271 |         PyEval_InitThreads();
          |         ^~~~~~~~~~~~~~~~~~
    In file included from /usr/include/python3.11/Python.h:95,
                     from ../../source3/libsmb/pylibsmb.c:48:
    /usr/include/python3.11/ceval.h:132:37: note: declared here
      132 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
    
    Signed-off-by: Dmitry Antipov <danti...@cloudlinux.com>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>
    
    Autobuild-User(master): Douglas Bagnall <dbagn...@samba.org>
    Autobuild-Date(master): Wed Mar 12 04:36:21 UTC 2025 on atb-devel-224

commit 90c04dd62c108c13b11ead1d4afb023f96a9886d
Author: Dmitry Antipov <danti...@cloudlinux.com>
Date:   Wed Feb 8 12:03:16 2023 +0300

    pylibsmb: fix cast warnings in Python method definitions
    
    Fix the following cast warnings in Python method definitions:
    
    ../../source3/libsmb/pylibsmb.c:1867:28: warning: cast between incompatible
    function types from ‘PyObject * (*)(struct py_cli_notify_state *, PyObject 
*,
    PyObject *)’ {aka ‘struct _object * (*)(struct py_cli_notify_state *, struct
    _object *, struct _object *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’
    {aka ‘struct _object * (*)(struct _object *, struct _object *)’}
    [-Wcast-function-type]
     1867 |                 .ml_meth = (PyCFunction)py_cli_notify_get_changes,
          |                            ^
    
    ../../source3/libsmb/pylibsmb.c:2661:11: warning: cast between incompatible
    function types from ‘PyObject * (*)(struct py_cli_state *, PyObject *,
    PyObject *)’ {aka ‘struct _object * (*)(struct py_cli_state *, struct
    _object *, struct _object *)’} to ‘PyObject * (*)(PyObject *, PyObject *)’
    {aka ‘struct _object * (*)(struct _object *, struct _object *)’}
    [-Wcast-function-type]
     2661 |           (PyCFunction)py_cli_fsctl,
          |           ^
    
    Signed-off-by: Dmitry Antipov <danti...@cloudlinux.com>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>

commit e64e533c77041444ee30586319ee1c5691320e5c
Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>
Date:   Thu Nov 28 16:06:10 2024 +1300

    librpc/wsp: use unsigned char for high byte comparison
    
    ../../librpc/wsp/wsp_util.c:244:28: warning: result of comparison of 
constant 160 with expression of type 'char' is always false 
[-Wtautological-constant-out-of-range-compare]
      244 |                 if (strlen(t) == 1 && *t == 0xa0) {
    
    Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>
    Reviewed-by: Volker Lendecke <v...@samba.org>

commit 495ca09cb7643d9b68b03bb85a7dc8284ec8c906
Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>
Date:   Thu Apr 23 15:33:59 2020 +1200

    s4/ldap server: avoid NULL deref if search control has no data
    
    We switch to ldb_request_replace_control() so that the old search
    control is removed in the NULL data case.
    
    Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz>
    Reviewed-by: Volker Lendecke <v...@samba.org>

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

Summary of changes:
 librpc/wsp/wsp_util.c              |  2 +-
 source3/libsmb/pylibsmb.c          | 11 +++++++++--
 source4/ldap_server/ldap_backend.c |  8 ++++++--
 3 files changed, 16 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/wsp/wsp_util.c b/librpc/wsp/wsp_util.c
index d07338b1b5a..a072fbc4d26 100644
--- a/librpc/wsp/wsp_util.c
+++ b/librpc/wsp/wsp_util.c
@@ -241,7 +241,7 @@ static bool parse_properties_line(TALLOC_CTX *ctx,
        for (pos = 0; pos < talloc_array_length(csv_line); pos++) {
                t = strv_next(strv, t);
                /* the scraped property file can have a non ascii char */
-               if (strlen(t) == 1 && *t == 0xa0) {
+               if (strlen(t) == 1 && *(unsigned char *)t == 0xa0) {
                        csv_line[pos] = talloc_strdup(csv_line,
                                        "");
                } else {
diff --git a/source3/libsmb/pylibsmb.c b/source3/libsmb/pylibsmb.c
index 97ae69ef50e..bfbddbd5e7b 100644
--- a/source3/libsmb/pylibsmb.c
+++ b/source3/libsmb/pylibsmb.c
@@ -271,7 +271,13 @@ static bool py_cli_state_setup_mt_ev(struct py_cli_state 
*self)
                goto fail;
        }
 
+#if PY_VERSION_HEX < 0x03070000
+       /*
+        * Should be explicitly called in 3.6 and older, see
+        * https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads
+        */
        PyEval_InitThreads();
+#endif
 
        ret = pthread_create(&t->id, NULL, py_cli_state_poll_thread, self);
        if (ret != 0) {
@@ -2111,7 +2117,8 @@ static PyObject *py_cli_notify_get_changes(struct 
py_cli_notify_state *self,
 static PyMethodDef py_cli_notify_state_methods[] = {
        {
                .ml_name = "get_changes",
-               .ml_meth = (PyCFunction)py_cli_notify_get_changes,
+               .ml_meth = (PY_DISCARD_FUNC_SIG(PyCFunction,
+                           py_cli_notify_get_changes)),
                .ml_flags = METH_VARARGS|METH_KEYWORDS,
                .ml_doc  = "Wait for change notifications: \n"
                           "N.get_changes(wait=BOOLEAN) -> "
@@ -3122,7 +3129,7 @@ static PyMethodDef py_cli_state_methods[] = {
          "smb1_stat(path) -> stat info",
        },
        { "fsctl",
-         (PyCFunction)py_cli_fsctl,
+         PY_DISCARD_FUNC_SIG(PyCFunction, py_cli_fsctl),
          METH_VARARGS|METH_KEYWORDS,
          "fsctl(fnum, ctl_code, in_bytes, max_out) -> out_bytes",
        },
diff --git a/source4/ldap_server/ldap_backend.c 
b/source4/ldap_server/ldap_backend.c
index 986bc1db941..7314e65778a 100644
--- a/source4/ldap_server/ldap_backend.c
+++ b/source4/ldap_server/ldap_backend.c
@@ -858,14 +858,18 @@ static NTSTATUS ldapsrv_SearchRequest(struct ldapsrv_call 
*call)
                search_control = ldb_request_get_control(lreq, 
LDB_CONTROL_SEARCH_OPTIONS_OID);
 
                search_options = NULL;
-               if (search_control) {
+               if (search_control != NULL && search_control->data != NULL) {
                        search_options = talloc_get_type(search_control->data, 
struct ldb_search_options_control);
                        search_options->search_options |= 
LDB_SEARCH_OPTION_PHANTOM_ROOT;
                } else {
                        search_options = talloc(lreq, struct 
ldb_search_options_control);
                        NT_STATUS_HAVE_NO_MEMORY(search_options);
                        search_options->search_options = 
LDB_SEARCH_OPTION_PHANTOM_ROOT;
-                       ldb_request_add_control(lreq, 
LDB_CONTROL_SEARCH_OPTIONS_OID, false, search_options);
+                       ldb_request_replace_control(
+                               lreq,
+                               LDB_CONTROL_SEARCH_OPTIONS_OID,
+                               false,
+                               search_options);
                }
        } else {
                ldb_request_add_control(lreq, DSDB_CONTROL_NO_GLOBAL_CATALOG, 
false, NULL);


-- 
Samba Shared Repository

Reply via email to