Add additional validation and error handling code after each call to
getSlot(). If an invalid slot is returned, return NONODE. If the
invalid slot is returned when extracting a data node, invalidate the
tree.
Modify compareKeys() to always perform a case-insensitive comparison
and only perform a case sensistive comparison if the case-insensitive
one matches. This ensures the ordering is consistently reported.
Add lock assertions to ensure that all calls are being performed with
the correct locks being held. There have been some crash reports that
provide stack data that does not appear to be possible unless there is
a race. However, there are no obvious locations where the race is
taking place and the test suite indicates that all of the correct locks
are being held. We shall see what happens in the field.
For consistency replace all calls to findKey in which the range is
(1,numentries) with calls to getSlot().
Optimize the depth search loop by testing the slot value in the for
statement instead of forcing the loop to be broken later.
Microsoft provided a dump showing cm_data.aclLRUEndp == NULL in
GetFreeACLEnt(). Couldn't find any reason why that would be true.
However, there is extraneous code that manipulates the value of
aclLRUEndp when it should be left to osi_QRemoveHT() to update
the pointer values.
Also add an additional explicit test for aclLRUEndp == NULL in
GetFreeACLEnt().
At somepoint windows installer broke the use of the 'file' RegistrySearch
type. Instead of returning the full file name path we are only getting
the directory. Switch to using the 'raw' type since we know we aren't
prefixing the file name with a hash.
The cmd.exe "del" command operates by opening a file and then setting
the file disposition to delete on close followed by closing the file.
When the filename is a symlink, the smb_fid_t scp refers to the final
destination object and not the symlink. In smb_CloseFid() the correct
object would be removed from the directory by name, but the wrong cm_scache_t
would be marked deleted. This would result in subsequent references to
the target file being considered invalid.
Fix it by looking up the cm_scache_t of the symlink prior to performing
the deletion.
Add registry value "OfflineReadOnlyIsValid" option. When set to non-zero
value, an offline or down read only volume will be treated as if it has
a valid callback even if it doesn't.
cm_ParseIoctlPath() moves the ioctlp->inDatap past the ioctl path
to the next data value if there is one. Make sure we move the pointer
before we alter the contents of the buffer. Otherwise, the caller
uses the wrong string for its next data blob.
More tweaking of the IoctlPathParsing code.
Add special handling for many more pioctl operations performed on
the Freelance root.afs volume.
Add informative error values for symlink freelance operations.
Add SOFTWARE\OpenAFS\Client AcceptDottedPrincipalNames registry
value to control whether the use of Kerberos v5 principal names
with dots in the first component are permitted.
FIXES 74473
Change "fs uuid" to "fs uuid -generate" where "-generate" is a
required parameter.
This command requires root access to execute it.
Unlike the Windows variant, the UNIX version does not yet support displaying
the current UUID to the user. When this functionality is added, "-generate"
should become an optional parameter.