Fixed error return messages needed for NTTrans CreateDirectory.
authorJeremy Allison <jra@samba.org>
Fri, 6 Oct 2000 20:34:14 +0000 (20:34 +0000)
committerJeremy Allison <jra@samba.org>
Fri, 6 Oct 2000 20:34:14 +0000 (20:34 +0000)
This patch allows the standard W2k recursive mkdir to work against
Samba.
Jeremy.

source/smbd/nttrans.c

index 86b85ea766e57a7a48652613b9210f573a4a6ebe..f099583e558a3e4e1cd57c48ac54f0ed5e167b7b 100644 (file)
@@ -796,6 +796,10 @@ int reply_ntcreate_and_X(connection_struct *conn,
                restore_case_semantics(file_attributes);
 
                if(!fsp) {
+                       if((errno == ENOENT) && bad_path) {
+                               unix_ERR_class = ERRDOS;
+                               unix_ERR_code = ERRbadpath;
+                       }
                        return(UNIXERROR(ERRDOS,ERRnoaccess));
                }
        } else {
@@ -856,6 +860,10 @@ int reply_ntcreate_and_X(connection_struct *conn,
                                
                                if(!fsp) {
                                        restore_case_semantics(file_attributes);
+                                       if((errno == ENOENT) && bad_path) {
+                                               unix_ERR_class = ERRDOS;
+                                               unix_ERR_code = ERRbadpath;
+                                       }
                                        return(UNIXERROR(ERRDOS,ERRnoaccess));
                                }
 #ifdef EROFS
@@ -1220,6 +1228,10 @@ static int call_nt_transact_create(connection_struct *conn,
 
     if(!fsp) {
       restore_case_semantics(file_attributes);
+      if((errno == ENOENT) && bad_path) {
+        unix_ERR_class = ERRDOS;
+        unix_ERR_code = ERRbadpath;
+      }
       return(UNIXERROR(ERRDOS,ERRnoaccess));
     }
 
@@ -1258,6 +1270,10 @@ static int call_nt_transact_create(connection_struct *conn,
                                
                        if(!fsp) {
                                restore_case_semantics(file_attributes);
+                               if((errno == ENOENT) && bad_path) {
+                                       unix_ERR_class = ERRDOS;
+                                       unix_ERR_code = ERRbadpath;
+                               }
                                return(UNIXERROR(ERRDOS,ERRnoaccess));
                        }
 #ifdef EROFS