]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-windows-truncate-after-lock-check-20060116
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 17 Jan 2006 21:45:12 +0000 (21:45 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 17 Jan 2006 21:45:12 +0000 (21:45 +0000)
In smb_ReceiveNTCreateX the lock check, cm_CheckNTOpen(), must take place
before we allow the file to be truncated.

(cherry picked from commit d921ee381aa46e4385524f0c31ca5ad606aa920a)

src/WINNT/afsd/smb3.c

index e79e182127480d91e3480b0cf084e0c9c54a947d..78ab4a077554769baa4a54bbae0d65b38fade740 100644 (file)
@@ -5693,7 +5693,18 @@ long smb_ReceiveNTCreateX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
      * scp is NULL.
      */
     if (code == 0 && !treeCreate) {
-        if (createDisp == FILE_CREATE) {
+        code = cm_CheckNTOpen(scp, desiredAccess, createDisp, userp, &req);
+        if (code) {
+            if (dscp)
+                cm_ReleaseSCache(dscp);
+            if (scp)
+                cm_ReleaseSCache(scp);
+            cm_ReleaseUser(userp);
+            free(realPathp);
+            return code;
+        }
+
+       if (createDisp == FILE_CREATE) {
             /* oops, file shouldn't be there */
             if (dscp)
                 cm_ReleaseSCache(dscp);
@@ -5733,16 +5744,6 @@ long smb_ReceiveNTCreateX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
         else 
             openAction = 1;    /* found existing file */
 
-        code = cm_CheckNTOpen(scp, desiredAccess, createDisp, userp, &req);
-        if (code) {
-            if (dscp)
-                cm_ReleaseSCache(dscp);
-            if (scp)
-                cm_ReleaseSCache(scp);
-            cm_ReleaseUser(userp);
-            free(realPathp);
-            return code;
-        }
     } else if (createDisp == FILE_OPEN || createDisp == FILE_OVERWRITE) {
         /* don't create if not found */
         if (dscp)