CVE-2023-4154 py_security: allow idx argument to descriptor.[s|d]acl_add()
[samba.git] / source4 / librpc / ndr / py_security.c
index e61b994d7cb83f54c4f3d676cde485a656b9c3a8..4a8271a11dbcf7dafb0296f5b8ad5baecd732645 100644 (file)
@@ -175,12 +175,13 @@ static PyObject *py_descriptor_sacl_add(PyObject *self, PyObject *args)
        NTSTATUS status;
        struct security_ace *ace;
        PyObject *py_ace;
+       Py_ssize_t idx = -1;
 
-       if (!PyArg_ParseTuple(args, "O", &py_ace))
+       if (!PyArg_ParseTuple(args, "O|n", &py_ace, &idx))
                return NULL;
 
        ace = pytalloc_get_ptr(py_ace);
-       status = security_descriptor_sacl_add(desc, ace);
+       status = security_descriptor_sacl_insert(desc, ace, idx);
        PyErr_NTSTATUS_IS_ERR_RAISE(status);
        Py_RETURN_NONE;
 }
@@ -191,13 +192,14 @@ static PyObject *py_descriptor_dacl_add(PyObject *self, PyObject *args)
        NTSTATUS status;
        struct security_ace *ace;
        PyObject *py_ace;
+       Py_ssize_t idx = -1;
 
-       if (!PyArg_ParseTuple(args, "O", &py_ace))
+       if (!PyArg_ParseTuple(args, "O|n", &py_ace, &idx))
                return NULL;
 
        ace = pytalloc_get_ptr(py_ace);
 
-       status = security_descriptor_dacl_add(desc, ace);
+       status = security_descriptor_dacl_insert(desc, ace, idx);
        PyErr_NTSTATUS_IS_ERR_RAISE(status);
        Py_RETURN_NONE;
 }