mirror of
https://github.com/obarthel/amiga-smbfs.git
synced 2025-12-08 14:58:35 +00:00
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way). Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
1347 lines
45 KiB
Plaintext
1347 lines
45 KiB
Plaintext
smbfs 1.19 (27.11.2000)
|
|
|
|
- Fixed ACTION_FINDOUTPUT implementation; the memory to hold the
|
|
name of the file to be created was released before the file
|
|
was created. This could cause garbage to be written to the
|
|
output file.
|
|
|
|
- Fixed ACTION_COPY_DIR implementation; the name of the lock to
|
|
be duplicated did not get duplicated.
|
|
|
|
- Fixed ACTION_EXAMINE_OBJECT and ACTION_EXAMINE_NEXT
|
|
implementations; protection bits are now reported 'properly'
|
|
with respect to read/write access.
|
|
|
|
|
|
smbfs 1.20 (27.11.2000)
|
|
|
|
- ACTION_EXAMINE_NEXT now filters out SMB names that include
|
|
'/' or ':' characters.
|
|
|
|
|
|
smbfs 1.21 (28.11.2000)
|
|
|
|
- Modified ACTION_RENAME_DISK to remove the volume node before
|
|
changing it. It also sends the appropriate diskremove/diskinserted
|
|
input events now.
|
|
|
|
- Reorganized and rewrote the code to reduce dependencies on
|
|
the compiler runtime library.
|
|
|
|
- Unified error reporting code.
|
|
|
|
- SMBFS can now be launched from Workbench using the same parameters
|
|
you would use when starting it from Shell. Error reporting
|
|
has been adapted to show an error requester and to pool error
|
|
messages rather than printing them to the console.
|
|
|
|
|
|
smbfs 1.22 (30.11.2000)
|
|
|
|
- Fixed the test that looks for file/lock access mode collisions.
|
|
|
|
- No longer changes the case of the password; there is now an
|
|
option to make the change.
|
|
|
|
- Fixed ACTION_SAME_LOCK which was comparing the same lock with
|
|
itself.
|
|
|
|
- Added support for ACTION_EXAMINE_ALL, ACTION_EXAMINE_ALL_END
|
|
and ACTION_WRITE_PROTECT packet types.
|
|
|
|
- No longer allows for files and locks to refer to "." and "..".
|
|
The use of the backslash character '\' is also disallowed in
|
|
Amiga file/directory names.
|
|
|
|
|
|
smbfs 1.23 (30.11.2000)
|
|
|
|
- In the ExNext()/ExAll() handling functions local error variables
|
|
were shadowing each other. Fixed.
|
|
|
|
- The error reporting requester now also lists the name of the
|
|
service to connect to. This should help in telling different
|
|
invocations of the program apart.
|
|
|
|
- The size of the directory cache is now a configurable option.
|
|
|
|
- Added a new option which forces all name comparisons to be
|
|
done in a case-sensitive fashion.
|
|
|
|
- Reading/writing data to/from a file in chunks larger than
|
|
65535 bytes could fail and cause the file system to hang.
|
|
|
|
|
|
smbfs 1.24 (1.12.2000)
|
|
|
|
- Added an option to allow hidden files to be omitted from
|
|
directory listings.
|
|
|
|
- Improved upon the error reporting in the code that directly
|
|
calls the TCP/IP API functions.
|
|
|
|
- Reorganized the AmigaDOS packet handling switch..case
|
|
list.
|
|
|
|
- Added support for ACTION_MORE_CACHE packet type. The
|
|
cache in this context refers to the directory scanning
|
|
cache.
|
|
|
|
- Improved upon the host lookup error reporting code.
|
|
|
|
- Added support for file name translation such as via the
|
|
CrossDOS translation table files.
|
|
|
|
|
|
smbfs 1.25 (2.12.2000)
|
|
|
|
- SMBFS now displays some configuration information as soon as
|
|
it has successfully connected to the file server and is ready
|
|
for action. This output can be suppressed with the new
|
|
"QUIET" command line parameter.
|
|
|
|
- When removing a directory, the error code returned is examined
|
|
more closely to see whether the directory was not yet empty.
|
|
|
|
- When setting the protection bits of a file or directory, the
|
|
file system now treats either 'protected from deletion' and
|
|
'protected from writing' as indications to mark a file as
|
|
write protected. Previously, a file had to be both protected
|
|
from deletion and from writing to be treated as write protected.
|
|
|
|
- Cleaned up the program's data structures and eliminated all
|
|
static data that would hold state information. The entire
|
|
client side is now completely reentrant.
|
|
|
|
|
|
smbfs 1.26 (3.12.2000)
|
|
|
|
- File and directory names are no longer duplicated in the
|
|
SMB abstraction layer. The strings supplied by the Amiga
|
|
file system layer are referenced instead.
|
|
|
|
- Changed the way the ACTION_MORE_CACHE implementation returns
|
|
its result code to be compatible with current practices.
|
|
|
|
|
|
smbfs 1.27 (4.12.2000)
|
|
|
|
- The changes I made to the file read command in order to allow it
|
|
to read more than 65535 bytes at a time did not allow read
|
|
attempts at the end of the file to come out properly. Fixed.
|
|
|
|
- Integrated password encryption code lifted from Samba. Hope
|
|
it works as it should, because if it doesn't, I wouldn't know
|
|
how to fix it...
|
|
|
|
|
|
smbfs 1.28 (4.12.2000)
|
|
|
|
- Oh dear, more fixes to the password encryption code and the
|
|
connection setup to follow it. This time I managed to test the
|
|
code briefly with Samba and password encryption enabled.
|
|
Amazingly, it seems to work this time!
|
|
|
|
|
|
smbfs 1.29 (6.12.2000)
|
|
|
|
- Writes larger than 65535 bytes could stall and slow down the
|
|
file system. Fixed. [Thore Böckelmann]
|
|
|
|
- The ACTION_MORE_CACHE implementation never returned the total
|
|
number of cache entries allocated. Fixed. [Thore Böckelmann]
|
|
|
|
- Plain text passwords didn't seem to work any more after I made
|
|
the changes to allow for encrypted passwords to be used. Fixed.
|
|
|
|
|
|
smbfs 1.30 (6.12.2000)
|
|
|
|
- Changed the structure of the share names by which the file system
|
|
refers to the data on the server; they all start with a backslash
|
|
now. This seems to help NT and doesn't break the rest.
|
|
|
|
- For file shares exported using 'share level security', no passwords
|
|
will be transmitted.
|
|
|
|
|
|
smbfs 1.31 (7.12.2000)
|
|
|
|
- The ACTION_EXAMINE and ACTION_EXAMINE_FH implementations now verify
|
|
that the name to return will fit into the FileInfoBlock's limited
|
|
buffer space.
|
|
|
|
- Deleting files and directories from a directory currently being
|
|
scanned via ACTION_EXAMINE_NEXT or ACTION_EXAMINE_ALL will now cause
|
|
the directory scanner to restart. This is ugly, I know, but at least
|
|
it won't cause the scanning process to hickup or lose entries
|
|
directory entries during its course of duty. The flip side is that
|
|
the scanner will probably return some entries twice. There must
|
|
be a better way to implement this, but for now, this is it.
|
|
|
|
- Tried to make device and volume node removal safer.
|
|
|
|
- SMBFS now always adds a device node to go along with the volume node.
|
|
It's safer that way because for every file system you either have a
|
|
single device node in the system (and no volume node) or a volume
|
|
node *and* a device node. If the device node is missing, there's
|
|
typically something wrong and some application software cannot handle
|
|
this case properly. SMBFS will attempt to add a new, unique device
|
|
node every time it is launched.
|
|
|
|
- When specifying the name of the file system device to add, SMBFS
|
|
now complains if that name already exists.
|
|
|
|
|
|
smbfs 1.32 (8.12.2000)
|
|
|
|
- File and directory modification dates were always off by six hours and
|
|
one second. I don't know how that happens, it doesn't seem to be a bug
|
|
in the date conversion routines. I worked around the problem by adding
|
|
and subtracting an adjustment value.
|
|
|
|
|
|
smbfs 1.33 (10.12.2000)
|
|
|
|
- The ACTION_PARENT_DIR implementation did not return a ZERO lock for
|
|
the root directory. Fixed. [Rudolph Riedel]
|
|
|
|
- Replaced the doubly-linked Exec lists with skip lists which
|
|
are better suited for the repeated lookup operations that
|
|
are so common in the file system. This time the list code
|
|
seems to work properly.
|
|
|
|
- Added -- largely untested -- time and date decoding routines for
|
|
directory entries returned by NT.
|
|
|
|
|
|
smbfs 1.34 (10.12.2000)
|
|
|
|
- Had to take out the skip list code again since it did not seem to
|
|
work reliably.
|
|
|
|
- Further tweaking to the NT date and time decoding code.
|
|
|
|
|
|
smbfs 1.35 (10.12.2000)
|
|
|
|
- Small modification to the ACTION_EXAMINE_NEXT/ACTION_EXAMINE_ALL code
|
|
which tries to work around a strange effect caused by Amiga Samba
|
|
returning the contents of an empty drawer.
|
|
|
|
|
|
smbfs 1.36 (11.12.2000)
|
|
|
|
- More fixes to the NT date and time conversion code and the
|
|
strange six hour fixup that seems to be necessary for the
|
|
'regular' time conversion to work.
|
|
|
|
|
|
smbfs 1.37 (11.12.2000)
|
|
|
|
- Replaced the entire 'regular' date and time conversion code. The
|
|
strange six hour fixup is no longer necessary.
|
|
|
|
|
|
smbfs 1.38 (11.12.2000)
|
|
|
|
- Ditched the packet size kludges in "sock.c" and "proc.c" I had put
|
|
in there. It seems that only the 'smba_write()'/'smba_read()' code
|
|
could trigger it, and that code was fixed quite a while ago.
|
|
|
|
- Migrated some code changes from the Samba source over to the
|
|
directory scanner.
|
|
|
|
- Maximum transmission size per packet is now the same as the
|
|
number the server allowed us to use rather than a fixed number
|
|
imposed by VM page sizes.
|
|
|
|
- Tried to clean up more of the code.
|
|
|
|
- Discovered that the 'smb_valid_packet()' routine never could have
|
|
worked and fixed it so that it now finally does what it should do.
|
|
|
|
- Better error propagation for some routines in "proc.c".
|
|
|
|
- More streamlined error testing code.
|
|
|
|
|
|
smbfs 1.39 (11.12.2000)
|
|
|
|
- Almost fixed several bugs in 'smb_proc_readdir_long()'.
|
|
|
|
- 'smb_proc_readdir_long()' does not work correctly. It only seems to
|
|
work, but will fail if the scanner is to restart before the entire
|
|
directory is read. Restored the old behaviour :(
|
|
|
|
|
|
smbfs 1.40 (13.12.2000)
|
|
|
|
- Took out some more unused and unnecessary code.
|
|
|
|
- Rewrote the time and date conversion routines.
|
|
|
|
- Modified the directory reading code so that it no longer relies
|
|
upon the last directory entry index which doesn't seem to be
|
|
correct most of the time.
|
|
|
|
- Directory scanning errors are now flagged as such.
|
|
|
|
|
|
smbfs 1.41 (16.12.2000)
|
|
|
|
- In the SMB abstraction layer, the directory cache is now invalidated
|
|
only if the respective action that could have invalidated it succeeds.
|
|
|
|
- Now clears the directory cache only if the respective action would
|
|
have affected the directory being cached.
|
|
|
|
- In debug mode [Ctrl]+F will display a list of open files and allocated
|
|
locks.
|
|
|
|
- Added very silly support for ACTION_SET_COMMENT packet.
|
|
|
|
- Found an interesting bug fix for 'smb_proc_readdir_long()' in the
|
|
Linux 2.4.0 kernel which seemed worth integrating into the file system.
|
|
|
|
|
|
smbfs 1.42 (19.12.2000)
|
|
|
|
- Integrated Chris Hertel's broadcast name query code. This means that
|
|
the name of the host whose file shares you want to access need no
|
|
longer be in the hosts database. However, you still cannot refer to
|
|
a host solely by its IP address.
|
|
|
|
|
|
smbfs 1.43 (21.12.2000)
|
|
|
|
- The integrated broadcase name query code would conflict with the
|
|
DNS lookup. Fixed. [Thore Böckelmann]
|
|
|
|
- The NetBIOS name query code now retries four times to get a response
|
|
out of the network.
|
|
|
|
- Put the mysterious 6 hour time offset fix back in.
|
|
|
|
|
|
smbfs 1.44 (29.12.2000)
|
|
|
|
- Rewrote the host lookup error reporting code to use the appropriate
|
|
API function.
|
|
|
|
- Discovered that all the functionality required by SMBFS was supported
|
|
by the original free AmiTCP 3.0 release. Changed the "bsdsocket.library"
|
|
open parameters.
|
|
|
|
- The ACTION_EXAMINE_OBJECT implementation consistently got the name of
|
|
the root directory wrong. Fixed.
|
|
|
|
|
|
smbfs 1.45 (7.1.2001)
|
|
|
|
- Discovered why file and directory creation dates were wrong by about
|
|
six hours. Fixed.
|
|
|
|
- The order of the parameters passed to the 'ExAll()' filter hook was
|
|
wrong. Fixed [Thorsteinn Sveinsson and Matt Sealey].
|
|
|
|
|
|
smbfs 1.46 (1.2.2001)
|
|
|
|
- Removed the workarounds for the mysterious 'off by six hours' bug.
|
|
The time delta value added was consistently wrong.
|
|
|
|
|
|
smbfs 1.47 (18.2.2001)
|
|
|
|
- The name of the domain/workgroup, the name of the user and the
|
|
password to be used can now be preset using environment variables.
|
|
|
|
- Changed the command line argument template to work better with the
|
|
newly introduced environment variable settings.
|
|
|
|
|
|
smbfs 1.48 (3.3.2001)
|
|
|
|
- Modified the command template so that the final parameter can no
|
|
longer cause all other parameters to be swallowed. Also updated
|
|
the documentation.
|
|
|
|
|
|
smbfs 1.49 (3.3.2001)
|
|
|
|
- Handling of ACTION_FINDUPDATE needed improving. It should have
|
|
created a file that didn't already exist. It now does [David Gerber].
|
|
|
|
|
|
smbfs 1.50 (4.3.2001)
|
|
|
|
- ACTION_FINDUPDATE is now associated with a shared lock. It used
|
|
to be an exclusive lock [David Gerber].
|
|
|
|
- The test to follow ACTION_FINDUPDATE that determines whether the
|
|
file to open already exists now also tries to 'stat()' the file
|
|
in question to find out whether it exists.
|
|
|
|
|
|
smbfs 1.51 (13.3.2001)
|
|
|
|
- Whoops. The new code to pull data from environment variables didn't
|
|
actually check whether the work group name could be set up properly
|
|
and thus didn't complain about it either. It now notifies you if
|
|
no work group name was provided and none could be found.
|
|
|
|
|
|
smbfs 1.52 (22.6.2001)
|
|
|
|
- Added another option which allows you to preset the time zone offset
|
|
to use when translating between the local time and the SMB server
|
|
time. Using the default locale doesn't work for that purpose all the
|
|
time since there are so many misconfigured servers out there.
|
|
|
|
- The ACTION_DIE packet didn't have the desired effect if the file
|
|
system didn't have a reason to wait for any resources to be
|
|
released again. It just wouldn't quit. Now it does.
|
|
|
|
- Before it exits, the file system no longer posts a disk change
|
|
event if it was launched from Workbench. I found that the steps
|
|
taken so far could end up deadlocking Workbench.
|
|
|
|
|
|
smbfs 1.53 (26.6.2001)
|
|
|
|
- Changed the file name parser; it should now be possible to tie assigns
|
|
to files and directories on an smb volume. Since the updated file name
|
|
translation code also is a bit smarter about when to use which
|
|
file name separator character, accesses to the media should be a
|
|
bit faster, too.
|
|
|
|
- When translating path names, trailing '/' characters are now properly
|
|
parsed, i.e. Lock("/",...) should always bring up the parent directory
|
|
[Matt Sealey].
|
|
|
|
- Duplicating a ZERO lock now works as expected.
|
|
|
|
|
|
smbfs 1.54 (27.6.2001)
|
|
|
|
- Directory and file creation didn't work that properly after applying
|
|
the changes I made to the parser. Fixed [Matt Sealey].
|
|
|
|
|
|
smbfs 1.55 (3.3.2002)
|
|
|
|
- At least samba 2.2.2-12 on linux can send total_data of 0 bytes. This
|
|
caused sock.c/smb_receive_trans2() malloc() (==AllocVecPooled) to fail
|
|
on smba_readdir(). Fixed [Harry Sintonen].
|
|
|
|
- Added quickfix against crash if smb_abstraction.c/smb_smba_readdir()
|
|
fails. This is by no means a real fix, but at least it doesn't crash
|
|
[Harry Sintonen].
|
|
|
|
- There is definitely something fishy in the smbfs restart/retry scheme,
|
|
it just doesn't work properly (all state data has to be, and is,
|
|
reset when restarts occur, but still it tries to use the old data as if
|
|
nothing happened). Someone should really take a closer look at this
|
|
[Harry Sintonen].
|
|
|
|
|
|
smbfs 1.56 (3.9.2002)
|
|
|
|
- Rewrote the Setup() code which allocates and initializes the device and
|
|
volume nodes. Lost all Forbid()..Permit() pairs on the way, making the
|
|
code more robust and less weird.
|
|
|
|
- In proc.c/smb_proc_readdir_long() now specifically watches for the
|
|
smb_trans2_request() function return empty data and parameter values.
|
|
This is now treated as an attempt to read from an empty directory.
|
|
Previously, there was a slight change that the information was
|
|
taken seriously even if NULL was returned.
|
|
|
|
|
|
smbfs 1.57 (3.9.2002)
|
|
|
|
- Ran the code through GCC and rewrote the code to get rid of the compiler
|
|
warnings that appeared to have something more serious about them. This
|
|
includes, for example, comparisons between signed and unsigned values.
|
|
|
|
|
|
smbfs 1.58 (5.9.2002)
|
|
|
|
- Rebuilt using my own TCP/IP stack SDK. Rebuilding the code with the
|
|
Miami SDK should still be possible, though.
|
|
|
|
- Changed the way smb_proc_readdir_long() aborts the job if no valid
|
|
data is read.
|
|
|
|
|
|
smbfs 1.59 (10.9.2003) [Harry Sintonen <sintonen -at- iki -dot- fi>]
|
|
|
|
- Fixed ACTION_DELETE_OBJECT to restart directory scanning, it
|
|
searched for wrong object. Fixes the problem where every other
|
|
file was skipped when deleting directory.
|
|
|
|
|
|
smbfs 1.60 (11.2.2004) [Peter Riede <Noster-Riede -at- T-Online -dot- de>]
|
|
|
|
- Fixed ACTION_SEEK, it doesn't works if followed by ACTION_WRITE.
|
|
Fixes the problem by using the SMBlseek packet instead of just
|
|
remembering the position in the local FileNode structure
|
|
|
|
- Fixed ACTION_SETFILESIZE, has returned an errorcode of 37 instead
|
|
of 0L on success.
|
|
|
|
- Added support for the ACTION_LOCK_RECORD and ACTION_UNLOCK_RECORD
|
|
packets.
|
|
|
|
|
|
smbfs 1.61 (27.4.2004)
|
|
|
|
- Reworked the ACTION_SEEK implementation. Turns out that the SMB
|
|
lseek packet only seems to work for the Samba server but produces
|
|
unpredictable results with Microsoft flavoured servers. The new
|
|
code, which helps to avoid trouble with overlapping write access
|
|
and seeks, now performs much like the old one except that it
|
|
"notifies" the SMB server of the new file position to be used.
|
|
Tested both with Samba and Windows XP: works as it should.
|
|
|
|
|
|
smbfs 1.62 (8.5.2004)
|
|
|
|
- Added sanity checks to the record locking code. For example,
|
|
locking a record of length 0 must be considered illegal. Also,
|
|
since the protocol deals with 32 bit signed integers for
|
|
file position and record length, parameters that are "too large"
|
|
and come out as negative values are now rejected.
|
|
|
|
|
|
smbfs 1.63 (9.5.2004)
|
|
|
|
- Added more sanity checks to the record locking code, this time
|
|
to avoid integer overflows.
|
|
|
|
- Added support for the SMB 'archive' and 'system' file attributes,
|
|
which are mapped to the Amiga 'archived' and 'pure' protection
|
|
bits.
|
|
|
|
- Cleaned up the header files.
|
|
|
|
|
|
smbfs 1.64 (13.5.2004)
|
|
|
|
- ExamineFH() did not fill in the file protection bits. Fixed.
|
|
|
|
- Ported to AmigaOS4.
|
|
|
|
|
|
smbfs 1.65 (16.5.2004)
|
|
|
|
- The port numbers of the NetBIOS session and name services are no
|
|
longer hard-coded. They are now looked up (netbios-ns/udp and
|
|
netbios-ssn/tcp), and if that fails, the hard-coded default port
|
|
numbers are used instead.
|
|
|
|
- Tried to reduce the risk of triggering buffer overflows by replacing
|
|
calls to strcpy/strcat. This revealed weaknesses in a number of
|
|
places, including the code that fills in the names of the directory
|
|
entries.
|
|
|
|
- Instead of calling memcpy(), the code now invokes exec.library/CopyMem(),
|
|
which should be a wee bit faster than what the 'C' runtime library can do.
|
|
|
|
- Merged with Peter Riede's changes: for small packets to be sent,
|
|
SMBwrite is used instead of SMBwritebraw (which greatly enhances
|
|
performance), the server max_xmit field is initialized differently
|
|
if the session was opened with a SMBtconx packet and ACTION_SEEK
|
|
no longer sets the error code to an undefined value in case of
|
|
success.
|
|
|
|
|
|
smbfs 1.66 (10.6.2004)
|
|
|
|
- Added a paranoia check to the ExAll() implementation which should
|
|
avoid trouble with extremely short data buffers.
|
|
|
|
|
|
smbfs 1.67 (27.5.2005)
|
|
|
|
- Replaced the long NT date conversion code with something hopefully
|
|
much more robust. The results so far are both encouraging and
|
|
irritating. Dates that previously came out as "unknown" are now
|
|
processed, but there are differences between the dates shown in the
|
|
directory listing and by listing the files by name. Go figure...
|
|
|
|
- Transplanted some more code from Samba to handle directory entry
|
|
data conversion.
|
|
|
|
|
|
smbfs 1.68 (3.6.2005)
|
|
|
|
- It appears that Windows XP can produce directory listings with
|
|
file/directory modification times set to 0, indicating that no
|
|
such information is available, while the associated last file
|
|
write access data is present. Previously, smbfs only reported
|
|
the modification. If this data is unavailable and the date of
|
|
the last write access is, the last write access will be
|
|
reported instead.
|
|
|
|
|
|
smbfs 1.69 (13.6.2005)
|
|
|
|
- The time stamps used in "proc.c", as returned and submitted to
|
|
the SMB file system on the other end of the wire are apparently
|
|
all in Universally Coordinated Time already (or at least, this
|
|
seems to be the case with Samba and Windows XP). Hence no conversion
|
|
between local time and UTC is necessary, which would otherwise
|
|
distort all date stamps converted. I modified the file system to
|
|
leave all time stamps essentially unadjusted for local time in
|
|
"proc.c". The local time zone adjustments are now performed only
|
|
where the time in question is known to be Amiga-specific, such as
|
|
the current system time or the date stamp to set for a file.
|
|
|
|
The time conversion appears to be working correctly now, but it
|
|
does ignore the effects of daylight savings time, which you might
|
|
want to adjust for manually through the TIMEZONEOFFSET option
|
|
(careful though: this overrides your current locale-defined time
|
|
zone settings as far as smbfs is concerned).
|
|
|
|
Unsolved problem: at least Windows XP seems to return different
|
|
time stamps for directory listings and for indidivual files. As
|
|
far as I can tell, the sets of time stamps returned for either
|
|
doesn't match anywhere.
|
|
|
|
|
|
smbfs 1.70 (13.6.2005)
|
|
|
|
- Introduced a new option to account for daylight savings time
|
|
when appropriate.
|
|
|
|
- Looks like some of the time stamps used in "proc.c" are
|
|
transmitted in local time after all; brought back the
|
|
conversion functions.
|
|
|
|
|
|
smbfs 1.71 (13.6.2005)
|
|
|
|
- The extended directory scanning entry conversion code now swaps
|
|
the last modification and last write access date stamps. This
|
|
matches the time of the last modification, as returned by the
|
|
regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
|
|
time resolution is a little bit coarser because the modification
|
|
time as expressed by the SMB getattr function cannot represent
|
|
60 distinct seconds per minute but only 30. The net effect is
|
|
that the resulting time stamps in a directory listing and by
|
|
examining a file can differ by one second.
|
|
|
|
- The DST option's time offset was added to rather than subtracted
|
|
from the local time. Fixed.
|
|
|
|
|
|
smbfs 1.72 (14.4.2009)
|
|
|
|
- In proc.c, smb_setup_header() initialized the SMB header length
|
|
field with a number which was too large by four bytes. Consequently,
|
|
what was later committed to the wire would have four trailing data
|
|
bytes which could contain random values. This often didn't do much
|
|
harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
|
|
looks of the trailing junk bytes.
|
|
|
|
|
|
smbfs 1.73 (17.4.2009)
|
|
|
|
- Modified smb_valid_packet() in proc.c to check whether the packet
|
|
received is smaller than expected, not whether the length matches
|
|
exactly. This seems to fix the protocol negotiation with Samba 3.2.5
|
|
for now. Haven't checked Vista yet, though...
|
|
|
|
|
|
smbfs 1.74 (31.8.2009)
|
|
|
|
- Integrated Harry Sintonen's fix for the problem caused by large
|
|
writes to files. The respective packet size was off by one byte.
|
|
Thank you very much!
|
|
|
|
|
|
smbfs 1.75 (1.6.2011)
|
|
|
|
- The ACTION_INFO packet is now handled correctly if a ZERO lock
|
|
is provided. Previously, it would return failure, prompting DOS
|
|
to show its "please insert disk" requester.
|
|
|
|
|
|
smbfs 1.76 (10.12.2012)
|
|
|
|
- Added SMB over TCP support (port 445). smbfs now ignores the NetBIOS
|
|
transport and uses the raw SMB transport. This seems to work both
|
|
better with Windows 7 (and presumably Vista; it does work with Mac OS X
|
|
Snow Leopard and beyond), and still works with Windows XP. Currently,
|
|
this is enabled by default and still needs a command line switch to
|
|
disable it.
|
|
|
|
|
|
smbfs 1.77 (21.2.2016)
|
|
|
|
- Added command line switch/tool type "NETBIOS" which disables the
|
|
raw SMB transport mode, which is now the default.
|
|
|
|
|
|
smbfs 1.78 (21.2.2016)
|
|
|
|
- SMB packet decoding (and printing the results) can now be enabled
|
|
with a command line option. The decoding functions, however, must
|
|
be built into the program at compile time through the DUMP_SMB
|
|
preprocessor definition.
|
|
|
|
|
|
smbfs 1.79 (21.2.2016)
|
|
|
|
- SMB packet decoding now includes the contents of the two
|
|
packet buffers in the output, as well as the origin of the
|
|
packet (which is relevant because the data has different
|
|
meanings even if it shares the same command code).
|
|
|
|
|
|
smbfs 1.80 (28.2.2016)
|
|
|
|
This is the first release which incorporates changes from the MorphOS
|
|
smbfs version 50.3, which was kindly provided by Frank Mariak. The individual
|
|
changes came from Harry Sintonen, David Gerber and Frank Mariak. Thank
|
|
you very much!
|
|
|
|
- When converting the server's modification time for a FileInfoBlock->fib_Date
|
|
we now prefer the creation time record if the modification time is not
|
|
provided.
|
|
|
|
- When the file system enters its packet dispach loop, its Task priority
|
|
is increased to 10 unless it already uses a higher priority level;
|
|
the priority is restored when the dispatch loop terminates.
|
|
|
|
- The ACTION_READ_LINK packet is now properly rejected as being
|
|
unsupported.
|
|
|
|
- The default maximum transmission buffer size has been increased by 4 bytes.
|
|
|
|
- Added another error message ("ERRnosuchshare").
|
|
|
|
|
|
smbfs 1.81 (6.3.2016)
|
|
|
|
- There used to be four different "max_xmit" variables which shared either
|
|
the same name or were slightly different (e.g. "maxxmt"). It was hard
|
|
to tell which was which, and which type (some were 'int', some were
|
|
'word'). Turns out there were just two types which were relevant for
|
|
the operation of the file system.
|
|
|
|
- The maximum transmission buffer size is now a parameter which can be
|
|
preset through command line options or icon tool types. The file
|
|
system now respects this upper limit and never sends packets
|
|
larger than this number.
|
|
|
|
- Size of the packet buffer as allocated is now printed along with the
|
|
SMB dump output.
|
|
|
|
- Reworked several word/dword decoding and encoding macros and functions
|
|
which lacked proper casting from byte quantities to word/dword
|
|
quantities.
|
|
|
|
|
|
smbfs 1.82 (6.3.2016)
|
|
|
|
- More rework in the word/dword decoding code and type casting.
|
|
|
|
- In smb_proc_reconnect() the server session key is now a
|
|
local variable which is initialized as needed.
|
|
|
|
|
|
smbfs 1.83 (20.3.2016)
|
|
|
|
- Reworked the SMB decoding so that the ANDX commands can be
|
|
handled properly. Not that I have actually seen any of these
|
|
commands at work, mind you.
|
|
|
|
|
|
smbfs 1.84 (25.3.2016)
|
|
|
|
- Major rework of the code which decodes individual commands,
|
|
their parameters and the responses. This is still incomplete,
|
|
but it's a lot more useful now than before.
|
|
|
|
|
|
smbfs 1.85 (27.3.2016)
|
|
|
|
- Moved the SMB decoding code out of "sock.c" and into a
|
|
separate set of files.
|
|
|
|
- The SMB decoding code should be functionally complete now,
|
|
covering all the commands which smbfs uses.
|
|
|
|
|
|
smbfs 1.86 (27.3.2016)
|
|
|
|
- Figured why Action_Read->smba_read() could end up returning
|
|
random junk in the first few bytes of the file being read and
|
|
fixed it. All the work on the SMB message decoder has finally
|
|
paid off :-)
|
|
|
|
|
|
smbfs 1.87 (28.3.2016)
|
|
|
|
- The SMB message decoder now converts date and time formats
|
|
for display.
|
|
|
|
- The SMB message decoder now prints 64 bit numbers in
|
|
decimal format, too.
|
|
|
|
|
|
smbfs 1.88 (28.3.2016)
|
|
|
|
- Added decoding of capabilities described in "Implementing CIFS"
|
|
which are not described in "Common Internet File System (CIFS)
|
|
Protocol".
|
|
|
|
- Integers documented as being signed are now treated as such,
|
|
with the exception of the creation time field in directory
|
|
listings.
|
|
|
|
|
|
smbfs 1.89 (29.3.2016)
|
|
|
|
- SMB message decoder now also prints NetBIOS session header
|
|
information.
|
|
|
|
- Data transmitted by SMB_COM_WRITE and SMB_COM_WRITE_RAW as well
|
|
as data received by SMB_COM_READ and SMB_COM_READ_RAW is now
|
|
printed by the SMB message decoder.
|
|
|
|
|
|
smbfs 1.90 (29.3.2016)
|
|
|
|
- The respective fall-back code for smba_read() and smba_write()
|
|
would fail to catch the raw read/write operation failing properly
|
|
and end up skipping the non-raw read/write fallback operation
|
|
altogether. Whether or not this happened would depend upon the
|
|
number of bytes to be read/written, respectively. The net effect
|
|
was that newly-created short files would remain entirely empty
|
|
with no data written at all. A similar effect happened for
|
|
the read operation.
|
|
|
|
|
|
smbfs 1.91 (30.3.2016)
|
|
|
|
- Turns out that the payload size transmitted in the NetBIOS
|
|
session header was too short by 4 bytes due to a misinterpretation
|
|
of the code and a subsequent "bug fix".
|
|
|
|
- SMB_COM_WRITE_RAW server responses may be followed not just
|
|
by a single SMB_COM_WRITE_COMPLETE response, but might be
|
|
followed by any number of SMB_COM_WRITE_RAW responses. This
|
|
is now handled correctly.
|
|
|
|
- All functions in smb_abstraction.c now report and test for
|
|
error return values in a uniform fashion. Mixing up return
|
|
values and error codes is no longer so easy.
|
|
|
|
|
|
smbfs 1.92 (31.3.2016)
|
|
|
|
- Added NetBIOS header debug output.
|
|
|
|
|
|
smbfs 1.93 (31.3.2016)
|
|
|
|
- The DOS error status and code are now decoded properly.
|
|
|
|
- If there is no sufficient command data or other data in
|
|
the SMB message, the decoder no longer attempts to
|
|
decode it.
|
|
|
|
- Decoding of SMB_COM_SEARCH data had the client/server
|
|
information mixed up.
|
|
|
|
- SMB_COM_READ_RAW now properly updates the offset value,
|
|
and also sets the number of bytes read so far correctly
|
|
if the initial read operation succeeds. Previously, the
|
|
number of bytes read would remain 0.
|
|
|
|
- SMB_COM_WRITE_RAW now sets the offset value correctly,
|
|
which in turn will update the directory cache file
|
|
size information correctly, too.
|
|
|
|
|
|
smbfs 1.94 (1.4.2016)
|
|
|
|
- Added provisional conversion functions for UTF-8
|
|
and ISO 8859-1.
|
|
|
|
|
|
smbfs 1.95 (2.4.2016)
|
|
|
|
- Plugged in the UTF-8 conversion functionality.
|
|
|
|
|
|
smbfs 1.96 (2.4.2016)
|
|
|
|
- SMB_COM_NEGOTIATE capabilities field is no longer a 16 bit
|
|
unsigned integer, but a 32 bit unsigned integer, and it's
|
|
called "capabilities" rather than "blkmode".
|
|
|
|
- The client capabilities sent to the server no longer have
|
|
random data in the reserved and capapabilities fields.
|
|
|
|
- The client now identies as a Unix system if the server has
|
|
identified itself as such, too.
|
|
|
|
- Fixed the 32 bit status field decoding. 32 bit status code
|
|
("NT status" codes) could have accidentally been enabled
|
|
because the client capability field would contain random
|
|
data.
|
|
|
|
|
|
smbfs 1.97 (2.4.2016)
|
|
|
|
- New oplock level in SMB_COM_LOCKING_ANDX could have been
|
|
random.
|
|
|
|
- Last parameter word of SMB_COM_WRITE_RAW could have been
|
|
uninitialized.
|
|
|
|
|
|
smbfs 1.98 (2.4.2016)
|
|
|
|
- SMB header is set to zero during every setup, and needs
|
|
not be reset again.
|
|
|
|
- SMB_COM_TREE_CONNECT_ANDX no longer sets the error class
|
|
before sending a client request.
|
|
|
|
- Changed mapping of ERRnoaccess (permission denied) from
|
|
ERROR_OBJECT_IN_USE to ERROR_OBJECT_NOT_FOUND, which is
|
|
closer to its purpose.
|
|
|
|
|
|
smbfs 1.99 (3.4.2016)
|
|
|
|
- Figured out that smbfs needs a minimum stack size of
|
|
20000 bytes to run correctly. Modified the startup
|
|
code to provide as much, if possible.
|
|
|
|
|
|
smbfs 1.100 (3.4.2016)
|
|
|
|
- smb_proc_reconnect() is now much more paranoid when
|
|
it comes to verify that the negotiated protocol
|
|
makes sense. It actually bails out if the server
|
|
hasn't got a clue as to what protocol should be
|
|
used instead of doing who knows what.
|
|
|
|
- If smb_proc_reconnect() negotiates LAN Manager 2.0
|
|
protocol or worse, it now sets up the capabilities
|
|
field to match what NT LAN Manager would have used.
|
|
|
|
- smb_proc_reconnect() now reads and uses the maximum
|
|
raw read/write size from the server instead of just
|
|
assuming that it will be 65535 (appropriate for
|
|
LAN Manager 2.0 and older). Also, the challenge
|
|
key (crypt key) length is read correctly instead of
|
|
assuming that it will always be 8.
|
|
|
|
|
|
smbfs 1.101 (4.4.2016)
|
|
|
|
- Added documentation for SMB_COM_SESSION_SETUP_AND_X
|
|
with regard to the LANMAN 2.0 protocol variant of
|
|
the setup message in smb_proc_reconnect(). It really
|
|
does contain 10 parameter words.
|
|
|
|
|
|
smbfs 1.102 (9.4.2016)
|
|
|
|
- Now builds properly for AmigaOS4.
|
|
|
|
- in proc.c smb_encode_smb_length() now properly fills
|
|
in bit #17 of the message length instead of just
|
|
checking for the message to be longer than 65535
|
|
bytes.
|
|
|
|
- Added the few missing error messages for error codes
|
|
covered by the "Common Internet File System (CIFS) Protocol"
|
|
documentation.
|
|
|
|
- smba_write() now updates the cached file size if it
|
|
manages to execute one successful write operation.
|
|
|
|
|
|
smbfs 1.103 (14.4.2016)
|
|
|
|
- Added DUMPSMBLEVEL option which controls how much raw
|
|
data output is produced. By default (level 0) no raw
|
|
data output is produced at all. Level 1 will print the
|
|
contents of the command data area. Level 2 will print
|
|
the raw data used by the respective commands, with any
|
|
management/control information stripped off.
|
|
|
|
|
|
smbfs 1.104 (16.4.2016)
|
|
|
|
- For smb_request_write_raw() return values of 0 now indicate success.
|
|
|
|
- Simplified the raw read portion of smba_read() by removing the test
|
|
that avoids dropping into a read loop below. The loop handles the
|
|
special case well.
|
|
|
|
- Recalculated the overhead for SMB_COM_READ. It's still 52 bytes,
|
|
but now the documentation states how this number comes about.
|
|
|
|
- Recalculated the overhead for SMB_COM_WRITE. It's 52 bytes and
|
|
not 56 bytes.
|
|
|
|
- Recalculated the overhead for the SMB_COM_WRITE_RAW command, and
|
|
it's 63 bytes, not 4.
|
|
|
|
- Unless smb_proc_write_raw() finds that sending the packet results
|
|
in a transmission error, it will try to pick up the server responses.
|
|
Previously, it would not even try that, which could deadlock the
|
|
client<->server message exchange.
|
|
|
|
|
|
smbfs 1.105 (16.4.2016)
|
|
|
|
- Fixed decoding of maximum buffer size; this used to come out
|
|
as 0, which made smbfs switch back to the default minimum
|
|
supported (1024 bytes).
|
|
|
|
- Corrected use of the maximum raw write size as the size used
|
|
by the client to perform raw reads with. The maximum allowed
|
|
are 65535 bytes for a raw read request. Likewise, the
|
|
maximum raw write size is 65535 bytes, too.
|
|
|
|
|
|
smbfs 1.106 (17.4.2016)
|
|
|
|
- More detailed error class/code translation information now
|
|
shows up in the debug log.
|
|
|
|
- The SMB dump output can now be stored in a file, rather than
|
|
having to be redirected to one. When storing it in a file,
|
|
the output will be appended to an existing file, otherwise
|
|
a new file will be created.
|
|
|
|
- The raw read/write functions now respect the upper limit
|
|
for the amount of data to be written, as given by the server.
|
|
|
|
|
|
smbfs 1.107 (20.4.2016)
|
|
|
|
- Added WRITEBEHIND and PREFERWRITERAW options. WRITEBEHIND will
|
|
allow SMB_COM_WRITE_RAW commands to complete asynchronously.
|
|
PREFERWRITERAW will make the file system use SMB_COM_WRITE_RAW
|
|
over SMB_COM_WRITE when it has a choice.
|
|
|
|
|
|
smbfs 1.108 (23.4.2016)
|
|
|
|
- Now properly handles the error code returned when Samba
|
|
is asked to remove a non-empty directory. The error is
|
|
translated to ENOTEMPTY.
|
|
|
|
|
|
smbfs 1.109 (23.4.2016)
|
|
|
|
- Activated the PREFERWRITERAW option which had not been wired
|
|
up yet. Oops :-( Turns out that with this option enabled
|
|
write operations are indeed slower than the with the
|
|
adaptive SMB_COM_WRITE/SMB_COM_WRITE_RAW code, on account that
|
|
that SMB_COM_WRITE_RAW transmits the data in two packets, plus
|
|
overhead for the server response.
|
|
|
|
- Recalculated the threshold below which a write operation will
|
|
be performed using SMB_COM_WRITE instead of SMB_COM_WRITE_RAW.
|
|
|
|
- Fixed how the WRITEBEHIND option for the SMB_COM_WRITE_RAW
|
|
command is implemented: the client must not wait for the
|
|
server to acknowledge the command.
|
|
|
|
- Investigated the performance difference between SMB_COM_WRITE_RAW
|
|
using the "write behind" and "write through" modes. In my tests
|
|
the difference came down to about 10% performance gain for
|
|
the "write behind" mode.
|
|
|
|
- Compared the performance of plain SMB_COM_WRITE (Windows 7) and
|
|
the adaptive SMB_COM_WRITE/SMB_COM_WRITE_RAW (Samba 3.0.25).
|
|
The adaptive SMB_COM_WRITE/SMB_COM_WRITE_RAW is about as fast
|
|
as the plain SMB_COM_WRITE, with "Windows 7" running on the
|
|
same machine as WinUAE (with AmigaOS 3.9) and Samba running
|
|
on a local server connected via GBit Ethernet. This means that
|
|
SMB_COM_WRITE is significantly slower with Windows 7.
|
|
|
|
|
|
smbfs 1.110 (1.5.2016)
|
|
|
|
- Added the DEBUGFILE/K option. Not everybody has Sashimi or
|
|
a tool like it running in the background, which makes sharing
|
|
file system level debug information difficult.
|
|
|
|
|
|
smbfs 1.111 (11.5.2016)
|
|
|
|
- You can now identify smbfs by checking the DosList->dol_misc.dol_volume.dol_DiskType
|
|
field. It will read back as 0x534D4200, which is equivalent to the signature
|
|
"SMB\0". This change was suggested by Chris Handley and Chris Young.
|
|
Thank you very much!
|
|
|
|
|
|
smbfs 1.112 (26.9.2016)
|
|
|
|
- The negotiation in smb_proc_reconnect() picked up the server's
|
|
maximum buffer size and then always added 4 bytes on top of it.
|
|
From the looks of it, this was intended to account for the
|
|
4 byte NetBIOS session header to be prepended to each SMB
|
|
command block. In practice it could push the size of a
|
|
write operation beyond what the server would accept.
|
|
|
|
|
|
smbfs 1.113 (29.9.2016)
|
|
|
|
- Removed the SMB_HEADER_LEN constant, since it wasn't actually referring to the
|
|
length of the SMB header, but the NetBIOS session header plus the SMB header.
|
|
This led to some confusion as to what exactly the packet byte offsets used by
|
|
"proc.c" would reference.
|
|
|
|
- "proc.c" now lists the byte offset values into the packet buffer, so as
|
|
to make it clearer what exactly is being referenced.
|
|
|
|
- smb_valid_packet() now correctly displays the expected and actual
|
|
packet size.
|
|
|
|
- smb_setup_header() no longer includes the NetBIOS session header
|
|
in the total message length calculation. Which means that smbfs
|
|
no longer sends packets with a NetBIOS header which claims that
|
|
the messages should be longer than they actually are.
|
|
|
|
- smb_proc_write_raw() no longer cares about the number of
|
|
command words, but only about the number of data bytes and
|
|
the command, when waiting for a raw write operation to
|
|
conclude.
|
|
|
|
|
|
smbfs 1.114 (1.10.2016)
|
|
|
|
- The packet buffer size is now increased during the protocol
|
|
negotiation, if the default buffer size proves to be too
|
|
small. This avoids trouble with the MAXTRANSMIT option,
|
|
which used to leave the original packet buffer size
|
|
unchanged, and too short.
|
|
|
|
- The raw write operation no longer stumbles into a 0 length
|
|
write, which the server would not expect and not respond to.
|
|
|
|
- Moved the test for the "write behind" option in the
|
|
raw write operation so that it is handled before the
|
|
server response (which hasn't arrived yet) is checked.
|
|
|
|
- Verified that the raw write operation can deal properly
|
|
with the server response (interim update and write
|
|
completion).
|
|
|
|
|
|
smbfs 1.115 (2.10.2016)
|
|
|
|
- The MAXTRANSMIT option controls how much data smbfs is
|
|
prepared to receive. That value cannot be smaller than
|
|
8000 bytes, and it cannot be larger than 65535. The
|
|
code which sets up this parameter and verifies that it
|
|
is in range is now implemented only once, and not
|
|
twice in different places.
|
|
|
|
- The MAXTRANSMIT option also controls how much data
|
|
smbfs may send to the server. This limit is no longer
|
|
capped at 65535 bytes.
|
|
|
|
- The size of the message reception/transmission buffer
|
|
can no longer be smaller than 8000 bytes and it cannot
|
|
be smaller than the number of bytes which may be sent
|
|
to the server.
|
|
|
|
|
|
smbfs 1.116 (3.10.2016)
|
|
|
|
- smb_receive_trans2() now verifies that the amount of
|
|
data received is not larger than the maximum acceptable
|
|
by the client. Previously, it compared the amount of
|
|
data received against the server's upper limit. Ouch :-(
|
|
|
|
- smba_readdir() now stops immediately if no directory
|
|
entries are supplied. Previously, it could deliver
|
|
a bogus directory entry to the scanning function.
|
|
|
|
- The number of directory entries accepted by smb_proc_readdir_short()
|
|
is now calculated according to how much data the client will
|
|
accept, and not according to the server's limit.
|
|
|
|
- smb_proc_readdir_long() now reports how much data the
|
|
client will accept, rather than how much the server will
|
|
accept. This was problematic because that number is a
|
|
16 bit value, and the server's maximum transmission
|
|
value could be larger than 65535 bytes, causing directory
|
|
scanning to fail because the truncated 16 bit value
|
|
could be too tiny to report even a single result.
|
|
|
|
|
|
smbfs 1.117 (11.4.2018)
|
|
|
|
- Looks like the SMB_COM_WRITE_RAW implementation is really as simple
|
|
as the documentation suggested. Just two packets need to be sent to
|
|
to the server.
|
|
|
|
|
|
smbfs 1.118 (29.4.2018)
|
|
|
|
- Added const qualifier to pointers to immutable data, to identify
|
|
further trouble spots.
|
|
|
|
- Replaced some instances of memcpy() with memmove(). For all others
|
|
a debug version of memcpy() is being used which should log an error
|
|
if the source/destination should overlap.
|
|
|
|
- When started as a shell command, error messages now go to
|
|
stderr, if possible.
|
|
|
|
- Action_ExamineObject() could remove the leading '\' path separator
|
|
from the internal representation of the object's path name, but
|
|
fail to remember that it had truncated the name. This would result
|
|
in Examine() returning a file/directory name with a trailing NUL
|
|
character.
|
|
|
|
The file system cannot access an object by that name, which means
|
|
that it would report an error for an object which clearly exists.
|
|
Fixing this bug might just resolve a number of inexplicable file
|
|
access errors.
|
|
|
|
|
|
smbfs 1.119 (1.5.2018)
|
|
|
|
- Replaced the constant 4 with what it actually stands for,
|
|
this being the size of the NetBIOS frame header (NETBIOS_HEADER_SIZE).
|
|
|
|
- The debug output no longer includes any plain text passwords.
|
|
Note that weakly-encrypted password data may still show up,
|
|
though.
|
|
|
|
- The size of the packet buffer used for transmission and
|
|
reception of NetBIOS frames is now stored properly and does
|
|
not include the extra 512 byte safety margin added to the
|
|
end.
|
|
|
|
- How much data the SMB_COM_READ/SMB_COM_WRITE and SMB_COM_WRITE_RAW
|
|
may receive and transmit is now decoded much more accurately, with
|
|
the respective limitations (local transmit buffer size, server's
|
|
reported size limits) taken into account.
|
|
|
|
- Renamed the various "maximum whatever size" variables used by the
|
|
SMB_COM_READ/SMB_COM_READ_RAW and SMB_COM_WRITE/SMB_COM_WRITE_RAW
|
|
commands to make it slightly clearer which respective command the
|
|
limitations apply to.
|
|
|
|
|
|
smbfs 1.120 (1.5.2018)
|
|
|
|
- Both SMB_COM_WRITE and SMB_COM_WRITE_RAW commands would copy the
|
|
data to be transmitted into the transmit buffer and then send
|
|
the transmit buffer contents.
|
|
|
|
It is not actually necessary to make this redundant copy because
|
|
the contents of the NetBIOS frame header and the SMB commands do
|
|
not depend upon knowledge of what's in the data to be sent. So
|
|
we just send the header with send() and the data with another
|
|
send() call. This might improve write performance somewhat.
|
|
|
|
Note that the payload of the write operations will no longer
|
|
show up as part of the SMB dump, as it is transmitted later.
|
|
|
|
Similar code exists for SMB_COM_READ, but smbfs will always try
|
|
to use SMB_COM_READ_RAW first, which does not return its data
|
|
in a separate NetBIOS frame whose contents first have to be
|
|
picked apart. No change should be necessary here.
|
|
|
|
|
|
smbfs 1.121 (4.5.2018)
|
|
|
|
- Replaced sendto() with send(), and recvfrom() with recv() where
|
|
possible.
|
|
|
|
- When reading directory entries with ExNext(), entries with
|
|
names longer than 107 characters will now be skipped. It worked
|
|
like that for Examine() already, which flagged overly long
|
|
names with the error code ERROR_INVALID_COMPONENT_NAME.
|
|
|
|
- Dropped the stub functions smb_request_ok_unlock() and
|
|
smb_setu_header_exclusive() which were remnants of the
|
|
original smbfs kernel code but served no practical
|
|
purpose.
|
|
|
|
- Added additional buffer overflow checks.
|
|
|
|
- When reading and decoding directory entries, the buffer to
|
|
hold the individual names is no longer grown by single
|
|
bytes, but in steps of 16 characters, if needed.
|
|
|
|
- Simplified smb_request_write_raw().
|
|
|
|
- Removed unused local variables and function parameters.
|
|
|
|
|
|
smbfs 1.122 (5.5.2018)
|
|
|
|
- Rewrote smb_receive_trans2() for better readability, replacing
|
|
the multiple pointer dereferentiations. Any error code returned
|
|
is now converted from whatever seems most appropriate instead
|
|
of passing EIO to the caller, expecting the caller to perform
|
|
the conversion (which it doesn't).
|
|
|
|
- smb_release() now just closes the socket and does not
|
|
allocate it again. smb_connect() reallocates the socket
|
|
if necessary.
|
|
|
|
- smb_connect() now shows which server IPv4 address is being used.
|
|
|
|
- Added more debug output to sock.c, especially for all those
|
|
cases which just returned error code EIO without stating what
|
|
led to this point.
|
|
|
|
- proc.c no longer uses type 'word' function parameters and local
|
|
variables unless these absolutely have to be unsigned 16 bit
|
|
integers. This is what finally (!) made the SMB_COM_WRITE command
|
|
work properly with 65535 bytes to be written. Because the final
|
|
NetBIOS frame size came out as 65583 bytes (which the NetBIOS
|
|
frame handles fine), and the size parameter being a 16 bit integer,
|
|
the truncated size (47 bytes) wreaked havoc all over the place.
|
|
|
|
|
|
smbfs 1.123 (6.5.2018)
|
|
|
|
- smb_proc_readdir_long() could return an error code which would be
|
|
mistaken as the number of directory entries available. The error
|
|
code should have been negative. Fixed.
|
|
|
|
- Action_ExamineObject() failed to compare the correct file name
|
|
length against the maximum permitted file name length. It retained
|
|
the full path name length, which could lead to the operation being
|
|
aborted. The same problem also existed in Action_ExamineFH().
|
|
|
|
- The buffer size check in the UTF-8 conversion code used by
|
|
Action_ExamineObject() should have verified that the name in
|
|
ISO 8859-1 form fits into the name buffer. Fixed.
|
|
|
|
- Time stamps used for cache validation are now unsigned integers
|
|
rather than signed integers.
|
|
|
|
|
|
smbfs 1.124 (6.5.2018)
|
|
|
|
- recv() returning 0 is now consistently treated as it should
|
|
be: end of stream.
|
|
|
|
- SMB_COM_READ now receives the inbound data straight into the
|
|
file read buffer instead of into the packet buffer, from which
|
|
it would then be copied into the file read buffer.
|