r2828: Fix for bugzilla #1864 from Brett again.
authorTim Potter <tpot@samba.org>
Wed, 6 Oct 2004 02:05:39 +0000 (02:05 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:52:54 +0000 (10:52 -0500)
Add sd->type field to security descriptor Python representation.

source/python/py_ntsec.c

index 5ce5e8fc1bed18b816d1772486c947fdb81d4bd2..907e9d08c1ba88f353df74bdfb8d4eca54a4951a 100644 (file)
@@ -182,6 +182,10 @@ BOOL py_from_SECDESC(PyObject **dict, SEC_DESC *sd)
        PyDict_SetItemString(*dict, "revision", obj);
        Py_DECREF(obj);
 
+       obj = PyInt_FromLong(sd->type);
+       PyDict_SetItemString(*dict, "type", obj);
+       Py_DECREF(obj);
+
        if (py_from_SID(&obj, sd->owner_sid)) {
                PyDict_SetItemString(*dict, "owner_sid", obj);
                Py_DECREF(obj);
@@ -209,6 +213,7 @@ BOOL py_to_SECDESC(SEC_DESC **sd, PyObject *dict, TALLOC_CTX *mem_ctx)
 {
        PyObject *obj;
        uint16 revision;
+       uint16 type = SEC_DESC_SELF_RELATIVE;
        DOM_SID owner_sid, group_sid;
        SEC_ACL sacl, dacl;
        BOOL got_dacl = False, got_sacl = False;
@@ -222,6 +227,12 @@ BOOL py_to_SECDESC(SEC_DESC **sd, PyObject *dict, TALLOC_CTX *mem_ctx)
 
        revision = PyInt_AsLong(obj);
 
+       if ((obj = PyDict_GetItemString(dict, "type"))) {
+               if (obj != Py_None) {
+                       type = PyInt_AsLong(obj);
+               }
+       }
+
        if ((obj = PyDict_GetItemString(dict, "owner_sid"))) {
 
                if (obj != Py_None) {
@@ -276,7 +287,7 @@ BOOL py_to_SECDESC(SEC_DESC **sd, PyObject *dict, TALLOC_CTX *mem_ctx)
        {
                size_t sd_size;
 
-               *sd = make_sec_desc(mem_ctx, revision, SEC_DESC_SELF_RELATIVE,
+               *sd = make_sec_desc(mem_ctx, revision, type,
                            got_owner_sid ? &owner_sid : NULL, 
                            got_group_sid ? &group_sid : NULL,
                            got_sacl ? &sacl : NULL,