github jrohel/NetMount client-v1.8.1,server-v1.8.1,ninstall-v1.0,nmmanage-v1.1.0
NetMount client version 1.8.1, server version 1.8.1, ninstall version 1.0, and nmmanage version 1.1.0

5 hours ago

Changes in NetMount client version 1.8.0 -> 1.8.1

Other

  • use unsigned comparisons in int2F_redirector

    If the redirector does not handle a requested function, control is
    passed to the next INT 0x2F handler. This also applies to network
    requests for disks managed by the redirector, which typically end
    in DOS returning "function number invalid."

    Function numbers are bytes. The redirector previously used the signed
    "JG" instruction to check whether the requested function was outside its
    table. This worked fine for network redirector functions, which were
    always <127 (positive in signed logic).

    FreeDOS Kernel 2044 (v2.44, 2026) introduced a new function 0xA3 to
    report total and free sizes of disks larger than 2 GiB (up to 256 TiB).
    Interpreted as a negative number in signed comparison, it appeared
    within the table and was incorrectly treated as supported. However,
    the function handler was missing, so the redirector did nothing, leaving
    registers unchanged and reporting an incorrect disk size.

    NetMount client 1.8.0 added support for 0xA3. However, without this fix,
    any future function with code 128 and above could trigger the same
    problem.

    This fix replaces all signed conditional jumps in int2F_redirector
    with unsigned versions, fixing function detection and preventing
    misinterpretation of function codes 128 and above.

Changes in NetMount server version 1.8.0 -> 1.8.1

Security

  • Check client path for path traversal attacks

    When name_conversion=OFF, only minimal modifications are applied to the
    client-supplied path (lowercasing). This could be exploited by an attacker
    crafting a request with a path containing .. to escape the shared
    directory (path traversal attack).

    The client path is now validated before being mapped to the server path
    (for all name_conversion modes). If an attempt to escape the shared
    directory is detected, the request is rejected with "path not found" and a
    security alert is logged.

  • Check for operation on root directory

    An attacker may attempt (by crafting a request) to manipulate the shared
    directory itself — for example, delete it or read/modify its attributes.
    The only legitimate operation on the shared directory root is chdir.

    Operations are now checked to detect forbidden manipulation of the shared
    directory. If such an attempt is detected, the request is rejected with
    "access denied" and a security alert is logged.

Fixes

  • Fix Drive::get_server_name: remove stale directory list entry

    If an entry was present in the in-memory directory list but the
    corresponding file no longer existed on disk, the server would return a
    path to a non-existent file.

    The stale entry and the corresponding fcb_names entry are now removed
    from the directory list, and an empty path is returned instead.

Other

  • SERVER.md: document backslash escaping in shared path definitions

    The \ character is used as an escape character in shared path definitions
    and must be doubled (e.g., C:\\INSTALL instead of C:\INSTALL).
    An example showing a path containing a , character was also added
    (D=/share_with\,comma).

  • Optimize unicode_to_ascii with conditional compilation

    Use conditional compilation to include only the relevant conversion
    function:

    • convert_utf8_to_ascii is used on non-Windows platforms
    • convert_windows_unicode_to_ascii is used only on Windows platforms
  • Fix missing closing bracket in [--bind-port=<UDP_PORT>]

    The usage string in the help output, README.md, and SERVER.md was
    missing the closing > bracket in [--bind-port=<UDP_PORT>].

Binaries

The release includes the complete NetMount source code (server, DOS client, NInstall and NMManage DOS utilities), as well as:

  • 2 builds of the DOS client: for 8086 and 80286 CPUs
  • 2 statically linked builds of the server for Windows: for i686 and x86_64 (cross-compiled using MinGW on Linux)
  • 4 statically linked builds of the server for Linux: i686, x86_64, ARM aarch64 big endian, ARM aarch64 little endian
  • the "netmount-u2a.map" file with the transliteration table

For transliteration of Unicode characters in filenames to ASCII, the NetMount server requires the file netmount-u2a.map, containing the transliteration table, to be placed next to the server binary.
The full path to the transliteration file can be changed using the argument "--translit-map-path=<PATH>".
To disable transliteration, set an empty path using "--translit-map-path=". If transliteration is disabled,
non-ASCII characters will be replaced with underscores (_).
Name conversion can be completely disabled for a specific share using "name_conversion=OFF".

Other utilities have not changed in this release. If needed, use builds from the older releases.

Don't miss a new NetMount release

NewReleases is sending notifications on new releases.