[PATCH] Port of samba.security Python module

Andrew Bartlett abartlet at samba.org
Sun Aug 27 07:08:57 UTC 2017


On Thu, 2017-08-24 at 14:22 +0200, Andreas Schneider wrote:
> On Thursday, 24 August 2017 13:21:27 CEST Lumir Balhar via samba-technical 
> wrote:
> > 
> > Hello.
> > 
> > Because samba.ntstatus module is now available for Python 3 in master, I
> > tried your suggestion and I replaced integers values with constants from
> > samba.dcerpc.security and samba.ntstatus.
> > 
> > Replaced arguments SEC_FLAG_SYSTEM_SECURITY and SEC_STD_READ_CONTROL are
> > working well but exceptions contain different error numbers than
> > NT_STATUS_PRIVILEGE_NOT_HELD and NT_STATUS_ACCESS_DENIED and I cannot
> > find the right ones.
> > 
> > NT_STATUS_PRIVILEGE_NOT_HELD = 3221225569 but exception contains -1073741727
> > NT_STATUS_ACCESS_DENIED = 3221225506 but exception contains -1073741790
> 
> Sounds like the bug. The exception seems to return an int where it should 
> return an unsigned int??
> 
> i2c -1073741727
> 18446744072635809889 0xFFFFFFFFC0000061 01777777777770000000141
> 
> #define NT_STATUS_PRIVILEGE_NOT_HELD NT_STATUS(0xc0000061)
> 

I think:

#define PyErr_FromNTSTATUS(status) Py_BuildValue("(i,s)", NT_STATUS_V(status), discard_const_p(char, get_friendly_nt_error_msg(status)))
 
in pyerrors.h is wrong.

We probably want an unsigned int, not a signed int, for the first
constant.  We first saw this in some other patches that Gary did, where
he ended up casting via a C type casting lib to make it work, but
didn't dig into it properly.

Thanks,

Andrew Bartlett

-- 
Andrew Bartlett                       http://samba.org/~abartlet/
Authentication Developer, Samba Team  http://samba.org
Samba Developer, Catalyst IT          http://catalyst.net.nz/services/samba




More information about the samba-technical mailing list