The Samba-Bugzilla – Attachment 9833 Details for
Bug 10542
re-running provision fails with Samba 4.1 and blames posix ACLs
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
4.1 patch cherry-picked from master (additional #1)
0001-pysmbd-improve-the-return-of-error-codes-in-the-pyth.patch (text/plain), 5.65 KB, created by
Andrew Bartlett
on 2014-04-06 23:45:53 UTC
(
hide
)
Description:
4.1 patch cherry-picked from master (additional #1)
Filename:
MIME Type:
Creator:
Andrew Bartlett
Created:
2014-04-06 23:45:53 UTC
Size:
5.65 KB
patch
obsolete
>From eb8d5ba3f619b052d194070ab3082b3d1bc35312 Mon Sep 17 00:00:00 2001 >From: Garming Sam <garming@catalyst.net.nz> >Date: Wed, 5 Feb 2014 15:31:22 +1300 >Subject: [PATCH 1/2] pysmbd: improve the return of error codes in the python > smbd bindings > >Signed-off-by: Garming Sam <garming@catalyst.net.nz> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> >Reviewed-by: Jelmer Vernooij <jelmer@samba.org> >(cherry picked from commit ad773cc01435e65fa5d8e84758b0642069e96c40) >--- > source3/smbd/pysmbd.c | 58 ++++++++++++++++++++++++--------------------------- > 1 file changed, 27 insertions(+), 31 deletions(-) > >diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c >index 683c48c..df0f430 100644 >--- a/source3/smbd/pysmbd.c >+++ b/source3/smbd/pysmbd.c >@@ -76,11 +76,10 @@ static connection_struct *get_conn(TALLOC_CTX *mem_ctx, const char *service) > return conn; > } > >-static NTSTATUS set_sys_acl_conn(const char *fname, >+static int set_sys_acl_conn(const char *fname, > SMB_ACL_TYPE_T acltype, > SMB_ACL_T theacl, connection_struct *conn) > { >- NTSTATUS status = NT_STATUS_OK; > int ret; > mode_t saved_umask; > >@@ -91,16 +90,11 @@ static NTSTATUS set_sys_acl_conn(const char *fname, > saved_umask = umask(0); > > ret = SMB_VFS_SYS_ACL_SET_FILE( conn, fname, acltype, theacl); >- if (ret != 0) { >- status = map_nt_error_from_unix_common(ret); >- DEBUG(0,("set_sys_acl_conn: SMB_VFS_SYS_ACL_SET_FILE " >- "returned zero.\n")); >- } > > umask(saved_umask); > > TALLOC_FREE(frame); >- return status; >+ return ret; > } > > static NTSTATUS set_nt_acl_conn(const char *fname, >@@ -319,8 +313,8 @@ static SMB_ACL_T make_simple_acl(gid_t gid, mode_t chmod_mode) > static PyObject *py_smbd_set_simple_acl(PyObject *self, PyObject *args, PyObject *kwargs) > { > const char * const kwnames[] = { "fname", "mode", "gid", "service", NULL }; >- NTSTATUS status; > char *fname, *service = NULL; >+ int ret; > int mode, gid = -1; > SMB_ACL_T acl; > TALLOC_CTX *frame; >@@ -340,12 +334,16 @@ static PyObject *py_smbd_set_simple_acl(PyObject *self, PyObject *args, PyObject > return NULL; > } > >- status = set_sys_acl_conn(fname, SMB_ACL_TYPE_ACCESS, acl, conn); >+ ret = set_sys_acl_conn(fname, SMB_ACL_TYPE_ACCESS, acl, conn); > TALLOC_FREE(acl); > >- TALLOC_FREE(frame); >+ if (ret != 0) { >+ TALLOC_FREE(frame); >+ errno = ret; >+ return PyErr_SetFromErrno(PyExc_OSError); >+ } > >- PyErr_NTSTATUS_IS_ERR_RAISE(status); >+ TALLOC_FREE(frame); > > Py_RETURN_NONE; > } >@@ -357,7 +355,6 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) > { > const char * const kwnames[] = { "fname", "uid", "gid", "service", NULL }; > connection_struct *conn; >- NTSTATUS status = NT_STATUS_OK; > int ret; > > char *fname, *service = NULL; >@@ -383,27 +380,26 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) > > ret = SMB_VFS_CHOWN( conn, fname, uid, gid); > if (ret != 0) { >- status = map_nt_error_from_unix_common(errno); >- DEBUG(0,("chown returned failure: %s\n", strerror(errno))); >+ umask(saved_umask); >+ TALLOC_FREE(frame); >+ errno = ret; >+ return PyErr_SetFromErrno(PyExc_OSError); > } > > umask(saved_umask); > > TALLOC_FREE(frame); > >- PyErr_NTSTATUS_IS_ERR_RAISE(status); >- > Py_RETURN_NONE; > } > > /* >- chown a file >+ unlink a file > */ > static PyObject *py_smbd_unlink(PyObject *self, PyObject *args, PyObject *kwargs) > { > const char * const kwnames[] = { "fname", "service", NULL }; > connection_struct *conn; >- NTSTATUS status = NT_STATUS_OK; > int ret; > struct smb_filename *smb_fname = NULL; > char *fname, *service = NULL; >@@ -427,19 +423,18 @@ static PyObject *py_smbd_unlink(PyObject *self, PyObject *args, PyObject *kwargs > smb_fname = synthetic_smb_fname_split(frame, fname, NULL); > if (smb_fname == NULL) { > TALLOC_FREE(frame); >- PyErr_NTSTATUS_IS_ERR_RAISE(NT_STATUS_NO_MEMORY); >+ return PyErr_NoMemory(); > } > > ret = SMB_VFS_UNLINK(conn, smb_fname); > if (ret != 0) { >- status = map_nt_error_from_unix_common(errno); >- DEBUG(0,("unlink returned failure: %s\n", strerror(errno))); >+ TALLOC_FREE(frame); >+ errno = ret; >+ return PyErr_SetFromErrno(PyExc_OSError); > } > > TALLOC_FREE(frame); > >- PyErr_NTSTATUS_IS_ERR_RAISE(status); >- > Py_RETURN_NONE; > } > >@@ -541,7 +536,7 @@ static PyObject *py_smbd_set_sys_acl(PyObject *self, PyObject *args, PyObject *k > { > const char * const kwnames[] = { "fname", "acl_type", "acl", "service", NULL }; > TALLOC_CTX *frame = talloc_stackframe(); >- NTSTATUS status; >+ int ret; > char *fname, *service = NULL; > PyObject *py_acl; > struct smb_acl_t *acl; >@@ -568,8 +563,12 @@ static PyObject *py_smbd_set_sys_acl(PyObject *self, PyObject *args, PyObject *k > > acl = pytalloc_get_type(py_acl, struct smb_acl_t); > >- status = set_sys_acl_conn(fname, acl_type, acl, conn); >- PyErr_NTSTATUS_IS_ERR_RAISE(status); >+ ret = set_sys_acl_conn(fname, acl_type, acl, conn); >+ if (ret != 0) { >+ TALLOC_FREE(frame); >+ errno = ret; >+ return PyErr_SetFromErrno(PyExc_OSError); >+ } > > TALLOC_FREE(frame); > Py_RETURN_NONE; >@@ -588,7 +587,6 @@ static PyObject *py_smbd_get_sys_acl(PyObject *self, PyObject *args, PyObject *k > TALLOC_CTX *frame = talloc_stackframe(); > TALLOC_CTX *tmp_ctx = talloc_new(NULL); > connection_struct *conn; >- NTSTATUS status = NT_STATUS_OK; > char *service = NULL; > if (!tmp_ctx) { > PyErr_NoMemory(); >@@ -614,9 +612,7 @@ static PyObject *py_smbd_get_sys_acl(PyObject *self, PyObject *args, PyObject *k > if (!acl) { > TALLOC_FREE(frame); > TALLOC_FREE(tmp_ctx); >- status = map_nt_error_from_unix_common(errno); >- DEBUG(0,("sys_acl_get_file returned NULL: %s\n", strerror(errno))); >- PyErr_NTSTATUS_IS_ERR_RAISE(status); >+ return PyErr_SetFromErrno(PyExc_OSError); > } > > py_acl = py_return_ndr_struct("samba.dcerpc.smb_acl", "t", acl, acl); >-- >1.9.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 10542
:
9832
| 9833 |
9834