1. 03 Jan, 2018 1 commit
    • 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'