1Changes in 5.2: 2 Fix breakage on newer Linux when a single interface has 3 multiple IP addresses. 4 5 6Changes in 5.1: 7 Add -P option to write a PID file. Patch by Ferenc Wagner. 8 9 Bounce the syslog socket in standalone mode, in case the 10 syslog daemon has been restarted. Patch by Ferenc Wagner. 11 12 Build fixes. 13 14 Fix handling of block number wraparound after a successful 15 options negotiation. 16 17 Fix a buffer overflow in option parsing. 18 19 20Changes in 5.0: 21 Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or 22 AI_CANONNAME. 23 24 Implement the "rollover" option, for clients which want block 25 number to rollover to anything other than zero. 26 27 Correctly disable PMTU in standalone mode. Patch by Florian 28 Lohoff. 29 30 31Changes in 0.49: 32 Add IPv6 support. Patch by Karsten Keil. 33 34 Support systems with editline instead of readline. 35 36 Support long options in the server. 37 38 39Changes in 0.48: 40 Unbreak -l -s in the server, which was broken in 0.47. 41 42 43Changes in 0.47: 44 Add -L option to the server to run standalone without 45 detaching from the shell. 46 47 Parallel make fix. 48 49 50Changes in 0.46: 51 Minor portability improvements. 52 53 54Changes in 0.45: 55 Add -l (literal) option to the client, to override the special 56 treatment of the colon (:) character as a hostname separator. 57 58 59Changes in 0.44: 60 Allow the client to specify a range of local port numbers, 61 just like the server can. 62 63 Fix sending SIGHUP to update the regular expression table. 64 65 66Changes in 0.43: 67 Fix double-free error on ^c in client. 68 69 Try to deal with clients that send TFTP requests to broadcasts 70 (apparently some recent Sun boxes do this instead of using the 71 address told by DHCP. Bad Sun! Bad Sun!) 72 73 Portability fixes. 74 75 76Changes in 0.42: 77 Try to disable path MTU discovery for TFTP connections (it's 78 useless anyway.) 79 80 Add a hack to allow the admin to specify a range of local port 81 numbers to use. 82 83 Fix local IP number handling on systems which present 84 IP_RECVDSTADDR in recvmsg(). 85 86 87Changes in 0.41: 88 Fix bug by which patterns of the form \U\1 weren't converted 89 correctly. 90 91 92Changes in 0.40.1: 93 Solaris build fix. 94 95 96Changes in 0.40: 97 Fix bug which would cause "r" remapping rules to be 98 incorrectly rejected. 99 100 101Changes in 0.39: 102 Support Perl-style \U...\E and \L...\E, as well as allow 103 matching rules to be inverted (execute if rule *doesn't* 104 match.) 105 106 Fix a timeout bug. 107 108 Add an RPM spec file. 109 110 111Changes in 0.38: 112 Portability fixes. 113 114 115Changes in 0.37: 116 Fix a pathology where a client sending ACKs for the wrong 117 packet can prevent proper retransmission. 118 119 120Changes in 0.36: 121 Portability fixes. 122 123 124Changes in 0.35: 125 Add an option to control the maximum value of blksize 126 negotiated. 127 128 Removed workaround for obsolete Cygwin problem. 129 130 Don't use getopt() -- the -c option doesn't work correctly 131 since it depends on the ordering of arguments and options. It 132 is now possible to do: 133 134 tftp -m binary hostname -c get filename 135 136 This was previous possible by doing: 137 138 tftp -m binary -c get hostname:filename 139 140 ... but it seemed that was counterintuitive to people. 141 142 Somewhat improved configure scripts. 143 144 145Changes in 0.34: 146 Additional Solaris gcc compiler bug workarounds; these 147 actually make the code somewhat cleaner. 148 149 150Changes in 0.33: 151 Even better error messages. 152 153 Work around a suspect Solaris gcc bug. 154 155 Configuration fix: readline needs termcap. 156 157 Support running the tftp client from the command line. For 158 example: 159 160 tftp -m binary -c get hostname:file 161 162 163Changes in 0.32: 164 Better error messages; including the capability to send a 165 custom error message to the client when hitting an "a" rule in 166 a remapping table. 167 168 169Changes in 0.31: 170 Put in a check to make sure xinetd (in particular) doesn't 171 pass us an IPv6 socket. 172 173 Fix some problems related to timeout negotiation. 174 175 Allow the user to set the default timeout speed. 176 177 178Changes in 0.30: 179 (Hopefully) better timeout algorithm. 180 181 Add a "utimeout" option; like "timeout" but in microseconds. 182 183 Change the log level of client-side errors to LOG_WARNING. 184 185 autoconf portability improvements. 186 187 Minor bugfixes. 188 189 190Changes in 0.29: 191 Posixly correctness. 192 193 Now compiles and runs on Win32 systems using Cygwin 194 (http://www.cygwin.com/). 195 (<http://www.cygwin.com/>). 196 197 Fixed a bug which could cause a standalone server to exit with 198 a "recvfrom: Interrupted system call" log message if signals 199 arrive at a particularly inopportune moment. 200 201 Fix a macro substitution bug (thanks to Richard Nyberg.) 202 203 204Changes in 0.28: 205 Fix stupid one-liner bug which broke standalone mode (-l). 206 207 208Changes in 0.27: 209 Make the Digital Unix 4.0F platform work again. Thanks to 210 Alan Sundell for helping out with this platform! 211 212 Make the AIX 4.3 platform work again. Thanks to Josef Siemes 213 for helping out with this platform! 214 215 Allow replacement patterns to include the IP address of the 216 requesting host (\i). 217 218 Allow relying on Unix permissions rather than o+r magic if the 219 -p option is specified. As part of this, set all groups if 220 initgroups() is specified on the platform. 221 222 Clean up race conditions inherited from the BSD source base. 223 224 225Changes in 0.26: 226 Fix the configuration process so tftpd doesn't end up 227 depending on readline, which apparently could happen on some 228 platforms before. 229 230 Make parallel builds (make -j) work correctly. 231 232 Improve parsing of the "connect" command in the tftp client. 233 234 Add a -V option to both tftp and tftpd to print the version 235 number on stdout and immediately exit. 236 237 Add a -v option to tftp to start out in verbose mode. 238 239 Rewrite the man pages using standard "man" troff macros. 240 241 Enable the (limited) use of readline on systems which don't 242 have readline/history.h. 243 244 Support compiling under MacOS X with fink (see 245 <http://fink.sourceforge.net/>). Thanks for Justin Hallett 246 and Eric Eslinger for their help in getting this working! 247 248 249Changes in 0.25: 250 Fixed Sorcerer's Apprentice bug in both the client and the 251 server. These bugs were inherited from the original BSD code. 252 253 254Changes in 0.24: 255 Fix bugs in both client and server dealing with block number 256 wraparound, usually manifesting themselves as failure to 257 handle files over 32 MB in size. 258 259 Officially make the client a part of the tftp-hpa project. 260 261 262Changes in 0.23: 263 Correct memory overwrite bug in the tftp client when compiled 264 with readline. 265 266 267Changes in 0.22: 268 Even more portability improvements: FreeBSD and 269 Tru64/Digital Unix. 270 271 Fix tsize option on systems on which off_t is "long long". 272 273 Support large files on systems which need _LARGE_FILE_BITS or 274 similar. 275 276 Some source cleanups; change to autoconf 2.52. 277 278 Add support for readline command-line editing in tftp. 279 280 281Changes in 0.21: 282 Support running in standalone mode, without inetd. 283 284 Even more portability improvements. Now known to compile and 285 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of 286 success or failure on other modern systems always appreciated. 287 288 Clean and modernize some really ugly old code. 289 290 Fix a potential illegal memory access when running in "totally 291 insecure mode" - no -s, no directories listed. 292 293 294Changes in 0.20: 295 Portability improvements. Now known to compile and run on 296 Solaris 8. 297 298 299Changes in 0.19: 300 Fork before performing tcpwrappers check. 301 302 Don't rely on nonstandard bsd_signal() function, instead 303 require that the platform has sigaction(). This is 2001, 304 after all. This may resolve some potential portability 305 problems. 306 307 Log a message if memory allocation fails, instead of dying 308 silently. 309 310 Clean up the main dispatch loop. 311 312 Use <sysexits.h> for exit codes, if it exists. 313 314 Add support for debugging remapping rulefiles; if logging with 315 -vvv tftpd will log all rules actions. 316 317 Correct the error code issued by an "abort" rule. 318 319 320Changes in 0.18: 321 Support (almost) arbitrary filename remappings via regular 322 expression-based rulesets. 323 324 Added -v option for more verbose logging. 325 326 327Changes in 0.17: 328 329 Add support for tcpwrapper checking (/etc/hosts.allow; 330 /etc/hosts.deny) in tftpd. 331 332 Compile correctly on glibc 2.1.2. 333 334 Add -u option to specify the user id to run as (default 335 "nobody".) 336 337 Operate in "daemon mode" as long as we keep getting requests. 338 This should speed up handling large amounts of requests at 339 once, as can happen when a client starts up, and avoids inetd 340 misconfiguration problems. 341 342 343Changes in 0.16: 344 345 Correct massive lossage from 0.15: apparently 0.15 was based 346 on an out-of-date CVS repository, somehow. 347 348 Fix for ACKs in TFTP PUT; patch by Roger Venning. 349 350 351Changes in 0.15: 352 353 If the operating system allows, try to obtain the local 354 address used for the request packet, and reply using the same 355 local IP address. Some embedded TFTP clients are (probably 356 incorrectly) picky about this. 357 358 359Changes in 0.14: 360 361 Hacks to signal handling to avoid "zombie servers." 362 363 364Changes in 0.13: 365 366 Added the non-standard option "blksize2". The "blksize" 367 option is limited in its usability, since TFTP is designed to 368 be implemented in a ROM, and ROM code might find it painful to 369 deal with packets that don't meet certain alignment 370 restrictions. 371 372 The "blksize2" option tells the server that the block size 373 must be a power of 2 to be usable to the client. The server 374 SHALL respond with a block size that is a power of two, up to 375 a maximum of 32768, or reject the option. Furthermore, the 376 server SHALL grant a block size that is no smaller than 512 377 bytes unless the client explicitly requested a smaller block 378 size. If the client request both options, the server MAY 379 accept one or the other, but not both. At some point I will 380 probably write up an IETF draft for this option. 381 382 383General information on the tftp-hpa series: 384 385The core software was taken from OpenBSD (CVS source as of 3861999-09-21). I believe this was the most secure source base available 387at the time I obtained this code, and it included support for the -s 388and -c options. 389 390The un-BSD-ized Makefiles and a lot of the configure macros were taken 391from netkit-tftp-0.10 by David Holland; I also followed this example 392and modernized the code style throughout. 393 394Patches by Markus Gutschke and Gero Kuhlmann were the basis for the 395option negotiation as well as the "blksize" and "tsize" option 396support, although I made a fair amount of mostly stylistic changes to 397their code. 398 399Adding the -r option (disable a specific option), the "timeout" 400option, converting to using autoconf for setup, and any additions 401listed in the Changes list above, has all been my own code, as are any 402bugs introduced in the merge. 403