home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / lan / soss.arj / SRC / PATCHES.TXT < prev    next >
Text File  |  1991-04-08  |  7KB  |  199 lines

  1. This is a log of patches made to SOS by Rich Braun Jan-Apr 1991:
  2.  
  3.  
  4. - NFSLOOKUP went into an infinite loop whenever it encountered a
  5.     subdirectory file (fixed in files.c).
  6.  
  7.     Client command:  ls
  8.  
  9. - Attempts to create a file with a long name caused SOS to crash
  10.     (fixed in files.c).
  11.  
  12.     Client command:  cat >longfile.name
  13.  
  14. - STATFS returned incorrect block counts.  (fixed in files.c)
  15.  
  16.     Client command:  df -v
  17.  
  18. - Didn't support blocks larger than 500 bytes.  (fixed in nfs.h)
  19.  
  20.     Client command:  mount -f NFS,rsize=512,wsize=512
  21.  
  22. - SETATTR did not have support for setting the size of a file; symptom
  23.     was that rewriting a file to a shorted length left old junk
  24.     at the end.  (fixed in nfs.c, files.c)
  25.  
  26.     Client command:  cp shortfile longfile
  27.  
  28. - intopn() did a malloc for the path name, wasting processor time.  Moved
  29.     it to the caller's stack frame.  Also optimized out calls to
  30.     strcat (fixed in nfs.c, inodes.c, inodes.h)
  31.  
  32. - LINK didn't return an error code readable by the client.  (fixed in nfs.c)
  33.  
  34.     Client command:  ln old new
  35.  
  36. - RENAME didn't return the correct error code.  (fixed in nfs.c)
  37.  
  38.     Client command:  mv old new
  39.  
  40. - MKDIR didn't return a name-too-long error if a long filename was used.
  41.     (fixed in nfs.c, files.h, files.c)
  42.  
  43.     Client command:  mkdir longfilename
  44.  
  45. - showexps() didn't close the exports file, and in fact doesn't need
  46.     to open it anyway.  (fixed in exports.c)
  47.  
  48. - nfs.c used malloc instead of local stack variables in a number of
  49.     places.  (fixed in nfs.c)
  50.  
  51. - READDIR on large directories blew up due to the use of a 'short'
  52.     variable where a 'long' was needed.  (fixed in nfs.c, files.h,
  53.     files.c)
  54.  
  55.     Client command:  ls bigdir
  56.  
  57. - READDIR sometimes returned 0 files for a directory containing files;
  58.     problem was that 'maxbytes' was set from an unitialized
  59.     stack variable.  (fixed in nfs.c)
  60.  
  61.     Client command:  ls
  62.  
  63. - SETATTR always set the file protection even if specified as -1.  This
  64.     clobbered the read-only status.  (fixed in nfs.c)
  65.  
  66. - SETATTR did not set the modification time properly.  (fixed in files.c)
  67.  
  68.     Client command:  copy -m
  69.  
  70. - UNLINK wouldn't delete a file if it was set RDONLY.  (fixed in files.c)
  71.  
  72. - READ didn't warn of a too-large request.  (added fprintf in nfs.c)
  73.  
  74. - Mounting of a root directory didn't work.  (fixed in mountd.c, exports.c,
  75.     inodes.c, files.c)
  76.  
  77. - Moved InodeTable into far memory and increased its size. (fixed in inodes.c)
  78.  
  79. - Corrected fsid logic.  (fixed in inodes.c, files.c, mountd.c)
  80.  
  81. - Allow writes to read-only files; authentication is done at the client
  82.     side rather than the server.  (fixed in files.c)
  83.  
  84.     Client command:  cp rdonlyfile newfile
  85.  
  86. - Rewrote intopn routine to use internal stack; freed up space in inode
  87.     table--now 34 bytes per entry; originally 42.  (fixed in inodes.c)
  88.  
  89. - Eliminated lower-case requirement for the drive letter in EXPORT.US
  90.     (fixed in inodes.c, exports.c)
  91.  
  92. - Changed make files in PC/IP to squeeze the _TEXT code segment.  This
  93.     must be done in order to fit SOS into small-model.
  94.  
  95. - READDIR now returns "." and "..".  (fixed in inodes.c, files.c)
  96.  
  97.     Client command: ls
  98.  
  99. - Contents of file handles now have correct parent pointer and are
  100.     validated for certain calls.  This eliminates "can't read .."
  101.     error from pwd command.
  102.  
  103.     Client commands: pwd, ls
  104.  
  105. - If a file or directory was created with any uppercase letters, two
  106.     separate inode entries would be created erroneously.  (fixed
  107.     in nfs.c)
  108.  
  109. - The CREATE function didn't examine the caller's UID and GID, so
  110.     file_create() didn't have them.  This caused incorrect file
  111.     ownership on the Novell server.  (fixed in nfs.c)
  112.  
  113. 3/15/90 additions:
  114. - The READDIR function sent incorrect data if the number of
  115.     files in a directory filled close to 1 block.  Some NFS clients
  116.     saw empty directories if they contained about 20 files.
  117.     (fixed in nfs.c)
  118.  
  119. - READDIR didn't return '.' and '..' if a directory was empty.  (fixed
  120.     in files.c)
  121.  
  122. - RENAME didn't update the inode cache, creating "phantom" files.
  123.     (fixed in files.c, nfs.c, files.h)
  124.  
  125. - REMOVE failed if a file had been read recently; the "unlink" was
  126.     attempted before closing the file.  (fixed in files.c)
  127.  
  128. - RMDIR returned incorrect error code if a directory was not empty, etc.
  129.     (fixed in nfs.c)
  130.  
  131. - Set the UID/GID identifiers to those of the caller, to get around some
  132.     protection problems.
  133.  
  134. 4/8/90 additions:
  135. - The timezone parameter was reversed from the Unix standard.  TZ=EST5EDT
  136.     now works, rather than EST-5EDT.  Also added check for TZ variable,
  137.     forcing it to be set.  (fixed in dtime.c)
  138.  
  139. - The server could be crashed easily by specifying a long filename in a
  140.     NFSLOOKUP call.  The routine pntoin should never be called prior
  141.     to calling validate_path.  (fixed in nfs.c, files.c)
  142.  
  143.     Client command:  cat abcdefghijklmnopqrstuvwxyz
  144.  
  145. - Improved command line parser, using getopt calls.  (fixed in netd.c)
  146.  
  147. - Improved main documentation file soss.1.
  148.  
  149. --------------------
  150.  
  151. The following features have been added:
  152.  
  153. - Advanced debugging macro support.  (files debug.c, debug.h)
  154.  
  155. - Improved inode caching (routines ingetentry, inattrset, inattrget,
  156.     inremnode; files inodes.c, inodes.h, nfs.c, files.c)
  157.  
  158. - Improved performance from general code cleanup.
  159.  
  160. - Root directories may now be exported.
  161.  
  162. - The EXPORTS function of mountd was not supported.  (files exports.c,
  163.     mountd.c, exports.h)
  164.  
  165.     Client command:  showmount -e
  166.  
  167. - Added partial support for Novell file access authentication.  (Excepting
  168.     directory trustees.)
  169.  
  170. - Added -t command line option to allow silent truncation of long filenames.
  171.     (files netd.c, netd.h, files.c)
  172. --------------------
  173.  
  174. The following outstanding issues are known:
  175.  
  176. - There is no support for large packets (> 512 bytes).
  177. - The server crashes as soon as about 7,500 nodes are created.
  178. - The mv command does not work on directories; this would require
  179.   direct I/O to disk a la the Norton Utilities.
  180. - Inodes are not recycled as files are deleted.
  181. - Code is compiled small-model and is very close to the 64K limit.
  182. - A filename beginning with dot is unsupported, and the 'rm' command
  183.     under AIX creates such files.
  184. - Daylight savings time handling requires more support than that
  185.     provided in the Microsoft library's "tzset" function.
  186. --------------------
  187.  
  188. Suggestions for improvements:
  189.  
  190. - The code could be made to run as a TSR.
  191. - The code could be made to use extended memory.
  192. - Cache file data blocks.
  193. - Prevent remote user "root" from being unconditionally trusted.
  194. - Improve the client list parser (allow numeric IP addresses).
  195. - Let administrator set protections for three classes of files: directories,
  196.   read-only files, and writable files.
  197. - Implement a full-blown authentication scheme (i.e. store UID/GID/mode of
  198.   all files).
  199.