samba.smb.SMB:set_acl seems to generate a bad nttrans:SET_SD request

Alexander Bokovoy ab at samba.org
Sun Mar 25 09:54:33 MDT 2012


On Sun, Mar 25, 2012 at 18:38, Richard Sharpe
<realrichardsharpe at gmail.com> wrote:
> 2012/3/25 Richard Sharpe <realrichardsharpe at gmail.com>:
>> On Sun, Mar 25, 2012 at 7:56 AM, Alexander Bokovoy <ab at samba.org> wrote:
>>> 2012/3/25 Richard Sharpe <realrichardsharpe at gmail.com>:
>>> There are quite few places where Python bindings are not yet finished.
>>> Basically, they followed needs of Samba4 thus perhaps certain features
>>> are hardcoded.
>>
>> Well, if I could only figure out how to quickly rebuild the Python
>> support (even the stuff in source4/... I would be able to make more
>> progress :-(
>
> Still no progress on that, but here is a more correct patch that also
> fixes, I think, the PyDoc stuff:
This one looks fine to me. Perhaps we need to be more expressive on
what security_info is -- in definitions of the flags, not here.

 Let's run it past Jelmer as well.

I've added samba-technical@ back.

>
> diff --git a/source4/libcli/pysmb.c b/source4/libcli/pysmb.c
> index 2f9a579..591d471 100644
> --- a/source4/libcli/pysmb.c
> +++ b/source4/libcli/pysmb.c
> @@ -367,9 +367,10 @@ static PyObject *py_smb_setacl(pytalloc_Object *self, PyObj
>        const char *filename;
>        PyObject *py_sd;
>        struct security_descriptor *sd;
> +       uint32_t sinfo = 0;
>        int fnum;
>
> -       if (!PyArg_ParseTuple(args, "sO:set_acl", &filename, &py_sd)) {
> +       if (!PyArg_ParseTuple(args, "sOl:set_acl", &filename, &py_sd, &sinfo)) {
>                return NULL;
>        }
>
> @@ -410,7 +411,7 @@ static PyObject *py_smb_setacl(pytalloc_Object *self, PyObje
>
>        fio.set_secdesc.level = RAW_SFILEINFO_SEC_DESC;
>        fio.set_secdesc.in.file.fnum = fnum;
> -       fio.set_secdesc.in.secinfo_flags = 0;
> +       fio.set_secdesc.in.secinfo_flags = sinfo;
>        fio.set_secdesc.in.sd = sd;
>
>        status = smb_raw_set_secdesc(spdata->tree, &fio);
> @@ -450,7 +451,7 @@ static PyMethodDef py_smb_methods[] = {
>                "get_acl(path) -> security_descriptor object\n\n \
>                Get security descriptor for file." },
>        { "set_acl", (PyCFunction)py_smb_setacl, METH_VARARGS,
> -               "set_acl(path, security_descriptor) -> None\n\n \
> +               "set_acl(path, security_descriptor, security_info) -> None\n\n \
>                Set security descriptor for file." },
>        { NULL },
>  };
> @@ -522,7 +523,7 @@ static PyTypeObject PySMB = {
>        .tp_new = py_smb_new,
>        .tp_flags = Py_TPFLAGS_DEFAULT,
>        .tp_methods = py_smb_methods,
> -       .tp_doc = "SMB(hostname, service[, lp[, creds]]) -> SMB connection objec
> +       .tp_doc = "SMB(hostname, service[, creds[, lp]]) -> SMB
> connection object
>
>  };
>
>
>
> --
> Regards,
> Richard Sharpe
> (何以解憂?唯有杜康。--曹操)



-- 
/ Alexander Bokovoy


More information about the samba-technical mailing list