]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: Look for 8.3 name when doing a rename
authorRod Widdowson <rdw@steadingsoftware.com>
Sat, 22 Oct 2011 15:46:26 +0000 (16:46 +0100)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 25 Oct 2011 17:51:49 +0000 (10:51 -0700)
If we are doing a destructive rename we need to find whether the
target file exists.  This is done in the usual way (case sensitive
case insensitive), but the short name is not looked for.

This means that the rename of a file to a short name will not
supersede correctly; rather the service refuses the rename since
the target existed already.

This patch looks the target name up in the shortname tree if the
target name is short and all else has failed.

Change-Id: Ie054516a378edf52938d3465143a16107a99c0f6
Reviewed-on: http://gerrit.openafs.org/5652
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp

index 2c73dafbd7a7303b38ab570dd52c58c2138d3853..fe93a6f19ef9a93eec0db18b36651b968e134a72 100644 (file)
@@ -1907,6 +1907,17 @@ AFSSetRenameInfo( IN PIRP Irp)
                                               &pTargetDirEntry);
         }
 
+        if( pTargetDirEntry == NULL && RtlIsNameLegalDOS8Dot3( &uniTargetName,
+                                                               NULL,
+                                                               NULL))
+        {
+            //
+            // Try the short name
+            //
+            AFSLocateShortNameDirEntry( pTargetParentObject->Specific.Directory.ShortNameTree,
+                                        ulTargetCRC,
+                                        &pTargetDirEntry);
+        }
         //
         // Increment our ref count on the dir entry
         //