]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Fix unix_convert() for "*" after changing map_nt_error_from_unix().
authorMichael Adam <obnox@samba.org>
Tue, 12 Aug 2008 12:59:59 +0000 (14:59 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 12 Aug 2008 19:37:30 +0000 (21:37 +0200)
map_nt_error_from_unix() now assumes that it is called in
an error path and returns an error even for a given errno == 0.
The original behaviour of unix_convert() used the mapping
of errno == 0 ==> NT_STATUS_OK to return success through
an error path.

I think this must have been an oversight, and unix_convert() worked
only by coincidence (or because explicitly using the knowledge
of the conceptually wrong working of map_nt_error_from_unix().

This patch puts this straight by not interpreting errno == 0
as an error condition and proceeding in that case.

Jeremy - please check!

Michael

source/smbd/filename.c

index 4323e843d21cd9871efcb5c355bf8f216cea3466..41a0b9296a56340ebcdb5a6eeb5a5b238c9556b2 100644 (file)
@@ -477,7 +477,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
                                }
 
                                /* ENOENT is the only valid error here. */
-                               if (errno != ENOENT) {
+                               if ((errno != 0) && (errno != ENOENT)) {
                                        /*
                                         * ENOTDIR and ELOOP both map to
                                         * NT_STATUS_OBJECT_PATH_NOT_FOUND