mirror of
https://github.com/samba-team/samba.git
synced 2025-11-21 12:23:50 +03:00
r8564: Sometimes we're too dumb to live... Fix samr calls where we were
using USER_INFO_XX structs and functions where XX was sometimes in hex and sometimes in decimal. Now it's all in decimal (should be no functionality change). Jeremy.
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
7ff7211b80
commit
84651aca04
@@ -146,7 +146,7 @@ static PyObject *samr_set_user_info2(PyObject *self, PyObject *args,
|
||||
NTSTATUS ntstatus;
|
||||
int level;
|
||||
union {
|
||||
SAM_USER_INFO_10 id10;
|
||||
SAM_USER_INFO_16 id16;
|
||||
SAM_USER_INFO_21 id21;
|
||||
} pinfo;
|
||||
|
||||
@@ -164,10 +164,10 @@ static PyObject *samr_set_user_info2(PyObject *self, PyObject *args,
|
||||
ctr.switch_value = level;
|
||||
|
||||
switch(level) {
|
||||
case 0x10:
|
||||
ctr.info.id10 = &pinfo.id10;
|
||||
case 16:
|
||||
ctr.info.id16 = &pinfo.id16;
|
||||
|
||||
if (!py_to_SAM_USER_INFO_10(ctr.info.id10, info)) {
|
||||
if (!py_to_SAM_USER_INFO_16(ctr.info.id16, info)) {
|
||||
PyErr_SetString(
|
||||
samr_error, "error converting user info");
|
||||
goto done;
|
||||
|
||||
@@ -78,8 +78,8 @@ extern PyObject *samr_error;
|
||||
/* The following definitions are from py_samr_conv.c */
|
||||
|
||||
BOOL py_from_acct_info(PyObject **array, struct acct_info *info, int num_accts);
|
||||
BOOL py_from_SAM_USER_INFO_10(PyObject **dict, SAM_USER_INFO_10 *info);
|
||||
BOOL py_to_SAM_USER_INFO_10(SAM_USER_INFO_10 *info, PyObject *dict);
|
||||
BOOL py_from_SAM_USER_INFO_16(PyObject **dict, SAM_USER_INFO_16 *info);
|
||||
BOOL py_to_SAM_USER_INFO_16(SAM_USER_INFO_16 *info, PyObject *dict);
|
||||
BOOL py_from_SAM_USER_INFO_21(PyObject **dict, SAM_USER_INFO_21 *info);
|
||||
BOOL py_to_SAM_USER_INFO_21(SAM_USER_INFO_21 *info, PyObject *dict);
|
||||
|
||||
|
||||
@@ -22,22 +22,22 @@
|
||||
#include "python/py_conv.h"
|
||||
|
||||
/*
|
||||
* Convert between SAM_USER_INFO_10 and Python
|
||||
* Convert between SAM_USER_INFO_16 and Python
|
||||
*/
|
||||
|
||||
struct pyconv py_SAM_USER_INFO_10[] = {
|
||||
{ "acb_info", PY_UINT32, offsetof(SAM_USER_INFO_10, acb_info) },
|
||||
struct pyconv py_SAM_USER_INFO_16[] = {
|
||||
{ "acb_info", PY_UINT32, offsetof(SAM_USER_INFO_16, acb_info) },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
BOOL py_from_SAM_USER_INFO_10(PyObject **dict, SAM_USER_INFO_10 *info)
|
||||
BOOL py_from_SAM_USER_INFO_16(PyObject **dict, SAM_USER_INFO_16 *info)
|
||||
{
|
||||
*dict = from_struct(info, py_SAM_USER_INFO_10);
|
||||
PyDict_SetItemString(*dict, "level", PyInt_FromLong(0x10));
|
||||
*dict = from_struct(info, py_SAM_USER_INFO_16);
|
||||
PyDict_SetItemString(*dict, "level", PyInt_FromLong(16));
|
||||
return True;
|
||||
}
|
||||
|
||||
BOOL py_to_SAM_USER_INFO_10(SAM_USER_INFO_10 *info, PyObject *dict)
|
||||
BOOL py_to_SAM_USER_INFO_16(SAM_USER_INFO_16 *info, PyObject *dict)
|
||||
{
|
||||
PyObject *obj, *dict_copy = PyDict_Copy(dict);
|
||||
BOOL result = False;
|
||||
@@ -48,7 +48,7 @@ BOOL py_to_SAM_USER_INFO_10(SAM_USER_INFO_10 *info, PyObject *dict)
|
||||
|
||||
PyDict_DelItemString(dict_copy, "level");
|
||||
|
||||
if (!to_struct(info, dict_copy, py_SAM_USER_INFO_10))
|
||||
if (!to_struct(info, dict_copy, py_SAM_USER_INFO_16))
|
||||
goto done;
|
||||
|
||||
result = True;
|
||||
|
||||
Reference in New Issue
Block a user