• Robert Sprowson's avatar
    Name resolution, wildcarded FSEntry_File 5 & 9, and buffer overrun fixes · 517c6bdb
    Robert Sprowson authored
    Make SMB_RxWords a bit bigger per static anaylsis
    when LONGNAMES is undefined, since NT LM 0.12 dialect is allowed at the same time as short names.
    A change to name translation in LanManFS-2_60 broke all forms of nested contentious name resolution, ie. where a leafname containing a contentious character was itself in a directory containing one.
    The cited problem names ('1 2/3' and '1 /s') can both be resolved at one level only, no 2nd pass is required. The resolution function walks along the elements of the path one at a time to reach the leaf (ie. no element is processed twice). A test case has been created to allow some regression testing when making future changes in this area.
    When building tboxlibint
      Copy h.* <Lib$Dir>.tboxlibint.h.*
    when the directory is empty FileSwitch checks the destination ending in ...\h\* which the short names translation would error with ENOWILDCARD, but the long names translation attempts to resolve it by finding the trailing '\' and appending a '*' (ie. not doing anything), this returns no results and is passed back unfaulted. The special check in fsentry_file() for ENOWILDCARD for the two ReadCatalogueInformation thus doesn't trigger, and an attempt to FileGetAttribs() is made on the still wildcarded path. This is rejected by the server when in SMB_GetAttribsX2() does a TRANSACT2_QUERYPATHINFORMATION, which expects a non wildcarded object (on Windows servers at least), propagating an error back up to the user.
    This stopped a ROM build from completing the exports phase via LanManFS on a Windows share.
    Const-ify a few things.
    Changed files
      Xlate.c: Revert change from revision 1.21, return ENOWILDCARD when appropriate.
      SMC.c: Increase MAX_WCT buffer size to 17.
      UK/CmdHelp: Add some missing chevrons round the command syntax for required parameters.
      test/Contentious: Test case for nested contentious character resolution code.
    Version 2.61. Tagged as 'LanManFS-2_61'