Commit graph

301 commits

Author SHA1 Message Date
H. Peter Anvin
7678ae7f14 tftpd: Canonicalize all the addresses
We cannot canonicalize myaddr and not the from address.  We need to
canonicalize both of them, or else we'll try to create an IPv4 socket
and bind an IPv6-mapped IPv4 address to it, which is going to fail.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2015-08-07 11:49:13 -07:00
Ron Lee
ff819b108a Make configure an order-only prerequisite of aconfig.h.in
On filesystems with subsecond resolution, like ext4, we can't trust the
timestamp of aconfig.h.in since autoheader leaves it truncated to second
resolution (apparently touch -r and cp -p can do this at the very least)
while configure has full subsecond resolution, so it can look newer even
when it was cleanly created first, leading to the build system looping
trying to recreate all of that again ...

So in the initial stage of a clean build we can get something like this:

$ make spotless
$ make autoconf
rm -rf MCONFIG configure config.log aconfig.h *.cache
autoconf
rm -f aconfig.h.in aconfig.h
autoheader

$ stat configure aconfig.h.in
  File: ‘configure’
Device: 807h/2055d	Inode: 9443466     Links: 1
Access: 2014-07-31 03:27:27.599293442 +0930
Modify: 2014-07-31 03:27:27.711290270 +0930
Change: 2014-07-31 03:27:27.711290270 +0930

  File: ‘aconfig.h.in’
Device: 807h/2055d	Inode: 9443467     Links: 1
Access: 2014-07-31 03:27:27.000000000 +0930
Modify: 2014-07-31 03:27:27.000000000 +0930
Change: 2014-07-31 03:27:27.903284841 +0930

And with a parallel build, that can then leave 'make all' racing to
remove and recreate aconfig.h (and possibly more things), while it
begins to build the first targets.  Which then fail horribly like
we see here:

https://buildd.debian.org/status/fetch.php?pkg=tftp-hpa&arch=i386&ver=5.2%2B20140608-1&stamp=1406736363

Possibly we also need to move the actual build job into the rule for
the 'all' target, so that the build system update prerequisites are
guaranteed to be completed before it runs (as opposed to running in
parallel with them), but this change might be enough for now.

Signed-off-by: Ron Lee <ron@debian.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2014-07-31 16:25:41 -07:00
Daniel Baumann
3ee2b27809 Update manpage to match source code for --map-file
The manpage had --mapfile but the code had --map-file.

Closes: #606267 in the Debian BTS

Reported-By: Jim Paris <jim@jtan.com>
Signed-off-by: Ron Lee <ron@debian.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2014-07-31 16:25:01 -07:00
Thorsten Glaser
18ac1e26f7 __progname[] is provided by libc
Rename local variable to tftpd_progname to avoid a clash with glibc
global symbols and work around Debian bug #519006 (Closes: #564052).

[ hpa: specifically, double-underscore symbols in C are reserved for
  the implementation, i.e. compiler/libc. ]

Signed-off-by: Ron Lee <ron@debian.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2014-07-31 16:24:37 -07:00
H. Peter Anvin
8ddf0d87d7 tftp: drop "inline" from definition of usage()
It is pointless and newer gcc say it is a lose.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2014-06-07 13:00:46 -07:00
H. Peter Anvin
2ac12abbc9 tftpd.8: document IPv6 handling in remapping rules
Document the "4" and "6" conditionals as well as how \i and \x handle
IPv6 addresses.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2014-06-07 12:59:44 -07:00
H. Peter Anvin
18ee96a03f tftpd: allow IPv4/6-specific remapping rules
Allow remapping rules to be conditional on IPv4 vs IPv6.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2014-06-07 12:59:33 -07:00
H. Peter Anvin
c89a63a441 tftp: convert IPv6-mapped IPv4 addresses to IPv4
If we receive IPv4 addresses mapped to IPv6, convert them back to IPv4
so that mapping scripts which use \i behave sanely.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2014-06-07 12:37:33 -07:00
H. Peter Anvin
128e6a3905 Support IPv6 on MacOS X systems
Add feature test macros for MacOS X, and don't require
IPV6_RECVPKTINFO to exist.

Reported-by: YJZ <vollkommen@gmx.net>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-03-01 22:44:32 -08:00
H. Peter Anvin
b9708e2201 Update version for release 5.2 2011-12-11 14:13:52 -08:00
H. Peter Anvin
f08a34ede1 CHANGES: document is address local fix
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-12-11 14:13:13 -08:00
H. Peter Anvin
c6d2c36b1a tftpd: the "is this address local" algorithm no longer works on Linux
Linux no longer tries to match the local address with the remote one,
so address_is_local() fails.  Try instead to simply see if we can bind
to the explicit address.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-12-08 21:48:06 -08:00
H. Peter Anvin
badf05140d spec: BuildPreReq -> BuildRequires; need -devel package
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-06-22 16:32:56 -07:00
H. Peter Anvin
f6a1282fec Update version for release 5.1 2011-06-22 16:29:59 -07:00
H. Peter Anvin
464be3090b tftpd: add Intel copyright header
Part of my Intel job now...

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-06-22 16:28:38 -07:00
H. Peter Anvin
bd250a597f CHANGES: Document bug fix
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-06-22 16:27:48 -07:00
H. Peter Anvin
f3035c45bc tftpd: simplify option parsing
Simplify the option parsing to make use of the fact that all the
options we support are integer options.  This fixes a buffer overflow
in the utimeout option.

Reported-by: Timo Warns <warns@pre-sense.de>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-06-10 11:49:00 -07:00
H. Peter Anvin
2864d83fea tftpd: try to handle duplicate WRQ packets
Duplicate WRQ packets can really hurt, since they end up accessing the
same file.  This attempts to lock the file, which should work for the
case where a correctly implemented TFTP stack uses the same session ID
(port number) for each retry; in any other case they look like
multiple sessions to the same file and it is a crapshoot if we end up
with the correct one.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-05-12 19:16:17 -07:00
H. Peter Anvin
05ffcecaa8 Merge remote-tracking branch 'origin/master' 2011-05-09 21:09:18 -07:00
H. Peter Anvin
ad5aab9281 tftpd: constipate struct formats
struct formats should be static const; make it so and mark all users
const.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-05-05 10:11:59 -07:00
H. Peter Anvin
0b5732e263 remap: change the mode argument from a boolean to a character
Instead of taking a boolean value for get/put, pass a character; this
allows us to extend the number of possibilities in the future.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-05-05 10:08:53 -07:00
H. Peter Anvin
915f62f5c7 CHANGES: document wraparound fix 2010-09-20 17:49:10 -07:00
Tim Newsome
aeb1c31bae tftpd: Don't resend the OACK packet on block number wrap
When uploading a file that is larger than 32MB (with standard block
size), the block number will roll over. If it rolls over to 0, the code
mistakenly resends the option ack frame instead of acknowledging the 0
data block. This change fixes that behavior.
2010-09-20 17:48:33 -07:00
H. Peter Anvin
a63534e6e6 recvfrom: fix the type of the fallthrough case
If we can't figure out the source address, we have the "fall on our
face" version of myrecvfrom(); make sure its prototype matches.  This
handles building on machines where sockaddr_t != int and yet there is
no way to get the source address.  This apparently affects at least
one version of Solaris.

Reported-by: Georg Schwarz <georg.schwarz@freenet.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-12-11 16:07:10 -08:00
H. Peter Anvin
e7a7b19483 Update CHANGES for future 5.1 release
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:46:34 -07:00
H. Peter Anvin
ab382980ae Fix man page formatting 2009-09-14 14:44:54 -07:00
Ferenc Wagner
c86f82532e Implement the --pidfile option
Setting the umask moved later, right before entering the select loop,
so that it does not affect the permissions of the pid file.

Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:41:13 -07:00
Ferenc Wagner
5a27e30ec2 Untabify tftpd.c
Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:41:10 -07:00
Ferenc Wagner
85029077c8 Fix comment typo
Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:41:07 -07:00
Ferenc Wagner
3f2bc9833d Ensure that the log socket is available for the child
Just in case syslog has been restarted, bounce the log socket before
the chroot.

Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:41:02 -07:00
Ferenc Wagner
44c98cf8b6 Downcase datarootdir, so mandir et al. find their defaults
mandir et all uses $(datarootdir), not $(DATAROOTDIR)

Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-09-14 14:40:17 -07:00
H. Peter Anvin
338648870e tftpd.8: we're no longer limited to IPv4 2009-02-24 16:27:27 -08:00
H. Peter Anvin
9ba4e118d2 tftpd.c: update copyright notice 2009-02-24 16:26:16 -08:00
H. Peter Anvin
2f3a775f85 autogen.sh: just do "make autoconf"
We require GNU make, so we can have autoconf built from inside the
Makefile.  Just make autogen.sh do "make autoconf" for convenience.
2009-02-16 14:53:50 -08:00
H. Peter Anvin
e7a5fc2d68 Update CHANGES for 5.0 release 2009-02-16 14:51:22 -08:00
H. Peter Anvin
878b024bcd Update version for release 5.0 2009-02-16 14:49:43 -08:00
Florian Lohoff
acf818880c tftpd: correctly disable PMTU discovery in standalone mode
Use the correct file descriptors so we correctly turn off PMTU.
2009-02-16 14:40:01 -08:00
H. Peter Anvin
932277c9a5 tftpd: implement the "rollover" option
Implement the "rollover" option, to set the rollover block number to
anything other than zero.  Apparently some idiots have gotten the idea
that block numbers should roll over to one, rather than zero.
2009-02-02 15:14:27 -08:00
H. Peter Anvin
fcdd859a75 autogen.sh: script to run relevant autotools 2009-02-02 15:14:05 -08:00
Georg Schwarz
b0a2a17864 Cast IPv6 address from SOCKADDR_P() to struct in6_addr *
We need to cast IPv6 addresses from SOCKADDR_P() to struct in6_addr *
on some platforms, including at least MacOS X.
2008-11-14 08:37:49 -08:00
H. Peter Anvin
12996491c2 Document getaddrinfo() workaround. 2008-11-14 08:32:29 -08:00
H. Peter Anvin
dd50e8b75c If AI_CANONNAME or AI_ADDRCONFIG don't exist, set them to zero
If the AI_CANONNAME or AI_ADDRCONFIG flags are missing, just set them
to zero.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-14 08:31:03 -08:00
H. Peter Anvin
920b99dfee Update version for release 0.49 2008-10-20 15:08:31 -07:00
H. Peter Anvin
4f715da294 Update CHANGES 2008-10-20 15:07:59 -07:00
Роман Донченко
ac5f0ab996 Compilation of tftp-hpa's Git HEAD with no IPv6, and misc
This patch does two things:
a) makes tftp-hpa to compile on systems with no IPv6 support (there were
some IPv6 macros used unconditionally);
b) removes a stray binary character, which was annoying.
2008-10-20 15:06:24 -07:00
H. Peter Anvin
a1dfd6baf8 Support editline instead of readline
Support editline as an alternative to readline.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-08-09 21:14:45 -07:00
Sridhar Samudrala
740871b0f5 Fix numeric IPv6 address handling
The following patch sets additional hints to restrict the addresses
returned by getaddrinfo() to specify preferred socket type, protocol
and a flag to return only v4/v6 addresses based on the configured
addresses.

Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-08-09 20:58:19 -07:00
Karsten Keil
544abd789e Add error messages if address types mismatch
If a user does supply a IPv4 or IPv6 address
but force the other type with -4 or -6, give an error.
The patch also fix the special [::ffff:127.0.1]
address handling, it work now if you bind to this
address but only if you not force IPv6 only, it seems
that the kernel does not signal connections to a
IPv6 socket listen on [::ffff:127.0.0.1], if it was bound
IPv6 only.
I think we can live with it and do not need a special test
for this address.

Signed-off-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-08-01 08:24:16 -07:00
Karsten Keil
18fd18bd5c Improve address type error handling
This patch detects numeric address types to avoid unnecessary
warnings/errors.  It also cleans up error printing to not print error
messages on stderr in the deamon case.

Signed-off-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-07-31 11:48:18 -07:00
H. Peter Anvin
bdb90cf176 Add .gitignore file
Add .gitignore file so "git status" is actually useful.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-07-30 17:18:17 -07:00