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 allname_conversionmodes). 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 ischdir.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 entryIf 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_namesentry 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:\\INSTALLinstead ofC:\INSTALL).
An example showing a path containing a,character was also added
(D=/share_with\,comma). -
Optimize
unicode_to_asciiwith conditional compilationUse conditional compilation to include only the relevant conversion
function:convert_utf8_to_asciiis used on non-Windows platformsconvert_windows_unicode_to_asciiis used only on Windows platforms
-
Fix missing closing bracket in
[--bind-port=<UDP_PORT>]The usage string in the help output,
README.md, andSERVER.mdwas
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.