]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pysmbd: get_nt_acl() raises FileNotFoundError if appropriate
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Wed, 31 Aug 2022 23:25:26 +0000 (11:25 +1200)
committerDouglas Bagnall <dbagnall@samba.org>
Wed, 7 Sep 2022 05:01:37 +0000 (05:01 +0000)
rather than an NTStatusError, which is harder to decipher, and which
carries less information (namely, not the name of the problematic
file).

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14937

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/smbd/pysmbd.c

index e7bd8b8f622d13ed42eef5370c1856ea3abc9356..e53d7fd2d58a33404978fe531c226ff33d7a26dc 100644 (file)
@@ -879,7 +879,16 @@ static PyObject *py_smbd_get_nt_acl(PyObject *self, PyObject *args, PyObject *kw
 
        status = get_nt_acl_conn(frame, fname, conn, security_info_wanted, &sd);
        if (NT_STATUS_IS_ERR(status)) {
-               PyErr_SetNTSTATUS(status);
+               if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
+                       /*
+                        * This will show up as a FileNotFoundError in python,
+                        * from which samba-tool can at least produce a short
+                        * message containing the problematic filename.
+                        */
+                       PyErr_SetFromErrnoWithFilename(PyExc_OSError, fname);
+               } else {
+                       PyErr_SetNTSTATUS(status);
+               }
                TALLOC_FREE(frame);
                return NULL;
        }