Martin Pool [Wed, 23 Jan 2002 04:57:18 +0000 (04:57 +0000)]
Signedness security patch from Sebastian Krahmer <krahmer@suse.de> --
in some cases we were not sufficiently careful about reading integers
from the network.
Also, make sure log messages are always nul-terminated.
David Dykstra [Tue, 15 Jan 2002 21:25:55 +0000 (21:25 +0000)]
Aack! Since released version 2.5.0, the --whole-file option was accidentally
changed to --whole. Change it back. Anybody who wants to use this option
with any version of rsync will have to switch to using -W.
Martin Pool [Tue, 15 Jan 2002 11:20:26 +0000 (11:20 +0000)]
Add --enable-profile to turn on gprof. This is not perfect, because
it seems to only write to ./gmon.out, and that causes trouble when
there are several rsync processes in the same directory. But you can
make it work.
Martin Pool [Fri, 11 Jan 2002 08:25:32 +0000 (08:25 +0000)]
Always use 64-bit ino_t and dev_t internally, so that we can detect
hardlinks if coming from a larger platform. Add heaps of comments
explaining why this is so.
Martin Pool [Fri, 11 Jan 2002 07:15:16 +0000 (07:15 +0000)]
In protocol version 26, always
send 64-bit ino_t and dev_t. We also need to try to use 64-bit
ino_t internally *even if* this platform does not have 64-bit
inums itself, because we need to find duplicate inums when
coming from a larger platform with --hardlinks.
David Dykstra [Thu, 20 Dec 2001 15:33:13 +0000 (15:33 +0000)]
Removed debugging statement that was added to sig_int() by the rsync+ patch
integration. It was causing the format of the daemon log to be messed up
because of the leading \n.
Martin Pool [Tue, 18 Dec 2001 05:54:57 +0000 (05:54 +0000)]
Get rid of global_opts struct as suggested by Dave -- too many
problems with initialization.
Change the algorithm from trying to open an inbound socket with
getaddrinfo: keep trying suggested addresses until we find one on
which we can both get a socket and bind. Not convinced this is the
best, but it's probably better.
Martin Pool [Tue, 18 Dec 2001 01:32:27 +0000 (01:32 +0000)]
Fix from Jeff Garzik for inet_ntop prototype errors on some Linux
distributions: we were failing to define HAVE_INET_NTOP, so our
prototype in rsync.h came through.
Also rerun autoheader, and have comment for HAVE_SOCKADDR_STORAGE.
David Dykstra [Fri, 14 Dec 2001 18:25:51 +0000 (18:25 +0000)]
When INET6 is not defined, meaning that IPv6 is not supported, need to
initalize the global_opts.af_hint to AF_INET or systems such as Linux that
have a native getaddrinfo() because they support IPv6 will attempt to
create IPv6 sockets. This brings up a problem with the new global_opts
structure; in order to initialize them to a value other than 0, we need to
explicitly initialize them all in an order that matches the order in
rsync.h. I think that's more inconvenient & error prone than keeping
global variables.
David Dykstra [Fri, 14 Dec 2001 18:00:54 +0000 (18:00 +0000)]
open_socket_in was attempting to try all the protocols returned from
getaddrinfo(), but only if a corresponding call to socket() returned one of
three *NOSUPPORT errno codes. A Redhat 6.2 system was observed returning
EINVAL instead so it never went on to try IPv4. This update adds EINVAL to
the list. Question: why not always continue through the list regardless of
what errno is?
Martin Pool [Wed, 5 Dec 2001 13:25:29 +0000 (13:25 +0000)]
RFC2553 just says that sockaddr_storage has to have initial fields
isomorphic to sa_family etc from a struct sockaddr, not what they're
called. On some platforms they seem not to be called ss_family.
Rather than guess, we will try casting to a sockaddr and looking
through that -- I think this is what the RFC intends.